Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Conseil rapide : Métadonnées et édition en ligne

18

Si vous avez une méta-boîte personnalisée ou si vous travaillez avec des métadonnées personnalisées au niveau de la publication, vous pouvez rencontrer un problème de suppression accidentelle de données lors de leur enregistrement à partir de l’  écran de modification en masse.

La configuration du problème ressemble à ceci :

  1. vous avez une collection de messages qui doivent être modifiés,
  2. vous chargez tous les articles dans l’écran d’édition en bloc (comme indiqué ci-dessus),
  3. vous appliquez une modification.

Une fois que cela se produit, le changement se produit, mais il efface toutes les métadonnées de publication personnalisées que vous pourriez avoir.

Ceci n’est qu’un petit exemple de code de ce à quoi ressemble la méthode save pour vos métadonnées personnalisées (c’est-à-dire que je laisse de côté un certain nombre de clauses de garde):

<?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 );

}

Le problème avec ceci est qu’il n’y a aucune vérification que cela provient de l’  écran d’ édition en bloc. Et à cause de cela, les métadonnées peuvent être complètement supprimées.

Pour gérer cela, nous devons vérifier si la sérialisation provient de l’  écran de modification en bloc. De cette façon, nous pouvons revenir plus tôt et empêcher l’exécution du code. Dans sa forme la plus simple, vous pouvez faire quelque chose comme ceci :

<?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 );

}

Notez que je ne recommande pas d’utiliser ce verbatim pour les cas universels ou pour une utilisation universelle car il est agressif. Au lieu de cela, je pense qu’il vaut la peine de lire cet article du Codex pour obtenir plus d’informations sur le fonctionnement de l’édition en ligne à la fois côté serveur et côté client.

Le but de la publication est de montrer comment les métadonnées personnalisées peuvent être supprimées involontairement et de jeter les bases de la manière dont vous pouvez l’empêcher.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More