Как автоматически отправлять email при публикации записи произвольного типа?

24 мая 2013 г., 20:15:11
Просмотры: 20.8K
Голосов: 2

Я хочу, чтобы email автоматически отправлялся подписчикам моего сайта, когда я публикую запись определенного произвольного типа (custom post type). Я нашел несколько плагинов, которые делают это, но только для обычных записей (или для любого типа записей при публикации, не позволяя указать конкретный тип записи). Буду благодарен за любые предложения! Спасибо.

0
Все ответы на вопрос 1
3
16

Подключитесь к хуку 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.

24 мая 2013 г. 21:45:19
Комментарии

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

furio furio
2 июн. 2013 г. 22:28:36

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

Chuck Chuck
4 нояб. 2013 г. 01:07:12

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

fuxia fuxia
4 нояб. 2013 г. 03:34:21