Как автоматически отправлять email при публикации записи произвольного типа?
Я хочу, чтобы email автоматически отправлялся подписчикам моего сайта, когда я публикую запись определенного произвольного типа (custom post type). Я нашел несколько плагинов, которые делают это, но только для обычных записей (или для любого типа записей при публикации, не позволяя указать конкретный тип записи). Буду благодарен за любые предложения! Спасибо.
Подключитесь к хуку transition_post_status
, получите пользователей и отправьте email всем пользователям.
Пример кода (не тестировался):
add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );
function send_mails_on_publish( $new_status, $old_status, $post )
{
if ( 'publish' !== $new_status or 'publish' === $old_status
or 'my_custom_type' !== get_post_type( $post ) )
return;
$subscribers = get_users( array ( 'role' => 'subscriber' ) );
$emails = array ();
foreach ( $subscribers as $subscriber )
$emails[] = $subscriber->user_email;
$body = sprintf( 'Привет, есть новая запись!
Смотрите <%s>',
get_permalink( $post )
);
wp_mail( $emails, 'Новая запись!', $body );
}
Вероятно, вам стоит использовать поле Bcc
.

Огромное спасибо за помощь, toscho! Я попробовал ваш код, и кажется, он работает. Ура!

@toscho или furio, это работает почти идеально для меня, спасибо. Знаете ли вы, как изменить код, чтобы каждый пользователь видел только, что сообщение было отправлено ему, а не user1, user2, user3...

@Chuck Смотрите моё обновление или http://wordpress.stackexchange.com/a/45844/73.
