web-dev-qa-db-ja.com

カスタム投稿タイプを公開するときに電子メールを自動送信する方法

特定のカスタム投稿タイプの投稿を公開すると、自分のWebサイトの購読者に自動的に電子メールが送信されます。私はこれを行うプラグインをいくつか見つけましたが、これは通常の投稿(または公開されるあらゆる投稿タイプ、特定の投稿タイプを指定することはできません)に対してのみです。任意の提案は大歓迎です!ありがとう。

2
furio

transition_post_status にフックして、ユーザーを取得し、すべてのユーザーにEメールを送信します。

テストされていないサンプルコード

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( 'Hey there is a new entry!
        See <%s>',
        get_permalink( $post )
    );


    wp_mail( $emails, 'New entry!', $body );
}

おそらく Bccフィールドを使うべきです

13
fuxia