Описание
Обновляет произвольное поле, указанного поста или добавляет его.
Функция может быть использована вместо add_post_meta(), т.к. сначала проверяется существование произвольного поля у указанного поста, если поле не найдено, то управление автоматически передается функции add_post_meta($post_id, $meta_key, $meta_value) и результат уже будет возвращен add_post_meta().
update_post_meta() работает на базе update_metadata().
Функция возвращает true в случае успешной операции или false, если произошла ошибка.
Использование
<?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?>
Параметры
- $post_id (число) (обязательный)
- ID поста, произвольное поле которого нужно обновить/создать.
По умолчанию: нет - $meta_key (строка) (обязательный)
- Ключ произвольного поля, которое нужно обновить/создать.
По умолчанию: нет - $meta_value (строка) (обязательный)
- Новое, значение произвольного поля, которое нужно обновить/создать. Если передать массив, то значение будет серриализованно в строку.
По умолчанию: нет - $prev_value (строка)
- Значение произвольного поля, которое мы хотим изменить. Нужно для тех случаев, когда у поста имеются несколько произвольных полей с одинаковыми ключами. Если не указать этот параметр и у поста имеются несколько полей с одинаковыми ключами, то все поля будут обновлены.
По умолчанию: нет
Примеры
1. Обновим произвольное поле my_key, у поста 76, заменим имеющееся там значение на Steve:
<?php update_post_meta(76, 'my_key', 'Steve'); ?>
2. Предположим, что у поста 76 есть 4 следующих произвольных поля, со значениями:
key_1 = Happy key_1 = Sad key_2 = Gregory' my_key = Steve
Изменим значение поля key_2 на Hans:
<?php update_post_meta(76, 'key_2', 'Hans'); ?>
Изменим значение поля key_1 с Sad на Happy:
<?php update_post_meta(76, 'key_1', 'Happy', 'Sad'); ?>
3. Теперь, предположим, что пост имеет такие поля:
key_1 = Happy key_1 = Happy key_2 = Gregory' my_key = Steve
Тогда, такое использование функции, обновит только первое поле (всего одно):
update_post_meta(76, 'key_1', 'Excited', 'Happy'); //или update_post_meta(76, 'key_1', 'Excited');
Чтобы обновить все поля на Excited, нужно применить функцию к каждому полю, например через цикл:
$key1_values = get_post_custom_values('key_1', 76);
foreach ( $key1_values as $value )
update_post_meta(76, 'key_1', 'Excited', $value);
4. Еще примеры можно посмотреть здесь.
update_post_meta()
из файла: /wp-includes/post.php WP 3.3.2function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '') {
// make sure meta is added to the post, not a revision
if ( $the_post = wp_is_post_revision($post_id) )
$post_id = $the_post;
return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.