update_post_meta()
Оновлює вказане довільне поле (метаполі) вказаного запису (поста) або додає нове.
Функція можна використовувати замість add_post_meta() , т.к. спочатку перевіряється існування довільного поля у зазначеного поста, якщо поле не знайдено, то керування повністю передається функції add_post_meta() .
Якщо значення $meta_value передати масив, він автоматично буде записаний як серіалізованої рядки, тобто. немає необхідності обробляти масив функцією serialize() перед передачею його значення $meta_value .
ВАЖЛИВО! Функція перевіряє, чи не є вказаний запис (ID поста) ревізією. Якщо вказано ревізію, то ID змінюється на ID батьківського запису. Тобто. метадані в будь-якому випадку оновлюватимуться у батьківського запису (не в ревізії).
ВАЖЛИВО! Функція очікує екранований рядок у параметрах $meta_key та $meta_value . Тобто. перед записом до бази даних значення довільних полів обробляються функцією wp_unslash() . Докладніше дивіться: « Екранування у значеннях довільних полів ».
update_metadata()
(дуже повільно) | 50000 разів – 42.23 сек
(дуже повільно) |
PHP 7.0.8, WP 4.6.1
Хуків немає.
Повертає
int|true|false
.
true
– при успішному оновленні.false
– При невдачі. Або коли було передано таке ж значення поля (як у бд).Число
– ID первинного поля таблиці метаполів (meta_id) коли було створено нове поле.
Використання
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
:
update_post_meta(76, 'my_key', 'Steve');
#2 Приклади операцій над полями
Припустимо, що пост 76 має 4 наступні довільні поля, зі значеннями:
key_1 = Happy key_1 = Sad key_2 = Григорій 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 з Happy на 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');
#4 Ще приклади
список змін
З версії 1.5.0 | Введено. |
Код update_post_meta() update post meta WP 6.0.2
function update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' ) { // Make sure meta is updated for the post, не для revision. $ 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 ); }