Хук edited_(taxonomy)
срабатывает каждый раз, когда термин (элемент таксономии) обновляется в базе данных и очищается кэш термина. Этот хук позволяет разработчикам выполнять определенные действия после изменения термина, такие как обновление метаданных или перенаправление пользователя.
do_action( "edited_{$taxonomy}", int $term_id, int $tt_id, array $args );
Хук edited_(taxonomy)
является динамическим, что означает, что часть (taxonomy)
заменяется слагом нужной таксономии. Например, для категории используется хук edited_category
, а для меток — edited_post_tag
.
Параметры
$term_id
(int): ID редактируемого термина.$tt_id
(int): ID таксономии для термина.$args
(array): Параметры, переданные функцииwp_update_term()
.
Возможные имена хука:
edited_category
— для редактирования рубрик.edited_post_tag
— для редактирования меток.edited_nav_menu
— для обновления пунктов меню.
Пример 1: Обновление кастомного метаполя при редактировании термина категории
В этом примере создается произвольное поле на странице редактирования категории. После редактирования категории значение этого поля сохраняется в метаполях термина.
Шаг 1: Добавление кастомного поля в форму редактирования категории
<?php
add_action( 'category_edit_form_fields', 'add_custom_form_field_to_category' );
function add_custom_form_field_to_category( $term ) {
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="custom-field"><?php _e( 'Произвольное поле' ); ?></label></th>
<td>
<input type="text" name="custom_field" id="custom-field" value="<?php echo esc_attr( get_term_meta( $term->term_id, 'custom_field', true ) ); ?>">
<p class="description"><?php _e( 'Описание произвольного поля' ); ?></p>
</td>
</tr>
<?php
}
Шаг 2: Сохранение значения кастомного поля при редактировании категории
add_action( 'edited_category', 'save_custom_field_for_category', 10, 3 );
function save_custom_field_for_category( $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_status
со значением «updated» после его редактирования.
add_action( 'edited_genre', 'update_genre_status_meta', 10, 3 );
function update_genre_status_meta( $term_id, $tt_id, $args ) {
update_term_meta( $term_id, 'genre_status', 'updated' );
}
Теперь каждый раз при обновлении термина genre
его метаполе genre_status
будет автоматически обновляться на значение «updated».
Пример 3: Перенаправление на страницу редактирования после обновления термина
Этот пример показывает, как перенаправить администратора обратно на страницу редактирования после обновления термина. Это полезно, если нужно вернуться для дополнительных настроек.
add_action( 'edited_category', 'redirect_after_category_edit', 10, 2 );
function redirect_after_category_edit( $term_id, $tt_id ) {
$term = get_term( $term_id );
$taxonomy_slug = $term->taxonomy;
$redirect_url = admin_url( 'edit-tags.php?taxonomy=' . $taxonomy_slug . '&tag_ID=' . $term_id . '¬ice=updated' );
wp_safe_redirect( $redirect_url );
exit;
}
Этот код перенаправляет пользователя на страницу редактирования категории, добавляя к URL параметр уведомления notice=updated
.
Заключение
Хук edited_(taxonomy)
полезен для различных действий, связанных с обновлением терминов. С его помощью можно динамически управлять метаданными терминов, перенаправлять пользователей и выполнять дополнительную обработку данных при изменении терминов.