Хук edit_comment
в WordPress срабатывает сразу после обновления комментария в базе данных и до перехода статуса комментария. Этот хук позволяет разработчикам добавлять дополнительные действия, когда комментарий обновляется, например, отслеживать дату обновления, модифицировать метаданные или изменять статус комментария.
do_action( 'edit_comment', int $comment_id, array $data )
$comment_id
(int) — ID обновленного комментария.$data
(array) — Массив данных комментария, включая информацию о статусе, авторе и содержимом.
Хук edit_comment
представляет собой полезный инструмент для реализации дополнительных действий при обновлении комментария. Этот хук срабатывает после внесения изменений, позволяя разработчику сразу реагировать на обновленные данные.
Использование
Простая регистрация функции для выполнения при срабатывании хука edit_comment
выглядит следующим образом:
function my_custom_action_on_comment_edit( $comment_ID ) {
// Выполнение дополнительных действий...
}
add_action( 'edit_comment', 'my_custom_action_on_comment_edit' );
Пример #1: Добавление метаданных при обновлении комментария
Допустим, нам нужно сохранить время последнего обновления комментария. Это полезно для отслеживания изменений и работы с аналитикой.
add_action( 'edit_comment', 'add_update_timestamp_to_comment_meta' );
function add_update_timestamp_to_comment_meta( $comment_id ) {
$comment = get_comment( $comment_id );
// Убедимся, что обновляем опубликованный комментарий, а не черновик или отзыв
if ( $comment->comment_approved != 1 || $comment->comment_type != '' ) {
return;
}
$timestamp = time(); // Текущее время в UNIX формате
update_comment_meta( $comment_id, 'last_updated', $timestamp );
}
Здесь, если комментарий обновляется, мы записываем мета-данные с текущим временем в поле 'last_updated'
. Эти данные затем можно использовать для вывода информации о дате последнего изменения комментария.
Пример #2: Добавление информации об изменениях в комментарий
В некоторых случаях полезно записывать, кто и когда редактировал комментарий. Давайте добавим пользовательские метаданные, чтобы фиксировать ID пользователя и дату обновления комментария.
add_action( 'edit_comment', 'log_comment_editor_data' );
function log_comment_editor_data( $comment_id ) {
$comment = get_comment( $comment_id );
if ( $comment->comment_approved != 1 || $comment->comment_type != '' ) {
return;
}
$current_user = wp_get_current_user();
if ( $current_user->ID ) {
update_comment_meta( $comment_id, 'last_edited_by', $current_user->ID );
}
update_comment_meta( $comment_id, 'edit_timestamp', current_time( 'mysql' ) );
}
В этом примере сохраняется ID пользователя, который обновил комментарий, и точное время изменения в формате MySQL. Это полезно для администратора или модераторов, чтобы иметь историю изменений и авторов редактирования.
Пример #3: Автоматическое изменение статуса при обновлении комментария
Предположим, что нам нужно автоматически отправлять комментарий на модерацию, если он обновляется. Это может быть полезно для отслеживания повторного редактирования комментариев.
add_action( 'edit_comment', 'moderate_comment_on_edit' );
function moderate_comment_on_edit( $comment_id ) {
$comment = get_comment( $comment_id );
if ( $comment->comment_approved == 1 ) {
wp_update_comment( array(
'comment_ID' => $comment_id,
'comment_approved' => 0 // Отправляем комментарий на модерацию
) );
}
}
Здесь, при каждом обновлении опубликованного комментария, он отправляется на повторную модерацию, что дает возможность модераторам проверять внесенные изменения.
Заключение
Хук edit_comment
— это мощный инструмент для управления и расширения функциональности комментариев в WordPress. Он позволяет добавлять мета-данные, автоматически изменять статус, фиксировать изменения и добавлять действия после обновления комментария.