Cette question a été initialement posée à stackoverflow: https://stackoverflow.com/questions/11435952/stop-wordpress-from-sending-out-moderation-emails mais après un conseil de @MaxGherkins, je poste ici une version modifiée également pour vous aider.
J'ai des problèmes avec mon installation wordpress à envoyer des courriels à l'administrateur du site à chaque fois un commentaire doit être modéré.
Cela s’applique également aux commentaires de spam qui ont pour résultat que l’administrateur du site reçoit beaucoup de courriers indésirables dans sa boîte de réception.
Chaque fois que je recherche ce problème dans Google, je me retrouve avec la réponse "Allez simplement dans Paramètres -> Discussion et décochez la case" Un commentaire est réservé à la modération "" mais malheureusement, cela ne m'aide pas.
Donc, voici mes paramètres (certains d'entre eux peuvent être sans importance):
Quelques informations de la base de données:
Tous les blogs sont dans la même base de données, avec le préfixe wp_X_
Voici quelques résultats de blogs aléatoires:
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)
L'email de modération ressemble à ceci:
Subject: [SITENAME] Veuillez modérer: "Testez les commentaires de spam"
Corps:
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
Pourquoi est-ce que je continue à recevoir ces courriels alors que j'ai désactivé les paramètres de messagerie sous "Paramètres" -> "Discussion" et que cela a l'air juste dans la base de données?
J'ai testé avec le blog qui appartient aux tables wp_1_ *.
Je ne peux pas expliquer pourquoi cela se produit, mais je peux vous donner une solution rapide pour le faire taire.
La fonction responsable est wp_notify_moderator
, qui est une fonction pluggable . Vous pouvez copier le contenu de la fonction dans votre propre plugin et le modifier en return true
dans le cas d'un e-mail de modération de commentaire.
après la ligne:
$comment = get_comment($comment_id);
ajouter:
if( empty( $comment->comment_type ) ) return true;
Ce n'est peut-être pas une solution à long terme, mais cela laissera les boîtes de réception en attente jusqu'à ce qu'elles soient triées autrement.