web-dev-qa-db-ja.com

投稿やページが変更されたときにEメールで通知する

ページまたは投稿が公開されたときにWordpressから私にEメールを送信する方法はありますか?

10
GavinR

電子メール通知を処理するプラグインはいくつかあります しかし、それらはすべて(すべての)WordPressユーザーの購読サービスのように機能するようです。

投稿またはページが公開されたときに you だけに通知するには、次の手順を実行します。

/**
 * Send an email notification to the administrator when a post is published.
 * 
 * @param   string  $new_status
 * @param   string  $old_status
 * @param   object  $post
 */
function wpse_19040_notify_admin_on_publish( $new_status, $old_status, $post ) {
    if ( $new_status !== 'publish' || $old_status === 'publish' )
        return;
    if ( ! $post_type = get_post_type_object( $post->post_type ) )
        return;

    // Recipient, in this case the administrator email
    $emailto = get_option( 'admin_email' );

    // Email subject, "New {post_type_label}"
    $subject = 'New ' . $post_type->labels->singular_name;

    // Email body
    $message = 'View it: ' . get_permalink( $post->ID ) . "\nEdit it: " . get_edit_post_link( $post->ID );

    wp_mail( $emailto, $subject, $message );
}

add_action( 'transition_post_status', 'wpse_19040_notify_admin_on_publish', 10, 3 );

これをあなたのテーマのfunctions.phpに落とすか、プラグインとして保存することができます(それは厳密には 'テーマ'に関連していないので、もっと適切かもしれません)。

18
TheDeadMedic

sha - 投稿されたソリューションがすべてのインスタンスで機能するわけではないという知識を提供することで、質問に回答します。

24時間後に、私が貢献した知識を更新することができます。この場所の解決策( ページが編集されたときに管理者に通知しますか? )は、上記の解決策では解決できないサーバーで機能します。私が試した2つの状況でよりうまく機能する解決策を使ってスレッドから引用するには:

Wpcodexからのオリジナルのスクリプトはうまく働きます:

 add_action( 'save_post', 'my_project_updated_send_email' ); 
 function my_project_updated_send_email( $post_id ) { 
    //verify post is not a revision 
    if ( !wp_is_post_revision( $post_id ) ) { 
         $post_title = get_the_title( $post_id ); 
         $post_url = get_permalink( $post_id ); 
         $subject = 'A post has been updated'; 
         $message = "A post has been updated on your website:\n\n";
         $message .= "<a href='". $post_url. "'>" .$post_title. "</a>\n\n"; 
         //send email to admin 
         wp_mail( get_option( 'admin_email' ), $subject, $message ); 
   } 
} 
3
Doorwhey

確かに、あなたは適切な Post Status Transition hookもしくはhookと wp_mail() を使う必要があるでしょう。

1
Rarst