## Обновление метаданных — Функция 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_metadataupdate_comment_metadataupdate_term_metadataupdate_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.