update_term_meta()
Обновляет метаданные элемента таксономии (категории, метки ...).
Используйте параметр $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(смешанный)
- Предыдущее значение. Нужно для обновления конкретного поля, когда существует несколько полей с одинаковым ключом.
По умолчанию: ''
Примеры
#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]; }
#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 ) */
#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() 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 ); }