wordpress-hook
Время для прочтения: 0 мин. 32 сек.

Хук публикации поста в WordPress

Одна из самых сильных сторон WordPress - это система хуков (фильтров и экшенов), которая позволяет добавлять свои колбеки на разные события, произошедшие в ядре системы.

Довольно распространенная практика - оповещение подписчиков по email или push о выходе нового поста.

Для этого большинство программистов используют хук publish_post, что является неверным решением задачи, так как это событие всплывается также при нажатии кнопки Обновить на экране редактирования поста.

Тем самым ваши уведомления уйдут пользователю столько раз, сколько вы отредактируете свой пост после публикации.

Покопавшись более детально в документации по WordPress и поспрошая на форумах пришел к тому, что нужно использовать хук изменения статуса поста transition_post_status:

/**
 * Отправка уведомлений при публикации поста
 */
function roomble_send_notification( $new_status, $old_status, $post ) {
	if(
		'publish' === $new_status && 
		'publish' !== $old_status && 
		'post' === $post->post_type
	) {
		// Тут код отправки уведомления, например
	}
}
add_action( 'transition_post_status', 'roomble_send_notification', 10, 3 );

Событие transition_post_status возникает, когда пост переходит из одного статуса в другой. Внутри функции-зацепа мы проверяем, что тип поста post, запись переходит в состояние publish (опубликована) и предыдущий статус не был publish, иначе это свидетельствовало бы о том, что мы редактируем пост.

Источник: WordPress Publish Post Hook

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.