wp_update_term()

Изменяет элемент таксономии.

Функция возвращает:

  • В случае успеха – массив, состоящий из двух ключей – 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 );

Источник: Блог Миши Рудрастых

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: