Хук post_updated
используется для выполнения действий сразу после того, как была обновлена запись в базе данных. Этот хук предоставляет доступ к объектам записи как до, так и после обновления, что дает возможность анализировать изменения и реагировать на них. Он идеально подходит для реализации таких функций, как кеширование, логирование изменений или отправка уведомлений.
do_action( ‘post_updated’, int $post_id, WP_Post $post_after, WP_Post $post_before )
Хук post_updated
срабатывает, когда запись обновляется в базе данных. Он передает три аргумента: ID поста, объект записи после обновления и объект записи до обновления. Это дает возможность разработчикам сравнивать старое и новое состояние записи и предпринимать необходимые действия.
Параметры
- $post_id (int): ID обновленной записи.
- $post_after (WP_Post): Объект записи после обновления.
- $post_before (WP_Post): Объект записи до обновления.
Когда срабатывает хук
Хук post_updated
вызывается после обновления записи, когда данные записи были записаны в базу данных. Это позволяет сравнивать старые и новые значения записи и принимать меры на основе изменений.
Пример 1: Логирование изменений в постах
Этот пример показывает, как можно использовать хук post_updated
для логирования изменений в постах. Мы будем записывать старое и новое значения заголовка записи.
add_action( 'post_updated', 'log_post_changes', 10, 3 );
function log_post_changes( $post_id, $post_after, $post_before ) {
// Сравниваем старый и новый заголовки записи
$old_title = $post_before->post_title;
$new_title = $post_after->post_title;
// Если заголовок изменился, записываем информацию в лог
if ( $old_title !== $new_title ) {
error_log("Post ID: {$post_id} - Title changed from '{$old_title}' to '{$new_title}'");
}
}
В этом примере мы отслеживаем изменения заголовка записи и записываем их в лог, если он был изменен. Это может быть полезно для мониторинга изменений на сайте.
Пример 2: Сброс кеша после обновления записи
Если ваш сайт использует динамическое кеширование, например, через плагин от хостинга (например, SG Optimizer на хостинге SiteGround), вам может понадобиться сбросить кеш после обновления записи. Хук post_updated
можно использовать для автоматического сброса кеша.
add_action( 'post_updated', 'purge_cache_after_post_updated', 10, 3 );
function purge_cache_after_post_updated( $post_id, $post_after, $post_before ) {
static $skip_purge = false;
// Если кеш уже был сброшен или плагин не доступен, пропускаем выполнение
if ( $skip_purge || ! function_exists( 'sg_cachepress_purge_cache' ) ) {
return;
}
// Помечаем, чтобы избежать повторного сброса кеша
$skip_purge = true;
// Сбрасываем кеш после завершения обработки запроса
add_action( 'shutdown', function () {
sg_cachepress_purge_cache();
} );
}
В этом примере после каждого обновления записи автоматически сбрасывается кеш через функцию плагина sg_cachepress_purge_cache()
, что важно для обеспечения актуальности данных на сайте.
Пример 3: Отправка уведомлений при обновлении записи
Допустим, вам нужно отправить уведомление на электронную почту администратора, когда определенная запись обновляется. Вы можете использовать хук post_updated
для этого.
add_action( 'post_updated', 'send_update_notification', 10, 3 );
function send_update_notification( $post_id, $post_after, $post_before ) {
// Проверяем, изменился ли заголовок записи
if ( $post_after->post_title !== $post_before->post_title ) {
// Адрес для отправки уведомления
$admin_email = get_option( 'admin_email' );
// Сообщение для уведомления
$subject = 'Запись обновлена';
$message = "Запись с ID {$post_id} была обновлена. Новый заголовок: '{$post_after->post_title}'";
// Отправляем email
wp_mail( $admin_email, $subject, $message );
}
}
В этом примере, если заголовок записи был изменен, на адрес администратора отправляется уведомление с новым заголовком. Это может быть полезно для отслеживания изменений в важных записях.
Заключение
Хук post_updated
в WordPress предоставляет мощные возможности для реагирования на обновление записей. Используя этот хук, вы можете отслеживать изменения в записях, сбрасывать кеш, отправлять уведомления или выполнять любые другие действия, которые требуют обработки данных до и после их обновления. Хук полезен для улучшения производительности сайта, мониторинга контента и выполнения автоматических задач.