Обновление метаданных в WordPress: функция UPDATE_METADATA()

## Обновление метаданных — Функция UPDATE_METADATA() в WordPress

Функция update_metadata() позволяет обновлять метаданные для указанных объектов в WordPress. Если для объекта ещё не существует значения, метаданные будут добавлены как новые.

### Важные замечания о мета-полях

**Важно!** Данная функция ожидает, что значения в параметрах $meta_key и $meta_value будут с экранированием слешей.

Перед записью метаданных в базу данных значения проходят через функцию wp_unslash(), поэтому будьте осторожны, если значения содержат обратную косую черту (``).

Не передавайте значения с обратными слешами!

#### Неправильный пример:

Допустим, нам нужно записать следующее JSON-значение в мета-поле:
```json
{"key":"значение с "экранированными кавычками""}

Код:

$escaped_json = '{"key":"value with "escaped quotes""}';
update_post_meta( $id, 'escaped_json', $escaped_json );
$broken = get_post_meta( $id, 'escaped_json', true);
/
$broken становится неработающей строкой после обработки stripslashes():
{"key":"value with "escaped quotes""}
/

Правильный пример:

Добавляя еще один уровень экранирования с помощью функции wp_slash(), мы компенсируем обработку wp_unslash():

Код:

$escaped_json = '{"key":"value с "экранированными кавычками""}';
update_post_meta( $id, 'double_escaped_json', wp_slash($escaped_json) );
$fixed = get_post_meta( $id, 'double_escaped_json', true);
/
$fixed корректно обрабатывается после stripslashes():
{"key":"value с "экранированными кавычками""}
/

Используемые функции

  • get_metadata_raw()
  • add_metadata()
  • wp_cache_delete()

Функции-звонки

Для данной функции доступны следующие хуки:

  • update_post_metadata
  • update_comment_metadata
  • update_term_metadata
  • update_user_metadata
  • (update_(meta_type)_meta)
  • (updated_(meta_type)_meta)

Возврат функции

Функция возвращает:

  • true — если обновление прошло успешно.
  • false — если возникла ошибка или значение, переданное функции, совпадает с уже существующим в базе данных.
  • ID нового мета-поля — если поле с данным ключом не существовало и было добавлено.

Применение функции

update_metadata( $meta_type, $object_id, $meta_key, $meta_value, $prev_value );

Где:

  • $meta_type (string) — Обязательный. Тип метаданных, может быть 'post', 'comment', 'term', 'user' или любой другой тип объекта с сопоставленной таблицей метаданных.
  • $object_id (int) — Обязательный. ID объекта метаданных.
  • $meta_key (string) — Обязательный. Ключ метаданных.
  • $meta_value (mixed) — Обязательный. Значение метаданных. Должно быть сериализуемым, если не является простым значением.
  • $prev_value (mixed) — Предыдущие значение для проверки перед обновлением. Если указано, обновляются только существующие записи метаданных с этим значением. В противном случае обновляются все записи.

Примеры

Пример 1

Обновление метаданных поста с ID 76. Изменим значение мета-поля key_1 с "грустный" на "радостный":

update_metadata( 'post', 76, 'key_1', 'радостный', 'грустный' );

Заметки

  • Используйте объект $wpdb для работы с базой данных WordPress.

Изменения

Функция была добавлена в версию 2.9.0.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *