Обновляет значение мета-поля (произвольного поля) поста (записи, страницы или поста произвольного типа) с указанным ID.
Ах да, если мета-поле не существует, функция добавит его!
Функция возвращает:
true
– если мета-поле с указанным ключом уже существовало и было обновлено.- ID мета-поля в таблице
wp_postmeta
, если его не существовало и оно было добавлено функцией. false
– если новое переданное значение соответствует уже существующему в БД и ничего не было обновлено.
update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' )
Параметры
- $post_id
- (целое число) ID поста, мета-поле которого добавляем/обновляем.
- $meta_key
- (строка) Ключ мета-поля.
- $meta_value
- Новое значение произвольного поля. Можете спокойно передавать нескалярные значения (массивы, объекты), перед сохранением в базу данных они будут сериализованы автоматически.
Также функция подготавливает значение для безопасного SQL-запроса в базу данных. Но дополнительную очистку этого значения мы всё же делаем, например функцией sanitize_text_field(), если передаём ввод из текстового поля. - $prev_value
- Дело в том, что даже для одного поста в базе данных может быть несколько мета-полей с одним и тем же ключом. Для того, чтобы функция знала, какое из них обновлять, мы можем указать старое значение поля, иначе функция обновит их все.
Примеры использования функции update_post_meta()
Для того, чтобы вам было удобно и наглядно, я вставлю сюда скриншот таблицы мета-полей wp_postmeta
из базы данных.
А теперь поработаем с этими мета-полями:
// у нас не указан email для постов с ID 1 и 413, нужно добавить! update_post_meta( 1, 'email', 'no-reply@misha.agency' ); update_post_meta( 413, 'email', 'no-reply@misha.agency' ); // изменим значение position для поста с ID 413 update_post_meta( 413, 'position', 'unnormal' ); // изменим значение position для поста с ID 1 и только то, что со значение normal update_post_meta( 1, 'position', 'side', 'normal' );
Результат:
Источник: Блог Миши Рудрастых