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