Un simple plugin WordPress pour suivre vos auteurs préférés

Le taux de croissance incroyable de WordPress a simplifié le développement de sites Web. Les sites de tutoriels populaires tels que le réseau Tuts + utilisent WordPress pour alimenter leurs sites Web. Ces sites Web fournissent des centaines de nouveaux didacticiels, articles et mises à jour quotidiennement. Il n'est donc pas facile de suivre chaque article, même avec votre lecteur de flux RSS. Votre lecteur de flux sera rapidement rempli de nouveaux lecteurs et, en tant que lecteurs, nous ne sommes intéressés que par certains sujets. Donc, idéalement, nous aurions besoin d’une méthode fournissant les articles qui nous intéressent. En général, les auteurs se spécialisent dans des domaines spécifiques. Si Darren Rowse écrit un article sur les blogs, tout le monde voudra le lire. De même, nous avons des auteurs préférés que nous aimerions lire à chaque fois.

Donc, dans ce tutoriel, je vais créer un plugin WordPress simple qui vous permet de vous abonner à vos auteurs préférés. Vous recevrez un email chaque fois que votre auteur favori publiera un article. Par conséquent, vous ne manquerez plus jamais des articles importants.


Que développons-nous aujourd'hui?

Notre plugin permettra essentiellement aux utilisateurs de recevoir des notifications sur les nouvelles publications des auteurs abonnés. Vous trouverez ci-dessous les fonctionnalités et composants que nous développerons au cours du didacticiel:

  • Créer un Shortcode pour lister tous les auteurs
  • Autoriser les utilisateurs à suivre et à ne plus suivre les auteurs
  • Envoyer des emails quand un nouveau post est publié

Étape 1 Créer le fichier de plugin

Je ne vais pas expliquer cette étape en détail, car vous savez peut-être déjà qu'un fichier de plug-in WordPress doit comporter une section de commentaires en haut pour identifier les détails du plug-in. J'ai nommé le plugin WP Suivre les auteurs. Alors créez un nouveau répertoire dans le / wp-content / plugins répertoire appelé wp-suivre-auteurs et créer le index.php fichier avec les détails suivants:

 

Étape 2 Création de tables lors de l'activation d'un plugin

Nous avons besoin de deux tables de base de données pour ce plugin. Je les nomme wp_author_subscribe et wp_author_followers (où wp_ sera en réalité le préfixe de la base de données configuré). La table wp_author_subscribe conservera le courrier électronique des abonnés, le statut d'activation et la liste des auteurs suivis. le wp_author_followers La table contiendra l'identifiant de l'auteur et la liste des suiveurs. Nous devons créer ces tables lors de l'activation du plugin. Considérons donc le code suivant.

 query ("DROP TABLE IF EXISTS $ wpdb-> prefix author_subscribe"); $ sql1 = "CREATE TABLE $ wpdb-> préfixe author_subscribe (id int (11) NON NULL AUTO_INCREMENT, code d’activation varchar (255) NON NULL, email varchar (75) NON NULL, état int (11) NON NULL, texte d’auteurs suivi NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ sql2 = ("CREATE TABLE $ wpdb-> préfixe author_followers (id int (11) NON NULL AUTO_INCREMENT, author_id int (11) NON NULL, texte de la liste des suiveurs NON NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1 ; "); dbDelta ($ sql2);  register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
  • Nous pouvons créer une fonction à appeler dans l’activation du plugin en utilisant register_activation_hook. C'est ici que nous devrions créer nos tables de base de données.
  • Les tables de base de données peuvent être créées à l'aide d'une requête personnalisée WordPress. Mais la méthode recommandée consiste à utiliser le dbDelta fonction pour exécuter la requête SQL comme indiqué dans le code ci-dessus.

Étape 3 Code court pour afficher la liste des auteurs

Ensuite, nous devons afficher la liste des auteurs disponibles pour que les utilisateurs puissent suivre. Je vais donc créer un shortcode qui vous permet d’afficher la liste des auteurs dans une page donnée. Commençons à créer le shortocde.

 

J'ai créé un shortcode appelé contributeurs et une fonction appelée contributeurs pour afficher la liste des auteurs. Tout le code lié à l'affichage des auteurs est situé dans cette fonction. Vous devez créer une page spéciale pour montrer vos contributeurs. Vous pouvez le nommer comme vous le souhaitez. Puis placez le shortcode [contributeurs] à l'intérieur de la page et cliquez sur le bouton Publier. Nous n’avons toujours pas de code dans la fonction shortcode. Alors regardons cela.

Afficher la liste des auteurs

Certains blogs permettent aux utilisateurs de s'inscrire. Ils seront généralement créés en tant qu'abonnés et ceux-ci ne peuvent pas créer de publications. Ainsi, lorsque nous affichons la liste des utilisateurs, nous devons nous assurer que les utilisateurs ayant la capacité de créer des publications. Regardons le code ci-dessous.

 '; foreach ($ authors en tant que $ author) if (user_can ($ author-> ID, 'publish_posts')) $ authorsList. = '
'. get_avatar ($ author-> ID). '

'. get_the_author_meta ('display_name', $ author-> ID). '

'. get_the_author_meta ('description', $ author-> ID). '

'; $ authorsList. = '
'; ?>
  • Nous obtenons tous les utilisateurs utilisant le get_users une fonction.
  • Ensuite, en parcourant la liste des utilisateurs, nous devons vérifier si l’utilisateur est autorisé à publier des publications à l’aide de la touche user_can une fonction.
  • Nous créons du code HTML pour connaître les auteurs qui peuvent publier des articles. J'ai affiché l'image de l'auteur en utilisant gravatar, son nom et sa description..
  • Ensuite, nous créons un bouton pour suivre les auteurs. La chose importante ici est que j'ai spécifié un auteur de données attribuer et définir l'ID de l'auteur.

Nous avons maintenant le code HTML pour afficher les auteurs. Alors regardons le code pour afficher le formulaire d'inscription.

  
Suivre les auteurs WP
'. $ actStatus. '
Entrer votre Email
'. $ authorsList. '
'; echo $ output; ?>

Dans ce simple formulaire HTML, nous avons un champ de texte permettant à un utilisateur de saisir son adresse électronique. Ensuite, nous avons 2 boutons pour vous abonner et charger la liste des auteurs suivis. Je vais utiliser AJAX tout au long de ce plugin. L'ID et les classes d'éléments HTML jouent donc un rôle essentiel. Si vous vérifiez le fichier du plugin, vous remarquerez que je n’ai pas expliqué le code en haut de la page. contributeurs une fonction. Il sert à vérifier l'activation et sera expliqué plus tard. Maintenant nous avons le formulaire complet avec la liste des auteurs et cela ressemblera à l'image du tutoriel montrée en haut.


Étape 4 Configuration de JavaScript et CSS

Maintenant, la partie fonctionnelle commence et nous avons besoin de styles CSS et de fichiers Javascript pour supporter nos fonctionnalités. Donc, le code suivant vous montrera comment inclure les scripts et les styles nécessaires de la manière recommandée.

  admin_url ('admin-ajax.php'), 'ajaxNonce' => wp_create_nonce ('follow-nonce'), 'currentURL' => $ _SERVER ['REQUEST_URI']); wp_localize_script ('followjs', 'ajaxData', $ config_array);  add_action ('wp_enqueue_scripts', 'apply_wp_author_scripts'); ?>

Étape 5 S'abonner au plugin

Afin de suivre les auteurs, un utilisateur doit s'abonner en utilisant son email. Une fois qu'un utilisateur a saisi son courrier électronique et cliqué sur le bouton S'abonner, il sera abonné au service et un courrier électronique sera envoyé pour activer le service. Voyons ce qu'il se passe quand on clique sur le bouton s'abonner.

Création d'une demande d'abonnement AJAX

 

J'ai joint une fonction jQuery à l'aide de l'événement en direct à appeler lorsque le bouton Souscrire (#subscribeAuthors) est cliqué. Il vérifie si l'email est valide en utilisant une expression régulière. Ensuite, nous créons la demande AJAX pour appeler la fonction subscribe. Je vais expliquer la demande AJAX ici.

Gestion des requêtes AJAX dans WordPress

Afin de gérer les requêtes AJAX du plugin, nous pouvons utiliser le code suivant:

 

Il y a des actions appelées wp_ajax_nopriv et wp_ajax pour traiter les demandes AJAX pour les utilisateurs déconnectés et connectés respectivement. Ces actions sont suivies d'un trait de soulignement et de l'action définie dans la demande AJAX à partir du fichier JS. Donc dans ce cas, le subscribe_to_wp_authors l'action appellera le subscribe_to_wp_authors une fonction.

"Assurez-vous d'utiliser mourir() à la fin de chaque fonction AJAX dans votre code PHP depuis le retour de WordPress 0 ou -1 en fonction du résultat de la demande AJAX, ce qui pourrait provoquer des erreurs dans les chaînes JSON. "

Voyons ce qui se passe à l'intérieur de la fonction:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe où email =% s", $ subscriber_email)); if (count ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> prepare ("INSERT INTO $ wpdb-> préfixe author_subscribe (email, code_activation, status) VALEURS (% s,% s,% s)", $ subscriber_email, $ code d'activation, "désinscrit")); $ activation_link = add_query_arg ('confirmer-suivre', $ code_activation, get_site_url (). $ _POST ['url']); if ($ result) if (wp_mail ($ subscriber_email, "Abonnement de WP Author", "Cliquez sur $ activation_link pour l'activer.")) echo json_encode (array ("success" => "Vérifiez l'adresse e-mail pour obtenir le lien d'activation.") )  else echo json_encode (array ("error" => "Email Error."));  else echo json_encode (array ("error" => "Le courrier électronique existe déjà."));  else echo json_encode (array ("error" => "Veuillez entrer un email valide"));   mourir(); ?>

Ensuite, une fois que l'utilisateur a cliqué sur le lien d'activation dans l'e-mail, il sera redirigé vers le site Web avec un message de réussite de l'activation et son adresse e-mail sera chargée dans la zone de texte. Le contrôle d'activation est effectué en haut de la fonction de shortcode. J'ai omis l'explication plus tôt, maintenant il est temps de jeter un oeil à ce code dans le contributeurs une fonction.

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe où code_activation =% s et status = 0"), $ activationCode); if (count ($ activationCheck)! = 0) $ activationResult = $ wpdb-> requête ($ wpdb-> prepare ("update $ wpdb-> préfixe author_subscribe set status = 1 où code_activation =% s"), $ code d'activation); if ($ activationResult) $ confirmedEmail = $ activationCheck [0] -> email; $ actStatus = "Activation réussie"; $ actClass = "success";  else $ actStatus = "L'activation a échoué"; $ actClass = "error"; ?>

Un utilisateur peut visiter la page des auteurs directement ou en utilisant le lien de confirmation. Nous vérifions d’abord si le confirmer-suivre Le paramètre est disponible dans l'URL pour déterminer s'il s'agit d'une demande d'activation ou non. Ensuite, nous recherchons une activation dans la table de base de données pour le code d'activation fourni dans l'URL. Ensuite, nous mettons à jour le statut d'activation de l'utilisateur et affichons le message de résultat avec la classe CSS relative. Maintenant, tout le processus de souscription est terminé. Maintenant, l'utilisateur peut commencer à suivre les auteurs.


Étape 6 Suivre les auteurs

Maintenant, l'activation est réussie et votre email est affiché dans la boite email. C’est le moment où vous pouvez choisir des auteurs dans la liste et cliquer sur le bouton "Suivre" bouton. Voyons comment faire en sorte qu'un utilisateur suive un auteur. Une demande AJAX sera faite dès que vous cliquerez sur le bouton Suivre d'un auteur spécifique..

 

Chaque auteur a un bouton de suivi devant son nom qui contient une classe CSS appelée suivre. Ainsi, chaque fois qu'un clic sur un bouton est cliqué, le $ jq (". suivre"). live ("cliquer") la fonction sera déclenchée et nous ne pouvons obtenir que le bouton cliqué en utilisant $ jq (this). Puis nous faisons une nouvelle requête AJAX comme précédemment avec l'action follow_wp_authors.

La seule différence est que nous ajoutons un paramètre supplémentaire appelé author_id à la demande. Nous pouvons obtenir l'identifiant de l'auteur en utilisant le auteur de données attribut que nous avons défini dans la section display. Voyons maintenant le code PHP pour gérer cette requête AJAX..

 

Nous devons ajouter deux nouvelles actions pour cette demande AJAX, comme nous l'avons fait précédemment. La fonction follow_up_authors contiendra le code utilisé pour suivre un auteur. Comme il ne sert à rien d’expliquer encore et encore le code répétitif, je vais expliquer les sections nécessaires. Donc, je vous suggère de regarder la fonction dans le fichier plugin tout en lisant le tutoriel. La partie initiale de la fonction vérifiera le nonce, validera le courrier électronique et vérifiera l'activation dans la base de données. Alors allons de l'avant.

Ajout d'utilisateurs pour suivre

Puisque nous utilisons des tables personnalisées dans notre plugin, même si de nombreux auteurs sont disponibles sur le site, notre table des auteurs sera initialement vide. Ainsi, lorsqu'un utilisateur clique sur le bouton Suivre d'un auteur, nous pouvons vérifier si l'auteur est disponible dans notre tableau. Sinon, nous faisons l'entrée initiale en insérant l'auteur dans la table. Considérons le code suivant:

 id; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Vérifiez si l'auteur existe et insérez-le s'il n'est pas encore disponible à suivre * / $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare (" select * from $ wpdb- > prefix author_followers où author_id =% d "), $ authorId); if (nombre ($ authorResult) == '0') $ resultat = $ wpdb-> requête ($ wpdb-> prepare (" INSERT INTO $ wpdb-> prefix author_followers (author_id) VALUES (% d) ", $ authorId));?>

Liste des auteurs suivis des utilisateurs destinataires

 suivis_auteurs; if ($ subsignedAuthorList! = ") $ subscribeAuthorList = explode (", ", $ subscribeAuthorList); else $ subscribeAuthorList = array (); if (! (in_array ($ authorId, $ subsignedAuthorList))) array_push ( $ subscribeAuthorList, $ authorId);?>

Réception de la liste des abonnés auteurs et finalisation Suivre

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers où author_id =% d"), $ authorId); if (count ($ authorResult) == '1') if ($ authorResult [0] -> followers_list! = ") $ authorSubscribersArray = exploser (", ", $ authorResult [0] -> followers_list); else $ authorSubscribersArray = array (); if (! (in_array ($ subscriberID, $ authorSubscribersArray))) array_push ($ authorSubscribersArray, $ subscriberID); // Liste d'utilisateurs qui suit l'auteur spécifique $ followersList = implode ("," , $ authorSubscribersArray); // Liste des auteurs suivie par l'utilisateur spécifique $ subscribeAuthorList = implode (",", $ subscribeAuthorList); $ resultat = $ wpdb-> requête ($ wpdb-> prepare ("update $ wpdb-> prefix) author_followers set followers_list =% s où author_id =% d "), $ followersList, $ authorId); $ resultat = $ wpdb-> requête ($ wpdb-> prepare (" met à jour $ wpdb-> préfixe author_subscribe défini sur follow_authors =% s où email =% s "), $ subscribeAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" success "));?>

Étape 7 Auteurs désabonnés

Si ce plugin doit être efficace, les utilisateurs peuvent avoir besoin de la fonctionnalité permettant de ne plus suivre les auteurs et de suivre les auteurs à tout moment. Je vais expliquer le processus de désinscription d'un auteur. Comme il est très similaire au processus suivant, je vais omettre les codes répétitifs dans l'explication..

Le bouton en ligne avec tous les auteurs suivis sera affiché comme Suivant. Lorsque vous passez la souris sur le bouton, le texte change de couleur Se désabonner. Lorsque vous cliquez sur le bouton, une autre demande AJAX sera formulée pour «désapprouver» l'auteur. Puisque seul le nom de l'action est différent du code ci-dessus, je ne l'inclurai pas ici. Vous pouvez regarder $ jq (". suivant"). live ("clic", fonction () dans le suite fichier.

La fonction utilisée pour désabonner l'utilisateur est unfollow_wp_authors. Ce code est similaire à la fonction auteur suivante. Nous pouvons mettre le code commun dans une seule fonction à l'avenir si vous êtes prêt à étendre le plugin. Dans la section suivante des auteurs, nous avons ajouté l’auteur à la liste, si ce n’est pas déjà disponible. Dans ce cas, nous supprimons simplement l'auteur de la liste s'il existe déjà. Le code ci-dessous vous montre les changements par rapport à la fonction auteur suivante.

  $ valeur) if ($ authorId == $ valeur) unset ($ subscribeAuthorList [$ key]);  foreach ($ authorSubscribersArray as $ key => $ value) if ($ subscriberID == $ value) unset ($ authorSubscribersArray [$ key]); ?>

Vous pouvez voir qu'au lieu de pousser les auteurs vers le tableau, nous les supprimons en utilisant la fonction unset.


Étape 8 Chargement des informations suivantes sur l'auteur

Initialement, l'adresse e-mail sera vide lorsque vous chargerez la page avec la liste des auteurs car nous n'avons pas de procédure pour identifier l'utilisateur actuel. Ensuite, l'utilisateur doit entrer l'e-mail et cliquer sur le bouton de chargement pour obtenir la liste avec les détails suivants de chaque utilisateur. Cela va être une autre requête AJAX similaire aux précédentes et vous pouvez jeter un coup d’œil sur le code en utilisant $ jq ("# loadFollowers"). live ("click", function () . J'expliquerai la section de résultat de la requête car elle est légèrement différente des précédentes.

 

Jetons un coup d'œil à la fonction permettant de charger la liste des auteurs suivants à partir du serveur:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe où email =% s et status = 1"), $ subscriber_email); if (count ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe où id =% d"), $ subscriberID); if (count ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> follow_authors; $ userFollowedAuthors = explode (",", $ userFollowedAuthors); echo json_encode (array ("authors" => $ userFollowedAuthors));  else echo json_encode (array ("error" => "Veuillez entrer un email valide"));   mourir(); ?>

Désormais, les utilisateurs sont abonnés au service et peuvent suivre et ne plus suivre les auteurs à tout moment. La partie finale et la plus importante du didacticiel consiste à envoyer des courriers électroniques aux abonnés lorsqu'un article est publié par un auteur. Commençons.


Étape 9: Envoi d’e-mails lorsque des publications sont publiées

Nous devons déclencher une action lorsqu'un utilisateur publie un nouveau message. WordPress fournit un ensemble d'actions appelées Transitions post-statut pour réaliser cette fonctionnalité. J'ai mis en place quatre transitions qui pourraient être déclenchées lorsque vous publiez un message..

 

Les actions ci-dessus appellent le notify_author_followers fonctionne chaque fois qu'une publication est convertie en un état publié à partir d'un des états nouveaux, brouillons, en attente ou futurs. Alors envoyons des emails en utilisant le notify_author_followers une fonction.

 post_author; $ authorDisplayName = get_the_author_meta ('display_name', $ publishedPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers où author_id =% d"), $ publishedPostAuthor); if (nombre ($ authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_list; if ($ authorsFollowersList! = ") $ au