✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Krótka wskazówka: metadane i edycja w tekście

28

Jeśli masz niestandardowe pole meta lub pracujesz z niestandardowymi metadanymi na poziomie posta, możesz natknąć się na problem z przypadkowym usunięciem danych podczas zapisywania ich na  ekranie edycji zbiorczej.

Konfiguracja problemu wygląda mniej więcej tak:

  1. masz zbiór postów, które trzeba zmienić,
  2. ładujesz wszystkie posty na ekranie edycji zbiorczej (jak pokazano powyżej),
  3. zastosujesz zmianę.

Gdy to nastąpi, zmiana nastąpi, ale spowoduje usunięcie wszelkich niestandardowych metadanych postów, które możesz mieć.

To tylko niewielka próbka kodu pokazująca, jak wygląda metoda zapisywania dla niestandardowych metadanych (pomijam kilka klauzul ochronnych):

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

}

Problem polega na tym, że nie można sprawdzić, czy pochodzi to z ekranu edycji zbiorczej . Dzięki temu metadane można całkowicie usunąć.

Aby sobie z tym poradzić, musimy sprawdzić, czy serializacja pochodzi z ekranu edycji zbiorczej . W ten sposób możemy wrócić wcześniej i uniemożliwić wykonanie kodu. W najprostszej formie możesz zrobić coś takiego :

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

}

Zauważ, że nie polecam używania tego dosłownie w uniwersalnych przypadkach lub do uniwersalnego użytku, ponieważ jest agresywny. Zamiast tego myślę, że warto przeczytać ten artykuł w Kodeksie, aby uzyskać więcej informacji o tym, jak edycja inline działa zarówno po stronie serwera, jak i klienta.

Celem postu jest pokazanie, w jaki sposób niestandardowe metadane mogą zostać przypadkowo usunięte, oraz położyć podwaliny pod to, jak można temu zapobiec.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów