✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Snabbtips: Metadata och Inline-redigering

16

Om du har en anpassad metabox eller arbetar med anpassad metadata på post-nivå, kan du stöta på ett problem med att ha raderat data av misstag när du sparar dem från  skärmen Massredigering.

Inställningen för problemet är ungefär så här:

  1. du har en samling inlägg som behöver ändras,
  2. du laddar alla inlägg i massredigeringsskärmen (som visas ovan),
  3. du tillämpar en ändring.

När detta händer sker ändringen, men den raderar alla anpassade inläggsmetadata som du kan ha.

Det här är bara ett litet kodexempel på hur sparmetoden ser ut för din anpassade metadata (det vill säga jag utelämnar ett antal skyddsklausuler):

<?php

/**
 * Save the options in the meta box.
 *
 * @since    1.0.0
 *
 * @param    int    $post_id    The ID of the current post
 */
public function save( $post_id) {

  // Note: Guard clauses removed for readability.
  // Assume $metadata is set earlier in this function.

  update_post_meta( $post_id, 'acme-custom-meta-data', $metadata );

}

Problemet med det här är att det inte finns någon kontroll att detta kommer från skärmen Bulk Edit . Och på grund av det kan metadata raderas helt.

För att hantera detta måste vi kontrollera om serialiseringen kommer från skärmen Bulk Edit . På så sätt kan vi återvända tidigt och förhindra att koden körs. I sin enklaste form kan du göra något så här :

<?php

/**
 * Save the options in the meta box. Ignore the action if it's coming from the
 * Bulk Edit screen.
 *
 * @since    1.0.0
 *
 * @param    int    $post_id    The ID of the current post
 */
public function save( $post_id) {

  // Note: Guard clauses removed for readability.
  // Assume $metadata is set earlier in this function.

  if (isset( $_POST['_inline_edit'])) {
    return;
  }

  update_post_meta( $post_id, 'acme-custom-meta-data', $metadata );

}

Observera att jag inte rekommenderar att du använder detta ordagrant för universella fall eller för universellt bruk eftersom det är aggressivt. Istället tycker jag att det är värt att läsa igenom denna Codex – artikel för att få mer information om hur inline-redigering fungerar på både serversidan och klientsidan.

Syftet med inlägget är att visa hur anpassad metadata kan raderas oavsiktligt och att lägga grunden för hur du kan förhindra det.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer