web-dev-qa-db-ja.com

コメントのEメール通知を変更する方法

新しいコメントとコメントのモデレートのために通知Eメール通知を受け取るユーザーをどのように変更しますか?

WordPressは通知を管理者ユーザーに送信します。私のクライアントはサイトの編集者です。コメント通知をadminユーザーではなくeditorユーザーにメールで送ってほしいのです。

どのようにそれをしますか?

3
user93385

このために2つのフィルタを接続する方法を説明する素晴らしい記事が http://www.sourcexpress.com/customize-wordpress-comment-notification-emails/ /

サイト管理者ではなく特定のユーザーに通知を送信するには、ID 123のユーザーに対してこれを試してください。

function se_comment_moderation_recipients( $emails, $comment_id ) {
    $comment = get_comment( $comment_id );
    $post = get_post( $comment->comment_post_ID );
    $user = get_user_by( 'id', '123' );

    // Return only the post author if the author can modify.
    if ( user_can( $user->ID, 'edit_published_posts' ) && ! empty( $user->user_email ) ) {
        $emails = array( $user->user_email );
    }

    return $emails;
}
add_filter( 'comment_moderation_recipients', 'se_comment_moderation_recipients', 11, 2 );
add_filter( 'comment_notification_recipients', 'se_comment_moderation_recipients', 11, 2 );
3

コメント通知の受信者のみを変更する可能性のあるフックについては認識していません。おそらく、何らかのコア機能を上書きする必要があるでしょう。

1. WordPressのコメント設定からEメール機能を無効にする( 通知を受け取りたくない場合は

2. comment_postアクションフックを使用して手動で送信し、この関数をfunctions.phpに追加するだけです。


add_filter( 'comment_post', 'comment_notification' ); 

function comment_notification( $comment_ID, $comment_approved ) {

    // Send email only when it's not approved
    if( $comment_approved == 0 ) {

        $subject = 'subject here';
        $message = 'message here';

        wp_mail( '[email protected]' , $subject, $message );
    }
}

// Remove if statement if you want to recive email even if it doesn't require moderation

comment_postは、コメントがデータベースに挿入された直後に起動されるアクションです。

2
N00b

コメントモデレートEメールのテキストを変更するためのフィルタがあります。

function change_comment_email( $body, $comment_id ) {
    $body = preg_replace( "/(A new )comment/s",  "$1review", $body );
    $body = preg_replace( "/(Currently \d+ )comment/s",  "$1review", $body );
    $body = preg_replace( "/Comment:/",  "Review:", $body );
    return $body;
}

add_filter( 'comment_moderation_text', 'change_comment_email', 20, 2 );
add_filter( 'comment_notification_text', 'change_comment_email', 20, 2 );
1
Ric Johnson

誰かがこの質問に出くわし、他の答えのコードハッキングが気に入らない場合には、この選択肢を提供します。

ブログの管理者アカウントのメールアドレスを作成します。例えば[email protected]および[email protected]とは異なる[email protected]

オプションA.サイト@ Eメールを編集者と技術管理者の両方に転送する。エイリアスとしてsite @を作成します。あなたの編集者がそのサイトによって生成されたすべての自動Eメールのコピーを受け取ることに問題がなければ、これはうまくいきます。無関係なEメールを除外するか、実際にサイトで何が起こるかを学ぶだけです。これはスモールクライアントに適しています。

オプションB site @のメールフィルタを設定して、コメントアラートに関する電子メールを自動的に編集者に転送し、すべての電子メールを技術管理者に転送する。技術管理者は、コメントアラートを受信トレイに表示されないように、アーカイブ/削除するようにフィルタリングできます。この最初のeditor @への転送は、procmailのようなものを使ってメールサーバ上で行うことができます。あるいは、24時間365日稼働している場合はメールクライアントでそれを実行することも、gmail/hotmail/etcを使用して手動でフィルタを構築することもできます。

0
paulzag