update_post_meta() WP 1.5.0

Оновлює вказане довільне поле (метаполі) вказаного запису (поста) або додає нове.

Функція можна використовувати замість add_post_meta() , т.к. спочатку перевіряється існування довільного поля у зазначеного поста, якщо поле не знайдено, то керування повністю передається функції add_post_meta() .

Якщо значення $meta_value передати масив, він автоматично буде записаний як серіалізованої рядки, тобто. немає необхідності обробляти масив функцією serialize() перед передачею його значення $meta_value .

ВАЖЛИВО! Функція перевіряє, чи не є вказаний запис (ID поста) ревізією. Якщо вказано ревізію, то ID змінюється на ID батьківського запису. Тобто. метадані в будь-якому випадку оновлюватимуться у батьківського запису (не в ревізії).

ВАЖЛИВО! Функція очікує екранований рядок у параметрах $meta_key та $meta_value . Тобто. перед записом до бази даних значення довільних полів обробляються функцією wp_unslash() . Докладніше дивіться: « Екранування у значеннях довільних полів ».

Працює на основі:
update_metadata()
1 раз – 0.001327 сек
(дуже повільно) | 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
(рядок/масив)
Значення довільного поля, яке хочемо змінити. Потрібно для тих випадків, коли пост має кілька довільних полів з однаковими ключами. Якщо не вказати цей параметр і пост має кілька полів з однаковими ключами, то всі поля будуть оновлені.


За замовчуванням: ”

Приклади

0

#1 Обновимо довільне поле my_keyбіля посту76

Замінимо наявне там значення на Steve:

update_post_meta(76, 'my_key', 'Steve');
0

#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);
0

#3 Змінимо файл шаблону постійної сторінки.

Файл шаблону для постійної сторінки записується до системного довільного поля _wp_page_template:

update_post_meta( $id, '_wp_page_template', 'new_template.php');
0

#4 Ще приклади

Дивіться тут

список змін

З версії 1.5.0Введено.

Код 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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *