update_term_meta()WP 4.4.0

Обновляет метаданные элемента таксономии (категории, метки ...).

Используйте параметр $prev_value чтобы обновить уже существующие значение, когда есть несколько полей с одинаковым ключом.

Если к моменту вызова функции поле еще не существует то оно будет добавлено.

Название таксономии не передается функции, так так каждый термин имеет уникальный ID ($term_id) и привязан к конкретной таксономии.

Работает на основе: wp_term_is_shared(), update_metadata()

Хуков нет.

Возвращает

int|true|false|WP_Error. Вернет:

  • ID если ключ не существовал ранее и поле было добавлено.
  • true при успешном обновлении существующего поля.
  • WP_Error в случае неверно заданного term_id таксономии.
  • False в случае ошибки в процессе обновления.

Использование

update_term_meta( $term_id, $meta_key, $meta_value, $prev_value );
$term_id(число) (обязательный)
ID элемента таксономии.
$meta_key(строка) (обязательный)
Ключ поля.
$meta_value(смешанный) (обязательный)
Значение поля, которое нужно записать.
$prev_value(смешанный)
Предыдущее значение. Нужно для обновления конкретного поля, когда существует несколько полей с одинаковым ключом.
По умолчанию: ''

Примеры

0

#1 Задаем небольшой текст для метки поста и выводим на странице меток

Задаем текст 'Привет мир' для метки с id 702 и сохраняем в поле с ключом test_meta_field.

update_term_meta( 702, 'test_meta_field', 'Привет мир' );

И выводим на странице меток

$fields = get_term_meta( get_query_var('tag_id'), 'test_meta_field' );

if( $fields && is_array( $fields ) ){
	echo $fields[0];
}
0

#2 Несколько метаполей с одинаковым ключом

Добавляем несколько полей с одинаковым ключом:

// добавляем данные
$term_id  = 702;
$meta_key = 'test_meta_field';

add_term_meta( $term_id, $meta_key, 'Привет мир', false );
add_term_meta( $term_id, $meta_key, 'Hello world', false );

// получает только что добавленные данные
$fields = get_term_meta( $term_id, $meta_key );

print_r( $fields );

/* Выведет:
Array
(
	[0] => Привет мир
	[1] => Hello world
)
*/
0

#3 Обновляем поле с указанным значением

У нас есть 2 поля с одинаковыми ключами test_meta_field но разными значениями, нам нужно обновить только поле со значением Hello world:

update_term_meta( 702, 'test_meta_field', 'Hello NEW world', 'Hello world');

Список изменений

С версии 4.4.0 Введена.

Код update_term_meta() WP 6.7.1

function update_term_meta( $term_id, $meta_key, $meta_value, $prev_value = '' ) {
	if ( wp_term_is_shared( $term_id ) ) {
		return new WP_Error( 'ambiguous_term_id', __( 'Term meta cannot be added to terms that are shared between taxonomies.' ), $term_id );
	}

	return update_metadata( 'term', $term_id, $meta_key, $meta_value, $prev_value );
}