Функция update_post_meta() в WordPress: описание, примеры использования, параметры.

Функция update_post_meta() в WordPress

Функция update_post_meta() позволяет обновить мета-данные указанного поста. Если мета-данные не существуют, функция добавит их.

Данная функция может использоваться вместо add_post_meta(), так как сначала она проверяет, существуют ли мета-данные для указанного поста. Если мета-данные отсутствуют, управление передается функции add_post_meta().

Если вы передаете массив в качестве значения $meta_value, он будет автоматически преобразован в сериализированную строку. Это означает, что предварительно использовать функцию serialize() не требуется.

Важные моменты

  1. Проверка идентификатора поста: Функция проверяет, что переданный ID поста не является ревизией. Если вы передаете ID ревизии, он будет заменён ID основного поста. Это значит, что мета-данные всегда обновляются для основного поста, а не для ревизии.

  2. Обработка строк: Функция ожидает, что параметры $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.

Leave a Reply

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