Автоматические email-уведомления о новых постах для зарегистрированных пользователей блога WordPress

Довольно удобный способ уведомления пользователей на почту о новых статьях без необходимости подключать какой-либо сервис типо feedburner или smartresponder.

Достаточно лишь того, что пользователь зарегистрирован у вас на блоге.

Никаких дополнительных плагинов не потребуется, достаточно вставить следующий код в functions.php:

function true_send_notification_mails($post_ID)  {
	$wp_user_search = new WP_User_Query( array( 'fields' => array('user_email') ) );
	$users = $wp_user_search->get_results();
	$user_emails = array();
	for ($i = 0; $i < count($users); $i++) {
		$user_emails[] = $users[$i]->user_email;
	} // endfor
	$user_emails = implode(",", $user_emails); // список емаилов через запятую
 
	$subject = "Опубликован новый пост на блоге " . get_bloginfo('name'); // тема
	$message = "Для того, чтобы прочитать новый пост, перейдите по ссылке <a href='" . get_permalink($post_ID) . "'>" . get_permalink($post_ID) . "</a>"; // сообщение
	$headers = "Content-type: text/html; charset=utf-8 \r\n"; // кодировка
	$headers .= "From: ". get_bloginfo('name') ." <no-reply@". ltrim(site_url(),'http://') .">\r\n"; // от
 
	mail($user_emails, $subject, $message, $headers );
	return $post_ID;
}
 
add_action('publish_post', 'true_send_notification_mails');

К содержимому сообщения нет никаких ограничений, если хотите, можете запихать сюда весь пост.

$message = get_the_content($post_ID);

По поводу картинок и прочего HTML из статьи не беспокойтесь — в письме это всё отобразится, но только без внешних CSS-стилей.

Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

Смотрите также