Функция update_post_meta() в WordPress
Функция update_post_meta() позволяет обновить мета-данные указанного поста. Если мета-данные не существуют, функция добавит их.
Данная функция может использоваться вместо add_post_meta(), так как сначала она проверяет, существуют ли мета-данные для указанного поста. Если мета-данные отсутствуют, управление передается функции add_post_meta().
Если вы передаете массив в качестве значения $meta_value, он будет автоматически преобразован в сериализированную строку. Это означает, что предварительно использовать функцию serialize() не требуется.
Важные моменты
-
Проверка идентификатора поста: Функция проверяет, что переданный ID поста не является ревизией. Если вы передаете ID ревизии, он будет заменён ID основного поста. Это значит, что мета-данные всегда обновляются для основного поста, а не для ревизии.
-
Обработка строк: Функция ожидает, что параметры
$meta_keyи$meta_valueб��дут обработаны с помощью функцииwp_unslash(), прежде чем вставить их в базу данных.
Возвращаемые значения
Функция возвращает:
true: если обновление прошло успешно.false: если произошла ошибка или значение поля было таким же, как и в базе данных.meta_id: если поле с указанным ключом не существовало и было добавлено.
Использование
Функция вызывается следующим образом:
update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
Параметры
$post_id(int, обязательный): ID поста, мета-данные которого нужно обновить или создать.$meta_key(string, обязательный):Ключ мета-данных. Название мета-данных.$meta_value(mixed, обязательный): Значение мета-данных. Если передан массив, значение будет сериализовано в строку.$prev_value(mixed): Предыдущее значение для проверки перед обновлением. Этот параметр нужен для случаев, когда у поста есть несколько мета-данных с одинаковым ключом. Если этот параметр не указать, все поля с одинаковым ключом будут обновлены.- По умолчанию:
''.
- По умолчанию:
Примеры использования
Пример 1: Обновление мета-поля
Чтобы обновить существующее значение для мета-поля "my_key" поста с ID 76 на "Steve", используйте следующий код:
update_post_meta( 76, 'my_key', 'Steve' );
Пример 2: Изменение мета-данных
Предположим, что пост с ID 76 имеет 4 пользовательских поля со следующими значениями:
- key_1 = Happy
- key_1 = Sad
- key_2 = Gregory
- my_key = Steve
Теперь изменим значение поля key_2 на "Hans":
update_post_meta( 76, 'key_2', 'Hans' );
Также можно изменить значение поля key_1 с "Sad" на "Happy":
update_post_meta( 76, 'key_1', 'Happy', 'Sad' );
Теперь у нас будет следующее значение мета-данных:
- key_1 = Happy
- key_1 = Happy
- key_2 = Hans
- my_key = Steve
Если нужно изменить только первое значение key_1 на "Excited":
update_post_meta( 76, 'key_1', 'Excited', 'Happy' );
Либо можно вызвать функцию без указания предыдущего значения:
update_post_meta( 76, 'key_1', 'Excited' );
Такое использование обновит только первое поле. Если хотите обновить все поля с ключом key_1 на "Excited", используйте цикл:
$key1_values = get_post_custom_values( 'key_1', 76 );
foreach( $key1_values as $value )
update_post_meta( 76, 'key_1', 'Excited', $value );
Пример 3: Изменение имени файла шаблона статической страницы
Имя файла шаблона статической страницы записывается в системное мета-поле _wp_page_template следующим образом:
update_post_meta( $id, '_wp_page_template', 'new-template.php' );
Изменения в версии фун��ции
Функция update_post_meta() была представлена в версии 1.5.0 WordPress.
function update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' ) {
// Убедитесь, что мета-данные обновляются для поста, а не для ревизии.
$the_post = wp_is_post_revision( $post_id );
if ( $the_post ) {
$post_id = $the_post;
}
return update_metadata( 'post', $post_id, $meta_key, $meta_value, $prev_value );
}
Связанные функции
update_metadata()wp_clean_update_cache()- Различные функции для работы с мета-данными, такие как
add_post_meta(),get_post_meta(), и другие.
Эта информация должна помочь вам лучше понять, как использовать функцию update_post_meta() для работы с мета-данными постов в WordPress.