Хук created_(taxonomy)
в WordPress используется для выполнения действий сразу после создания нового термина в указанной таксономии. Он предоставляет гибкость для разработчиков, позволяя добавлять дополнительную логику при создании терминов, например, для сохранения метаданных термина.
do_action( "created_{$taxonomy}", int $term_id, int $tt_id, array $args );
Этот хук срабатывает после того, как создан новый термин и очищен кэш терминов. Он динамичен: часть taxonomy
заменяется слагом конкретной таксономии, например, created_category
или created_post_tag
.
Параметры
$term_id
(int): ID созданного термина.$tt_id
(int): ID таксономии для термина.$args
(array): Параметры, переданные в функциюwp_insert_term()
, включают значения, используемые при создании термина.
Пример 1: Сохранение произвольного метаполя при создании термина в категории
В этом примере создается кастомное поле на странице создания категории. Значение этого поля затем сохраняется в метаполях термина.
Шаг 1: Добавление кастомного поля в форму создания категории
<?php
add_action( 'category_add_form_fields', 'add_custom_form_field' );
function add_custom_form_field() {
?>
<div class="form-field">
<label for="custom-field">
<?php _e( 'Произвольное поле' ); ?>
</label>
<input id="custom-field" type="text" name="custom_field" value="">
<p><?php _e( 'Описание произвольного поля' ); ?></p>
</div>
<?php
}
Шаг 2: Сохранение значения кастомного поля при создании категории
add_action( 'created_category', 'save_custom_form_field', 10, 3 );
function save_custom_form_field( $term_id, $tt_id, $args ) {
if ( isset( $_POST['custom_field'] ) && current_user_can( 'edit_term', $term_id ) ) {
update_term_meta( $term_id, 'custom_field', sanitize_text_field( $_POST['custom_field'] ) );
}
}
Этот код сохраняет значение кастомного поля custom_field
для каждого нового термина в категории. Мы также проверяем наличие необходимых разрешений и корректности данных.
Пример 2: Автоприсвоение метаполя при создании термина в кастомной таксономии
Допустим, у нас есть кастомная таксономия genre
. Каждый раз при создании термина в этой таксономии мы хотим присваивать ему определенное значение метаполя genre_level
.
add_action( 'created_genre', 'assign_genre_level_meta', 10, 3 );
function assign_genre_level_meta( $term_id, $tt_id, $args ) {
// Присваиваем значение метаполю
update_term_meta( $term_id, 'genre_level', 'basic' );
}
В этом примере, когда создается новый термин в genre
, ему автоматически присваивается метаполе genre_level
со значением basic
.
Пример 3: Логирование информации о созданных терминах
Этот пример показывает, как можно логировать информацию о созданных терминах для последующего анализа. Например, можно записывать данные в файл или отправлять уведомление администратору.
add_action( 'created_tag', 'log_created_tag_info', 10, 3 );
function log_created_tag_info( $term_id, $tt_id, $args ) {
$log_message = sprintf(
"Новый термин создан: ID = %d, Таксономия ID = %d, Название = %s",
$term_id,
$tt_id,
$args['name']
);
error_log( $log_message );
}
Заключение
Хук created_(taxonomy)
— мощный инструмент для работы с таксономиями в WordPress. С его помощью можно добавлять кастомные поля, логировать события и автоматически обновлять данные при создании новых терминов.