✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Коротка порада: метадані та вбудоване редагування

19

Якщо у вас є настроюване мета-поле або ви працюєте з настроюваними метаданими на пост-рівні, ви можете натрапити на проблему з випадковим видаленням даних під час збереження їх із екрана масового редагування .

Налаштування проблеми приблизно такі:

  1. у вас є колекція дописів, які потрібно змінити,
  2. ви завантажуєте всі публікації на екран масового редагування (як показано вище),
  3. ви застосовуєте зміни.

Щойно це станеться, зміна відбудеться, але вона стирає будь-які власні метадані публікації, які ви можете мати.

Це лише невеликий зразок коду того, як виглядає метод збереження ваших користувальницьких метаданих (тобто я пропускаю кілька захисних пунктів):

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

}

Проблема полягає в тому, що немає перевірки, що це надходить із екрана масового редагування . І через це метадані можуть бути повністю видалені.

Щоб упоратися з цим, нам потрібно перевірити, чи надходить серіалізація з екрана масового редагування . Таким чином ми можемо повернутися раніше і запобігти виконанню коду. У найпростішій формі ви можете зробити щось на зразок цього :

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

}

Зауважте, що я не рекомендую використовувати це буквально для універсальних випадків або для універсального використання, оскільки це агресивно. Натомість я вважаю, що варто прочитати цю статтю Codex, щоб отримати більше інформації про те, як вбудоване редагування працює як на стороні сервера, так і на стороні клієнта.

Мета публікації — показати, як користувацькі метадані можна ненавмисно видалити, і закласти основи того, як цьому можна запобігти.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі