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.
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:
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:
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'); ?>
register_activation_hook
. C'est ici que nous devrions créer nos tables de base de données.dbDelta
fonction pour exécuter la requête SQL comme indiqué dans le code ci-dessus.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.
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. = ''; $ authorsList. = ''. get_avatar ($ author-> ID). ''. get_the_author_meta ('display_name', $ author-> ID). '
'. get_the_author_meta ('description', $ author-> ID). '
get_users
une fonction.user_can
une fonction.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'. $ authorsList. ''. $ actStatus. 'Entrer votre Email
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.
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'); ?>
wp_enqueue_script ('jquery')
suite
qui est dans le dossier du plugin.wp_register_style
et wp_enqueue_style
les fonctions. Il est également situé dans le dossier du plugin.plugins_url
fonction vous donnera le chemin du dossier du plugin actuel. C'est la meilleure façon d'inclure des scripts. Certaines personnes obtiennent l'URL du répertoire des plugins et ajoutent le nom du dossier du plugin pour obtenir le chemin. Ceci n'est pas recommandé et entraînera des erreurs lorsque le nom du dossier du plugin sera modifié..wp_localize_script
une fonction. ajaxUrl
- Obtient le chemin du fichier ajax dans WordPress.ajaxNonce
- Donne une clé unique à chaque demande ajax à des fins de validation.currentURL
- Obtient le chemin d'accès à l'URL actuelle afin d'identifier la page des contributeurs.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.
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.
subscribe_to_wp_authors
.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 WordPress0
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(); ?>
wp_verify_nonce
une fonction. Des valeurs de nonce différentes signifient que la demande AJAX doit être invalide et rejetée.is_email
.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.
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.
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));?>
suivis_auteurs; if ($ subsignedAuthorList! = ") $ subscribeAuthorList = explode (", ", $ subscribeAuthorList); else $ subscribeAuthorList = array (); if (! (in_array ($ authorId, $ subsignedAuthorList))) array_push ( $ subscribeAuthorList, $ authorId);?>
abonnés suivis
valeur de colonne dans le wp_author_subscribe
table.exploser
puis vérifiez si l'utilisateur est déjà abonné à l'auteur à l'aide du bouton in_array
une fonction. Ensuite, nous ajoutons l'identifiant de l'auteur à la liste des auteurs suivis de l'utilisateur..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 "));?>
$ authorSubscribersArray
et assigner à une variable appelée $ followersList
$ subscribeAuthorList
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.
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.
suivre
et vérifie si l'auteur est suivi par l'utilisateur.inArray
la fonction est utilisée pour cela et elle reviendra -1
si la chaîne de recherche n'est pas trouvée dans le tableau.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(); ?>
wp_author_subscribe
.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.
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