Хук публикации поста в 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

Источник: https://www.kobzarev.com/wordpress/wordpress-publish-post-hook/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

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

%d такие блоггеры, как: