Изменяет элемент таксономии.
Функция возвращает:
- В случае успеха – массив, состоящий из двух ключей –
term_id
иterm_taxonomy_id
. - Объект WP_Error, если:
- указанной таксономии не существует (или она регистрируется позже),
- термина с указанным ID не существует,
- каким-то образом у обновляемого термина нет имени, и мы не передаём новое,
- если указан ID родительского термина, но его не существует,
- если был указан новый ярлык, который уже существует у другого термина.
wp_update_term( $term_id, $taxonomy, $args = array() )
Параметры
- $term_id
- (целое) ID обновляемого термина.
- $taxonomy
- (строка) Название таксономии обновляемого термина.
- $args
- (массив) Какую информацию о термине нужно изменить. Может принимать значения:
name
– имя,slug
– ярлык,term_group
– значение term_group,description
– описание,parent
– ID родительского термина.
Все передаваемые здесь значения очистятся функцией sanitize_term().
term_group
– это отдельная колонка в таблице wp_terms
в БД, наряду с term_id
, name
и slug
. Было задумано для группировки терминов, но по факту так и не используется. Однако некоторые плагины юзают это значение.
Пример
В качестве примера можем попробовать обновить название стандартной рубрики «Без категории». Так как это самая первая рубрика на сайте, то её ID будет равен 1, так как это рубрика, то название таксономии будет category
.
$term = wp_update_term( 1, 'category', array( 'name' => 'С категорией' ) ); if( ! is_wp_error( $term ) ) { echo 'Рубрика обновлена.'; } else { echo $term->get_error_message(); }
Хуки
edit_terms
Будет запущен непосредственно перед тем, как элемент таксономии будет изменён.
С версии 2.9.0
do_action( 'edit_terms', $term_id, $taxonomy );
wp_update_term_data
Позволяет модифицировать все изменяемые данные термина перед непосредственно его изменением.
С версии 4.7.0
$data = apply_filters( 'wp_update_term_data', $data, $term_id, $taxonomy, $args );
Хочу рассмотреть подобный пример для хука wp_update_term_data
. Сделаем так, что переименовывая термин в «Лыжи», он автоматически будет переименовываться в «Сноуборд».
add_filter( 'wp_update_term_data', 'true_filter_term_name_before_upd', 25, 4 ); function true_filter_term_name_before_upd( $data, $term_id, $taxonomy, $args ) { if( 'Лыжи' === $data[ 'name' ] ) { $data[ 'name' ] = 'Сноуборд'; } return $data; }
Не знаете, как работать с фильтрами?
edited_terms
Запускается непосредственно после того, как таблица терминов wp_terms
обновлена, но перед тем, как таблица таксономий wp_term_taxonomy
обновлена.
С версии 2.9.0
do_action( 'edited_terms', $term_id, $taxonomy );
edit_term_taxonomy
Запускается непосредственно после того, как таблица терминов wp_terms
обновлена, но перед тем, как таблица таксономий wp_term_taxonomy
обновлена.
С версии 2.9.0
do_action( 'edit_term_taxonomy', $tt_id, $taxonomy );
edited_term_taxonomy
Запускается непосредственно после того, как таблица таксономий термина wp_term_taxonomy
обновлена.
С версии 2.9.0
do_action( 'edited_term_taxonomy', $tt_id, $taxonomy );
edit_term
Запускается после того, как термин был полностью обновлен, но перед очисткой кэша.
С версии 2.3.0
do_action( 'edit_term', $term_id, $tt_id, $taxonomy )
edit_{$taxonomy}
Запускается после того, как термин был полностью обновлен, но перед очисткой кэша.
С версии 2.3.0
do_action( "edit_{$taxonomy}", $term_id, $tt_id );
term_id_filter
Позволяет модифицировать ID созданного термина, который уже будет использоваться при очистке кэша и во всех последующих хуках.
С версии 2.3.0
$term_id = apply_filters( 'term_id_filter', $term_id, $tt_id );
edited_term
Срабатывает после обновления термина в базе данных и после очистки кэша.
С версии 2.3.0
do_action( 'edited_term', $term_id, $tt_id, $taxonomy );
edited_{$taxonomy}
Срабатывает после обновления термина в базе данных и после очистки кэша.
С версии 2.3.0
do_action( "edited_{$taxonomy}", $term_id, $tt_id );
saved_term
Срабатывает после добавления термина в базу данных и после очистки кэша.
С версии 5.5.0
do_action( 'saved_term', $term_id, $tt_id, $taxonomy, true );
Четвёртый параметр true
в данном случае означает, что мы обновляем уже существующий термин. Этот же хук присутствует и в функции wp_insert_term(), и там четвёртый параметр уже равен false
– то есть мы добавляем новый элемент таксономии.
saved_{$taxonomy}
Срабатывает после добавления термина в базу данных и после очистки кэша.
С версии 5.5.0
do_action( "saved_{$taxonomy}", $term_id, $tt_id, true );
Источник: Блог Миши Рудрастых