Kommentar-Hook genehmigen?

8

Ich möchte E-Mails an Abonnenten senden, wenn ein Kommentar genehmigt wurde.

Die zwei Aktionen im Codex sind:

1.

add_action('comment_post', 'callback', $priority, $accepted_args);

Wo die Argumente sind comment_IDund approval status(0 oder 1).

2.

add_action('edit_comment', 'callback', $priority, $accepted_args);

Mit Argument comment_ID

Standardmäßig werden Kommentare nicht genehmigt, wenn sie veröffentlicht werden. Ich denke, ich würde sie bearbeiten, wenn ich sie genehmige, aber es ist im Codex unklar. Welche Option sollte ich verwenden, wenn ich einen Kommentar genehmige?

AlxVallejo
quelle

Antworten:

14

Genau wie bei Posts kann ein Kommentar eine Reihe unterschiedlicher Status haben. Anstatt einen Hook mit jedem Status zu benennen, haben sie Übergangshooks, die Ihnen mitteilen, welchen Status er zuvor hatte und welchen neuen Status er hat. In Ihrem Fall könnte dies den Trick tun:

add_action('transition_comment_status', 'my_approve_comment_callback', 10, 3);
function my_approve_comment_callback($new_status, $old_status, $comment) {
    if($old_status != $new_status) {
        if($new_status == 'approved') {
            // Your code here
        }
    }
}

Lassen Sie uns wissen, wie es geht?

Tomas Buteler
quelle
Wäre das Tag nicht comment_ (alter Status) _to_ (neuer Status), auch im Codex enthalten?
AlxVallejo
2
Könnte auch sein, aber es bedeutet, dass Sie den alten Status kennen. Sie können einen als Spam gekennzeichneten Kommentar oder einen nicht genehmigten Kommentar genehmigen, sodass Sie zwei Hooks verwenden müssen, um Ihre Funktion auszulösen. Ich würde sagen, gehen Sie mit dem Übergang, weil es Ihren Code einfacher zu pflegen macht.
Tomas Buteler
mit einer einfachen wp_mail();Funktion getestet , aber die Testnachricht nicht erhalten. es funktioniert für dich? Ich benutze wp 3.5.1
Attila
@ user9909 hat es gerade mit 3.5.1 getestet und es funktioniert. Beginnen Sie mit einfacherem Code (in meinem Fall error_log ()) und debuggen Sie von dort aus vielleicht? Die Verwendung von wp_mail () bedeutet zusätzliche Stellen, an denen Fehler auftreten können, einschließlich vieler Stellen, die nichts mit WP zu tun haben.
Tomas Buteler
1
Verwenden Sie den Hook wp_insert_comment, um Kommentare abzufangen, die automatisch im laufenden Betrieb genehmigt wurden.
Joseph Persie