Хук publish_post
срабатывает в момент публикации записи типа post
, а также при последующих обновлениях этой записи. Этот хук вызывается не только при первоначальной публикации, но и при каждом обновлении записи, когда она находится в статусе publish
. Это позволяет выполнять действия каждый раз, когда запись становится доступной на сайте.
Хук publish_post
используется для выполнения действий каждый раз, когда пост публикуется или обновляется в статусе «опубликовано». Он работает, когда пост переходит в статус publish
, будь то при первоначальной публикации, либо при обновлениях уже опубликованного поста.
Параметры
- $post_id (int): ID опубликованного поста.
- $post (WP_Post): Объект опубликованного поста.
- $old_status (string): Старый статус поста перед его публикацией.
Когда срабатывает хук
- При первой публикации записи, например, когда новый пост добавляется через
wp_insert_post()
. - При публикации записи из черновика или другого статуса в админке.
- При обновлениях опубликованных записей (если запись уже была опубликована, а затем обновлена).
Если вам нужно выполнять действия только при первой публикации записи (не при обновлениях), лучше использовать хуки типа draft_to_publish
или new_to_publish
.
Пример 1: Выполнение действий при публикации поста
Допустим, вы хотите выполнять некоторую задачу каждый раз, когда пост переходит в статус publish
. В этом примере добавим сообщение в лог, когда пост публикуется.
add_action( 'publish_post', 'handle_publish_post', 10, 2 );
function handle_publish_post( $post_id, $post ) {
// Запись в лог при публикации поста
error_log("Пост с ID {$post_id} был опубликован. Заголовок: {$post->post_title}");
}
В этом примере каждый раз, когда пост публикуется или обновляется, будет записываться информация в лог, включая ID поста и его заголовок. Это полезно для отслеживания активности публикаций.
Пример 2: Отправка уведомления при публикации поста
Предположим, что вы хотите отправлять уведомление на электронную почту администратора, когда новый пост публикуется. Это можно сделать с помощью хука publish_post
.
add_action( 'publish_post', 'send_publish_notification', 10, 2 );
function send_publish_notification( $post_id, $post ) {
// Адрес администратора
$admin_email = get_option( 'admin_email' );
// Тема и сообщение для уведомления
$subject = 'Новый пост был опубликован';
$message = "Пост с ID {$post_id} и заголовком '{$post->post_title}' был только что опубликован.";
// Отправляем email
wp_mail( $admin_email, $subject, $message );
}
Этот код отправит email уведомление на адрес администратора каждый раз, когда будет опубликован новый пост. Уведомление будет содержать ID и заголовок поста.
Пример 3: Сохранение мета-информации о публикации
Если вам нужно сохранить дополнительную информацию, когда пост публикуется, вы можете использовать хук publish_post
для записи мета-информации.
add_action( 'publish_post', 'save_publish_meta', 10, 2 );
function save_publish_meta( $post_id, $post ) {
// Убедимся, что мета-данные записываются только при публикации
if ( ! get_post_meta( $post_id, '_has_been_published', true ) ) {
// Сохраняем мета-данные
update_post_meta( $post_id, '_has_been_published', true );
}
}
Этот код записывает мета-данные о том, что пост был опубликован, при его первой публикации. Мета-ключ _has_been_published
будет добавлен к посту и его значение будет равно true
.
Заключение
Хук publish_post
— это мощный инструмент для выполнения действий при публикации или обновлении записей на вашем сайте. С его помощью можно автоматизировать такие задачи, как отправка уведомлений, логирование действий, запись мета-данных и другие процессы, связанные с публикацией контента. Если вам нужно выполнить действия только при первой публикации записи, используйте специализированные хуки, такие как draft_to_publish
или new_to_publish
.