Création d’e-mails de commentaires personnalisés création d’un plug-in

Dans le premier article de cette série, nous avons examiné la variété de courriers électroniques envoyés par WordPress en fonction de leur utilisation. Nous avons également expliqué comment il est possible de personnaliser les courriers électroniques envoyés par WordPress sans avoir à externaliser la fonctionnalité vers des services tiers..

Nous avons également passé en revue les différents filtres fournis par WordPress pour la connexion au système afin de personnaliser nos emails. Cependant, en raison du nombre important de courriels envoyés par WordPress, nous avons choisi de jeter un regard précis sur les courriels de modération et de notification de commentaires..

Dans cet article, nous allons donc créer un plug-in qui nous permettra de personnaliser complètement l'apparence des courriels contenant des commentaires. En fin de compte, cela devrait vous donner un aperçu du fonctionnement des points d'ancrage disponibles, des éléments nécessaires pour personnaliser les e-mails et de la manière dont vous pouvez tirer parti de l'API WordPress pour personnaliser le contenu de vos e-mails..


Préparer le plugin

Parce que l'objectif de cet article est destiné à servir de tutoriel pour la construction d'un plugin, commençons par les étapes pratiques nécessaires pour nous lancer..

Bien que tout ce projet soit disponible sur GitHub à titre de référence, je vous recommande vivement de suivre les étapes décrites dans cet article. avant télécharger le plugin de travail. Après tout, il est conçu pour fournir une référence en cas de problème - et non pour vous aider à sauter rapidement à la conclusion..

Configurer le répertoire

La première chose à faire est de configurer un répertoire pour nos plugins. Nous pouvons le faire en créant un e-mails de commentaires personnalisés répertoire dans wp-content / plugins.

Ensuite, créez les répertoires et fichiers suivants:

  • lang /
  • lang / plugin.po
  • plugin.php

Notez que le lang répertoire sera utilisé pour conserver nos fichiers de localisation pour que d'autres puissent fournir des traductions.

Le fichier de localisation

Dans plugin.po ajoutez le texte suivant:

 msgstr "" msgstr "" "Projet-Id-Version: Emails de commentaires personnalisés \ n" "Signaler-Msgid-Bugs-To: \ n" "POT-Creation-Date: 2012-12-05 14: 17-0500 \ n "" PO-Revision-Date: 2012-12-05 14: 17-0500 \ n "" Dernier traducteur: Tom McFarlin \ n "" Équipe-langue: Tom McFarlin \ n "" Langue: en_US \ n "" MIME -Version: 1.0 \ n "" Content-Type: text / plain; jeu de caractères = UTF-8 \ n "" Encodage du transfert de contenu: 8bit \ n "" X-Poedit-KeywordsList: __; _ e \ n "" X -Poedit-Basepath:. \ N "" X-Poedit-SourceCharset: utf-8 \ n "" X-Generator: Poedit 1.5.4 \ n "" X-Poedit-SearchPath-0:… \ n "

Évidemment, vous voudrez personnaliser cela pour répondre à vos besoins, mais vous avez l’idée générale. Une fois cela fait, assurez-vous de prendre une copie de POEdit car nous allons utiliser ce programme pour générer les fichiers MO qui sont utilisés pour la localisation..

Le fichier de plugin

Nous allons adopter une approche orientée objet pour construire notre plugin, alors allons-y et décrivons la classe qui servira de noyau à notre plugin.

Pour ce plugin, nous devons fournir la définition de l'en-tête, un constructeur, trois fonctions et une méthode d'assistance. Assez facile, à droite?

  

Nous allons travailler à remplir ces fonctions tout au long de cet article, mais allez-y et passez en revue les commentaires de code afin que vous compreniez bien où nous nous dirigeons..


Mise en place du constructeur

La première chose à faire est de préparer le constructeur. Rappelez-vous que cette partie de la classe est responsable de l'initialisation du plug-in, de la configuration des informations de localisation et de la spécification des points d'ancrage..

Puisque nous avons déjà défini les fonctions nécessaires, il devrait être facile de suivre ce qui se passe, mais des commentaires de code ont été fournis pour des raisons d'exhaustivité..

 function __construct () // Chargement du domaine de texte du plugin add_action ('init', array ($ this, 'plugin_textdomain')); / * Définit les filtres pour l'approbation des commentaires et le courrier électronique de notification des commentaires. * Pour les besoins de cet exemple de plug-in, il s'agira du même courrier électronique. * Bien que dans un environnement de production, vous souhaitiez naturellement inclure les liens * typiques "Approuver", "Spam" et "Corbeille". * / // Moderation add_filter ('comment_moderation_headers', array ($ this, 'email_headers') ); add_filter ('comment_moderation_subject', array ($ this, 'email_subject'), 10, 2); add_filter ('comment_moderation_text', array ($ this, 'email_text'), 10, 2); // Notifications add_filter (' comment_notification_headers ', array ($ this,' email_headers ')); add_filter (' comment_notification_subject ', array ($ this,' email_subject '), 10, 2); add_filter (' comment_notification_subject ', array ($ this,' email_subject '), 10, 2); , 10, 2); // constructeur du bout

En bref, nous avons spécifié la fonction pour définir le domaine textuel du plugin à des fins de localisation. et nous avons spécifié les crochets que nous allons utiliser. À savoir, ceux pour la modération de commentaire et la notification de commentaire.


Localisation

Ensuite, définissons la fonction qui va récupérer les fichiers de localisation du plugin à partir du lang répertoire que nous avons créé lors de l'initialisation de ce plugin.

Il s'agit d'un simple appel sur une seule ligne fourni par l'API WordPress..

 / ** * Charge le domaine de texte du plugin pour la traduction * / fonction publique plugin_textdomain () load_plugin_textdomain ('custom-comment-email-locale', false, dirname (plugin_basename (__FILE__)). '/ Lang');  // fin plugin_textdomain

La clé à retenir de cette fonction particulière est la clé que nous avons utilisée pour identifier les paramètres régionaux de ce plugin. Pour ceux qui ne sont pas familiers, cela doit être unique car c'est ce qui permettra aux traducteurs de fournir des versions localisées de chaînes que nous ajouterons tout au long du reste de ce plugin..

Autre que cela, la localisation est bonne pour aller.


Les filtres

Avant de mettre en œuvre la fonctionnalité de nos courriels de notification, nous devons établir une distinction entre les importations. Plus précisément, nous devons parler de la différence entre les e-mails de modération et les e-mails de notification..

Par défaut, WordPress exige que tout commentaire laissé associé à une adresse électronique non reconnue par personne autorisée. Cela déclenche l'envoi d'un courrier électronique à l'administrateur du site (ou à l'auteur du message de blog) pour approuver le commentaire. À partir de ce moment, les commentaires seront automatiquement approuvés.

Cela dit, WordPress permet aux administrateurs de désactiver cette fonctionnalité de modération et de laisser à quiconque le soin de laisser un commentaire, même s’ils l’ont déjà fait..

J'en parle parce que cela influence la façon dont nous allons développer ce plugin. Il y a six points d'ancrage - trois pour la modération et trois pour la notification - tous similaires: ils sont liés à l'en-tête, à la ligne de sujet et au message d'un e-mail..

Les crochets sont les suivants:

  • comment_moderation_headers
  • comment_moderation_subject
  • comment_moderation_text
  • comment_notification_headers
  • comment_notification_subject
  • comment_notification_text

Pour simplifier les choses, nous associerons nos trois fonctions à tous six plugins. Cela signifie que les utilisateurs verront le même courrier électronique pour la modération et pour la notification..

Dans un environnement de production, ce n'est pas nécessairement idéal; cependant, pour montrer comment tirer parti de ces points d'ancrage et comment personnaliser les courriels, cela fonctionne bien..

L'objet

Tout d'abord, commençons par la tâche simple de mise à jour de la ligne d'objet de l'e-mail. Cela ne nécessite pas de travailler avec un balisage (ce qui est un peu pénible pour les clients de messagerie, comme vous le verrez bientôt :), et c'est une fonction simple que nous pouvons facilement personnaliser..

Pour notre exemple, réécrivons la ligne d'objet de l'e-mail pour lire:

[Titre du message] Hey There - On dirait que tu as un nouveau commentaire!

Pour ce faire, localisez le Sujet du courriel fonction, puis mettez-le à jour pour inclure les éléments suivants. Les commentaires de code sont fournis pour être complets, mais nous en discuterons un peu plus après la fonction:

 / ** * Crée l'objet personnalisé pour l'e-mail de notification de commentaire. * * @param string $ subject Contenu de l'objet * @ @param int $ comment_id Identifiant du commentaire pour lequel cet objet est envoyé * @return Objet de l'e-mail * @since 1.0 * / function email_subject ($ subject , $ comment_id) // Créez la ligne d’objet dans le format suivant: "[Titre du post] Hey Hey - On dirait que vous avez un nouveau commentaire!" $ subject = __ ("[", 'custom-comment-email-locale-'). $ this-> get_post_title ($ comment_id). __ ("]", 'custom-comment-email-locale'); $ subject. = ""; $ subject. = __ ("Hey There - On dirait que tu as un nouveau commentaire!", 'custom-comment-email-locale'); return $ subject;  // end filter_method_name

Notez que la fonction accepte deux paramètres: sujet et ID de commentaire. Le sujet est le sujet d'origine qui est transmis à la fonction. Ceci est utile si vous souhaitez ajouter ou ajouter du texte à la ligne d'objet, mais nous allons écrire notre propre texte pour qu'il soit écrasé..

Le commentaire_ID est utile car il nous permet de récupérer diverses informations telles que le message, son titre, etc. simplement en utilisant l'ID de commentaire..

En fait, c'est comme cela que nous récupérons le titre de l'article pour la ligne d'objet. Notez cependant que dans notre message, nous appelons $ this-> get_post_title ($ comment_id).

Une petite fonction d'assistance

C’est la fonction d’assistance que nous avons définie afin de nous aider à retrouver facilement le titre de l’article associé au commentaire donné. Nous l'avons résumé dans une fonction d'aide afin de pouvoir l'utiliser plus tard dans le plugin..

La fonction d'assistance est simple:

 / ** * Récupère l'ID de la publication associée à ce commentaire. * * @param int $ comment_id L'ID du commentaire que nous utilisons pour obtenir le titre du message * @return string Le titre du message du commentaire * @since 1.0 * / private function get_post_title ($ comment_id) $ comment = get_comment ($ comment_id); return get_the_title ($ comment-> comment_post_ID);  // end get_post_title

Clair, non? Obtenez une référence à l'objet de commentaire à l'aide de l'ID spécifié, puis renvoyez le titre de l'article associé à l'ID de ce commentaire..

À ce stade, n'hésitez pas à tester votre code. En supposant que vous ayez suivi les étapes décrites dans le premier article, vous devriez avoir une configuration d’environnement de développement qui envoie des courriels à votre boîte de réception..

Activez le plugin, laissez un commentaire sur le post et vous devriez voir une nouvelle ligne d'objet.

Neat, hein?

Le texte de l'e-mail

Ensuite, nous sommes prêts à commencer à définir le texte du courrier électronique. Dans notre plugin, le courrier électronique doit inclure le texte suivant:

  • Un en-tête qui se lit "Commentaire pour [Titre du message]"
  • Une zone pour le contenu qui se lit "Le contenu original de cet e-mail indique:" après quoi nous inclurons les commentaires originaux
  • Un simple pied de page indiquant s'il s'agit d'un commentaire normal, d'un rétrolien ou d'un pingback, et qui comprend l'adresse e-mail de l'auteur du commentaire..

Nous fournirons également des styles pour montrer comment nous pouvons facilement personnaliser l'aspect et la convivialité d'un courrier électronique..

Alors localisez le email_text fonction et inclure les éléments suivants:

 / ** * Crée un email personnalisé et stylisé utilisé pour informer les utilisateurs qu'ils ont un nouveau commentaire. * * @param string $ message Le contenu de l'e-mail * @ @ Param int $ comment_id L'ID du commentaire restant * @return Le contenu du corps personnalisé de l'e-mail * @since 1.0 * / function email_text ($ message, $ comment_id) // Récupérer le commentaire $ comment = get_comment ($ comment_id); // Définit l'en-tête $ message = '

'; $ message. = __ ('Comment for', 'custom-comment-email-locale'); $ message. = $ this-> get_post_title ($ comment_id); $ message. = '

'; $ message. = '
'; $ message. = '

'. __ ('Le contenu original de cet email se lit comme suit:', 'custom-comment-email-locale'). '

'; $ message. = $ comment-> comment_content; $ message. = '
'; // Déterminez quel type de commentaire il s'agit: $ comment_type = __ ('commentaire normal.', 'Custom-comment-email-locale-locale'); if ("! = $ comment-> comment_type) $ comment_type = __ ('rétrolien ou un pingback.', 'custom-comment-email-locale'); end if // Et définit le $ footer. = '
'; $ message. = __ ('Ce commentaire a été laissé par', 'custom-comment-email-locale'). 'comment_author_email. '">'. $ comment-> comment_author_email. '.'; $ message. = __ ('|', 'custom-comment-email-locale-'); $ message. = __ ('Ceci est un', 'custom-comment-email-locale-locale'). ''. $ comment_type. '.'; $ message. = '
'; return $ message; // end email_text

Bien que les commentaires du code soient relativement clairs, notez que nous procédons comme suit:

  • Récupérer le commentaire
  • Configuration d'un en-tête pour le courrier électronique (où nous récupérons également le titre du message à l'aide de notre fonction d'assistance)
  • Écrire le commentaire de code original
  • Définir un pied de page indiquant le type de commentaire et son auteur

Notez également que nous avons écrit certains styles inline. Je suppose que vous utiliserez Gmail en tant que client de messagerie pour tester ces emails; Cependant, chaque client de messagerie gère les styles différemment. Veillez donc à consulter ce tableau si vous le faites dans certains de vos projets prêts pour la production..

Une fois cela fait, déclenchez un autre email et vous devriez voir quelque chose comme:

Oops! C'est pas ce que nous voulons. Heureusement, c'est une solution facile et nécessite une ligne de code supplémentaire dans le plugin.

Réglage des en-têtes

Pour envoyer des messages HTML stylisés à l'aide de WordPress, nous devons définir correctement les en-têtes de l'e-mail. Pour ce faire, mettez à jour le email_headers fonction à ressembler à ceci:

 / ** * Définit les en-têtes de l'email envoyé pour l'email de notification de commentaire. * * @since 1.0 * / function email_headers () add_filter ('wp_mail_content_type', create_function (", 'return" text / html ";)); // end email_headers

Ceci informe le client de messagerie pour rendre le contenu au format HTML. Si vous avez bien agi, vous devriez voir quelque chose comme ce qui suit:

Beaucoup mieux!


Conclusion

De toute évidence, nous n'avons fait qu'effleurer toute la puissance de la personnalisation de vos emails basés sur WordPress. notamment si vous prenez le temps de générer des balises intéressantes, des styles élaborés, etc..

À mon avis, la chose la plus importante à comprendre est de savoir comment insérer les filtres fournis qui nous permettent de faire tout ce qui précède..

Espérons que cette série a fourni suffisamment d’informations pour vous aider à démarrer. N'oubliez pas de consulter le plugin sur GitHub et bonne chance avec ces emails personnalisés!


Ressources

  • Création d’e-mails de commentaires personnalisés - Partie 1: Comprendre l’API
  • Guide du moniteur de campagne pour le CSS dans les e-mails
  • Custom Custom Emails Plugin