web-dev-qa-db-fra.com

Envoyer un email à l'utilisateur que son message a été rejeté

Je cherche une solution au problème suivant:

J'utilise WP User Frontend pour que les utilisateurs puissent créer des publications dans le frontend. Après la sauvegarde, l’administrateur doit revoir la publication et la publication (si elle est approuvée) ou la refuser (si elle n’a pas été approuvée).

Si la publication est approuvée, un courrier électronique est automatiquement envoyé à l'utilisateur pour lui indiquer que sa publication a été approuvée (j'ai déjà appris comment procéder).

Mais si l’administrateur n’approuve pas, comment envoyer à l’utilisateur un email contenant un texte personnalisé (pourquoi il n’a pas approuvé) à partir du backend, par clic sur un bouton?

1
Asped

Dans la page de modification, juste sous le bouton "Publier", ajoutez un bouton "Refuser et notifier" ayant ouvert une fenêtre modale (boîte épaisse) contenant un formulaire ( pré-compilé avec le nom de l'auteur de la publication, le titre de la publication et un message standard) que vous pouvez utiliser pour envoyer le courrier électronique à l'auteur de la publication.

Pour ce faire, vous avez besoin de:

  1. Une fonction qui imprime le bouton. Vous pouvez utiliser le crochet d'action 'post_submitbox_misc_actions' pour l'imprimer au bon endroit.
  2. Une fonction qui affiche le formulaire dans une fenêtre modale. Cette fonction doit utiliser l'identifiant de la publication en cours pour obtenir l'auteur et placer le courrier électronique de l'auteur dans un champ caché.
  3. Une fonction qui envoie l'e-mail lorsque le formulaire est soumis

Les 2 dernières fonctions peuvent facilement fonctionner avec Ajax Api , vous avez donc également besoin d'un fichier js contenant le code ajax et un autre code js.

Donc, une autre fonction est nécessaire pour la mise en file de script et la localisation de script avec wp_localize_script

Le bouton doit également contenir des informations accessibles par js sur la publication en cours, un attribut data-* peut être utilisé pour cela.

Pour les fonctions qui impriment le bouton et le formulaire (points 1. et 2. ), vous devez vérifier que:

  • l'utilisateur actuel a des capacités d'édition
  • la page en cours est la page d'édition ( post.php )

Dans la fonction d'envoi du courrier électronique (points 3. ), vous devez effectuer certaines tâches de sécurité:

  • vérifier si l'utilisateur actuel a des capacités d'édition
  • vérifier un nonce (précédemment ajouté en tant que champ masqué sur le formulaire)

Après cela, cette fonction devrait afficher des informations sur le processus d’envoi de courrier (message envoyé ou non) et les afficher sous forme json. De cette manière, js permet de donner un retour sur le modal. Si une erreur survient, c'est une bonne idée de générer également des informations de débogage, en vérifiant si le débogage est actif ou non dans WP.


Edit: Plugin Code

Dans la réponse originale, j'ai posté le code ici. Maintenant, je viens de créer un plugin pour inclure tout le workflow décrit ici en utilisant l'approche OOP. Le plugin est prêt pour la localisation et déjà localisé en italien.

Le plugin sous licence GPL sous licence et disponible sur GitHub .


Plugin Captures d'écran


The Reject and Notify button


The modal form


Success Message


Si quelque chose ne va pas et que le débogage est actif ...

Error message with debug

2
gmazzap