Senden Sie eine E-Mail an den Benutzer, dass sein Beitrag abgelehnt wurde

Ich suche nach einer Lösung für folgendes Problem:

Ich verwende das WP-Benutzer-Frontend , damit Benutzer Posts im Frontend erstellen können. Nach dem Speichern muss der Administrator den Post und die Veröffentlichung (falls genehmigt) überprüfen oder ablehnen (falls nicht genehmigt).

Wenn der Beitrag genehmigt wird, wird automatisch eine EMail an den Benutzer gesendet, dass sein Beitrag genehmigt wurde (dies habe ich bereits herausgefunden).

Aber wenn der Admin nicht genehmigt, wie man dem Benutzer eine E-Mail mit einem möglichen benutzerdefinierten Text (warum er nicht genehmigte) aus dem Backend, per Klick auf eine Schaltfläche senden?

Solutions Collecting From Web of "Senden Sie eine E-Mail an den Benutzer, dass sein Beitrag abgelehnt wurde"

Fügen Sie auf der Nachbearbeitungsseite direkt unter der Schaltfläche “Veröffentlichen” die Schaltfläche “Ablehnen und benachrichtigen” hinzu , die nach dem Klicken ein modales Fenster (Thickbox) öffnet, das ein Formular enthält (vorkompiliert mit dem Namen des Postautors, Titel und eine Standardnachricht), mit der Sie die E-Mail an den Autor senden können.

Um dies zu erreichen, benötigen Sie:

  1. Eine function, die den Knopf druckt. Sie können den 'post_submitbox_misc_actions' Hook 'post_submitbox_misc_actions' , um ihn an der richtigen Stelle zu drucken
  2. Eine function, die das Formular in einem modalen Fenster ausgibt. Diese function sollte die aktuelle Post-ID verwenden, um den Autor zu erhalten und die Autor-E-Mail in ein verstecktes Feld zu legen.
  3. Eine function, die die E-Mail sendet, wenn das Formular gesendet wird

Die 2 letzten functionen können problemlos mit Ajax Api arbeiten , also benötigen Sie auch eine js-Datei, in die Sie den Ajax- und anderen js-Code eingeben.

Es wird also eine andere function benötigt, um das Skript in die Warteschlange zu stellen und das Skript mit wp_localize_script lokalisieren

Die Schaltfläche sollte auch js-zugängliche Informationen über den aktuellen Post enthalten, ein data-Attribut kann dafür verwendet werden.

Für die functionen, die den Button und das Formular (Punkte 1. und 2. ) drucken, müssen Sie Folgendes überprüfen:

  • Der aktuelle Benutzer verfügt über Editorfunktionen
  • die aktuelle Seite ist die Post-Edit-Seite ( post.php )

In der function, die die E-Mail sendet (Punkte 3 ) müssen Sie einige Sicherheitsaufgaben ausführen:

  • Überprüfen Sie, ob der aktuelle Benutzer über Editorfunktionen verfügt
  • Überprüfen Sie eine Nonce (zuvor als verstecktes Feld im Formular hinzugefügt)

Danach sollte diese function einige Informationen über den Mail-Sendeprozess ausgeben (Nachricht gesendet oder nicht) und sie als json ausgeben. Auf diese Weise kann man über js eine Rückmeldung über das Modal geben. Wenn ein Fehler aufgetreten ist, ist es eine gute Idee, auch einige Debug-Informationen auszugeben, um zu prüfen, ob das Debugging in WP aktiv ist oder nicht.


Bearbeiten: Plugin-Code

In der ursprünglichen Antwort habe ich den Code hier gepostet. Jetzt habe ich ein Plugin erstellt, das den gesamten hier beschriebenen Workflow mit OOP-Ansatz beinhaltet. Das Plugin ist bereit für die Lokalisierung und bereits in Italienisch lokalisiert.

Das Plugin in GPL lizenziert und auf GitHub verfügbar.


Plugin Screenshots


Die Schaltfläche Ablehnen und Benachrichtigen


Die modale Form


Erfolgsmeldung


Wenn etwas schief geht und das Debugging aktiv ist …

Fehlermeldung mit Debug