web-dev-qa-db-ja.com

Wordpressがモデレーションメールを送信しないようにする

この質問はもともとstackoverflowで投稿されました: https://stackoverflow.com/questions/11435952/stop-wordpress-from-sending-out-moderation-emails しかし、@ MaxGherkinsからの助言の後に、私はまた助けのために修正版をここに投稿しています。

Wordpressのインストールでサイト管理者に電子メールを送信するのに問題があります
これはスパムのコメントにも当てはまり、サイト管理者は彼の受信箱にたくさんのジャンクメールを受け取ることになります。

この問題をGoogleで見るたびに、「設定 - >ディスカッション」の順にクリックして、「コメントを控えめにします」という回答が表示されますが、残念ながらこれは役に立ちません。

だから、ここで私の設定は次のとおりです(これらのいくつかは無関係かもしれません):

  1. 私はwordpressのコメントシステムを使っています。いいえコメントやFacebookのコメントはありません。
  2. Akismetプラグインをインストールしました。私はプラグインを無効にしようとしましたが、私はまだ電子メールを受け取ります。
  3. 「コメントを投稿する」と「モデレートのためにコメントを保留する」の両方が、「設定」 - >「ディスカッション」 - >「いつでもEメールを送る」の下でチェックされていない。
  4. コメントを書くためにログインする必要はありません
  5. WPインストールはもともとWordpress MUのインストールでしたが、私は3.xにアップグレードしたので通常のwordpressインストールに組み込まれています。インストールは、異なるドメイン名を持つ多くのブログを実行します、そして、問題は全てのブログで私の知る限りでは起こります。
  6. ほとんどのブログは "Yashfa BRANDED!"を使っています。テーマ
  7. データベースからの情報

    すべてのブログは、wp_X_というプレフィックスが付いた同じデータベースにあります。

    これはランダムなブログからの出力です。

    mysql> SELECT * FROM wp_1_options WHERE option_name LIKE "%notify";
    +-----------+---------+-------------------+--------------+----------+
    | option_id | blog_id | option_name       | option_value | autoload |
    +-----------+---------+-------------------+--------------+----------+
    |        10 |       0 | comments_notify   |              | yes      | 
    |        32 |       0 | moderation_notify |              | yes      | 
    +-----------+---------+-------------------+--------------+----------+
    2 rows in set (0.01 sec)
    
    mysql> SELECT * FROM wp_50_options WHERE option_name LIKE "%notify";
    +-----------+---------+-------------------+--------------+----------+
    | option_id | blog_id | option_name       | option_value | autoload |
    +-----------+---------+-------------------+--------------+----------+
    |        11 |       0 | comments_notify   |              | yes      | 
    |        31 |       0 | moderation_notify |              | yes      | 
    +-----------+---------+-------------------+--------------+----------+
    2 rows in set (0.00 sec)
    
    mysql> SELECT * FROM wp_100_options WHERE option_name LIKE "%notify";
    +-----------+---------+-------------------+--------------+----------+
    | option_id | blog_id | option_name       | option_value | autoload |
    +-----------+---------+-------------------+--------------+----------+
    |        10 |       0 | comments_notify   |              | yes      | 
    |        30 |       0 | moderation_notify |              | yes      | 
    +-----------+---------+-------------------+--------------+----------+
    2 rows in set (0.00 sec)
    

モデレートのEメールは以下のようになります。


件名:[SITENAME]管理者権限: "スパムコメントのテスト"


体:

A new comment on the post 78 "Test spam comments" is waiting for your approval

http://url/test-spam-comments/

Author : djqw21208ryfg23 (IP: XXX.XXX.XXX.XXX , XXX.XXX.XXX.XXX)  
E-mail :     [email protected]  
URL    : http://feg239r239f9fg7329rfg322379fg23f3  
Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=XXX.XXX.XXX.XXX


Comment:  
ugly spam comment goes here...


Approve it: http://url/wp-admin/comment.php?action=mac&c=XXXXX  
Delete it: http://url/wp-admin/comment.php?action=cdc&c=XXXXX  
Spam it: http://url/wp-admin/comment.php?action=cdc&dt=spam&c=XXXXX  
Currently 0 comments are waiting for approval.   

Please visit the moderation panel:
http://url/wp-admin/moderation.php

「設定」 - >「ディスカッション」の下の電子メール設定をオフにしてもデータベースで正しく表示されているのに、なぜこれらの電子メールを受信し続けるのですか。

私はwp_1_ *テーブルに属するブログでテストしています。

3
mario

私はなぜこれが起こっているのかについて説明することはできませんが、私はあなたにそれを沈黙させるための迅速な修正を与えることができます。

責任ある関数は wp_notify_moderator で、これは プラグイン可能関数 です。あなたはあなた自身のプラグインに関数の内容をコピーして、コメントモデレートEメールの場合にはそれをreturn trueに修正することができます。

行の後:

$comment = get_comment($comment_id);

追加:

if( empty( $comment->comment_type ) ) return true;

これは長期的な解決策ではないかもしれませんが、別の方法でソートされるまで受信箱に残りを与えます。

1
Milo