WordPress est bien connu pour son incroyable collection de plugins gratuits. Il y en a un pour presque tous les besoins
vous pouvez penser, de la sauvegarde de votre installation WordPress à demander une tasse de café
ou combattre le spam.
Mais il y a des moments où aucun des plugins disponibles ne semble vraiment faire le tour que vous recherchez. Pour vous aider dans des moments comme
que, ce tutoriel vous guidera à travers toutes les étapes de la construction d’un plugin WordPress simple avec des widgets avec des paramètres.
Écrire votre propre plugin n’est pas une science de la fusée réservée aux programmeurs les plus avisés. Tout ce dont tu as besoin
est une compréhension de base de
le langage de programmation PHP et quelques informations sur la manière dont WordPress s'attend à ce que votre plugin se comporte. Ce tutoriel vous fournira ce dernier.
Avant de commencer, laissez-moi vous présenter le concept du plugin et ce que nous essayons de réaliser avec..
"À venir ensuite" sera un plugin de widget qui interrogera un nombre donné de messages de blog programmés pour l'avenir et les listera dans la barre latérale du blog (ou ailleurs).
le propriétaire du blog décide de placer le widget). Le widget sera personnalisable de sorte que l'utilisateur puisse choisir le nombre de messages qu'il souhaite répertorier.,
si un résumé de la publication doit être affiché, et quel format de date devrait être. Les apparences du widget doivent être facilement personnalisables via CSS.
Voici un rapide aperçu de l'apparence du widget en action:
Commençons!
Les plugins dans WordPress sont des fichiers PHP qui ont été mis dans le wp-content / plugins
répertoire sous le répertoire d'installation de WordPress.
Pour des plugins simples qui s’intègrent parfaitement dans un seul fichier, comme celui que nous créons aujourd'hui, il suffit de créer un seul fichier PHP et de le télécharger vers le
répertoire plugin. Cependant, il est recommandé de toujours créer un répertoire distinct pour chaque plugin et aider ainsi les propriétaires de blogs à conserver leurs plugins.
organisé. Cela facilitera également l'extension de votre plugin si vous avez besoin d'y ajouter de nouveaux fichiers..
Créons un répertoire pour le plugin "Coming Next":
Dans ce nouveau répertoire, nous créons ensuite le fichier PHP principal du plugin. Appelons ça coming-next.php
.
Lors de la recherche de plugins, WordPress parcourt chaque fichier du répertoire de plugins à la recherche de commentaires identifiant les fichiers en tant que plugins. Cette
La section commentaire contient des informations de base sur le plugin et au minimum, doit contenir le nom du plugin..
Voici à quoi ressemblera le bloc de commentaires de notre plugin "Coming Next":
Enregistrez le fichier et accédez à la page des plugins dans votre zone d’administration WordPress. Le plugin, avec toutes les informations ajoutées dans le commentaire,
est déjà visible dans la liste des plugins:
Vous pouvez déjà activer le plugin, mais comme nous n'avons pas encore introduit de code, rien ne se passera. Nous avons besoin de fonctionnalités.
Dans sa forme la plus simple, un plugin WordPress n'est rien de plus qu'une ou plusieurs fonctions placées dans un fichier de plugin.
Toutes les fonctions créées dans les plugins sont visibles à la fois pour le thème actuel et les autres plugins actifs. Il est donc possible de
utilisez le système de plugins pour étendre la plate-forme avec de nouvelles fonctions, puis appelez-les directement à partir de votre thème.
Faisons-le d'abord et créons la fonction au cœur du plug-in "Coming Next", list_upcoming_posts ()
.
Un mot d’avertissement est en place avant de commencer: toutes les fonctions ajoutées dans les fichiers de plug-in seront visibles tout au long de votre
Installation WordPress, vous devez être très prudent lorsque vous les nommez. S'il y a deux fonctions du même nom
dans deux (ou plus) plugins différents, ils entreront en conflit et les choses ne fonctionneront pas.
Pour les plus gros plugins, c'est une bonne idée de faire de la programmation orientée objet et de créer des classes pour encapsuler des pièces.
de la fonctionnalité. Cela vous donnera plus de liberté pour nommer vos fonctions et vos variables. Dans de plus petits plugins comme
celui-ci, vous devez juste faire attention, et essayez d'utiliser des noms de fonction descriptifs que vous pensez que personne d'autre n'utilise.
function list_upcoming_posts ($ num_posts = 1, $ show_excerpt = false, $ text_format = "À venir le [date]") $ posts = get_posts ("numberposts =". $ num_posts. "& order = ASC & post_status = future"); écho "
Cette fonction utilise le get_posts () WordPress
pour récupérer autant de messages futurs que spécifié dans le $ num_posts paramètre, ou tous les futurs messages
si $ num_posts est supérieur au nombre réel disponible.
Ensuite, il affiche une liste comprenant les titres des articles, leurs dates prévues et l'extrait de l'article si $ show_excerpt est défini sur true.
Notez que nous devons utiliser le global $ post variable pour configurer les données de poste (voir ligne 10) pour les appels de fonction tels que
comme le titre() travailler. Maintenant, au cas où le modèle de blog doit avoir accès à la publication en cours après le rendu du plugin,
nous devons remettre le message original une fois que nous avons terminé (voir lignes 7 et 26-27). Sinon, le reste du contenu serait rendu en utilisant le dernier
poste qui a été mis en place en utilisant setup_postdata ().
Toutes nos félicitations! Vous venez d'écrire votre premier plugin WordPress et pouvez le tester en ajoutant cet appel quelque part dans votre modèle de blog:
Créez un article intitulé "Retour vers le futur" et programmez-le pour qu'il apparaisse sur votre blog le 1er janvier 2020. Voici ce que vous devriez voir:
Pour certains plugins, le simple fait d’avoir une fonction que vous pouvez appeler à partir de votre thème est largement suffisant. Mais pour ce plugin, je pense que laisser l'utilisateur
personnaliser la sortie via sa page d’administrateur WordPress fournira une belle touche finale. Et le système de widget WordPress est le moyen idéal pour
atteindre ce niveau de convivialité.
Si vous n'êtes pas encore familiarisé avec le concept de WordPress Widgets,
voici ce que dit la documentation WordPress à leur sujet:
Les widgets WordPress permettent d'ajouter facilement des éléments de conception, des gadgets, du contenu, des images et plus à votre barre latérale WordPress pour personnaliser
votre blog sans connaître HTML, PHP, ni aucun code. De nombreux plugins WordPress sont maintenant livrés avec une version de widget pour permettre un ajout facile à la barre latérale..
Si votre thème prend en charge les widgets, vous pouvez accéder à l'onglet Widgets de la section Conception de votre zone d'administration WordPress et attribuer des widgets aux différents
positions que le concepteur de thème leur a créées:
Pour que notre plug-in "Coming Next" fonctionne comme un widget, nous devons d'abord créer une fonction permettant de rendre le widget. Comme nous pouvons réutiliser le
list_upcoming_posts () fonction que nous avons créée plus tôt, cette tâche sera plutôt simple.
Voici le code pour le widget dans sa forme la plus simple:
fonction widget_coming_next ($ args) extract ($ args, EXTR_SKIP); echo $ before_widget; list_upcoming_posts (); echo $ after_widget;
La fonction consiste simplement à extraire le balisage HTML que le concepteur de thème a configuré pour être rendu avant ($ before_widget) et
après ($ after_widget) chaque widget, puis le rend dans la liste des publications à venir.
le extrait() la fonction est standard PHP.
Il prend les champs du tableau donné ($ args) et crée des variables locales à partir d’eux. Une autre façon de
faire la même chose aurait été de référencer le tableau directement en utilisant "before_widget" et "after_widget" comme index de tableau.
Maintenant, le widget sait comment se rendre. Mais avant de pouvoir l'ajouter à un blog, nous devons encore dire à WordPress de l'ajouter à la liste.
des widgets sur la page d'administration. Ceci est fait en créant une fonction d’initialisation qui enregistre le widget de la barre latérale et en ajoutant
un plugin hook pour appeler cette fonction après tout WordPress
les plugins ont été chargés en mémoire.
fonction widget_coming_next_init () wp_register_sidebar_widget (COMING_NEXT_WIDGET_ID, __ ('Coming Next'), 'widget_coming_next'); // Enregistrer le widget sur WordPress add_action ("plugins_loaded", "widget_coming_next_init");
La fonction d'initialisation appelle wp_register_sidebar_widget ()
enregistrer le widget sur WordPress. La fonction nécessite trois paramètres: un identifiant unique pour le widget, un nom à utiliser sur les widgets
page dans la zone d'administration et le nom de la fonction qui rendra le widget.
Pour faciliter les choses, si nous avons besoin de changer l'identifiant unique, j'ai créé une constante pour celui-ci. De cette façon, quand on utilise la même constante partout,
nous n'aurons qu'à le mettre à jour à un endroit. Ajoutez cette définition de constante au début du fichier de widget, juste après le bloc de commentaires qui identifie le plugin:
define (COMING_NEXT_WIDGET_ID, "widget_coming_next");
Maintenant, lorsque vous allez consulter la page "Widgets", vous verrez le nouveau widget qui attend d’être ajouté sur le blog. Et quand vous ajoutez
le widget à une position de widget, vous verrez les messages à venir apparaissent là où vous les avez placés!
Enfin, pour compléter le plugin, nous allons créer un menu de paramètres permettant de mettre à jour les préférences du widget. La boîte de paramètres contiendra tous les mêmes
paramètres que le list_upcoming_posts () la fonction prend comme paramètres. Comme cette fonction a déjà été faite et
il sait comment gérer les paramètres, il ne reste plus qu'à créer le menu des paramètres, à le sauvegarder et à le récupérer..
Tout comme pour le rendu du widget, nous allons créer une fonction qui restitue le menu des paramètres et stocke les paramètres.
dans le stockage persistant, puis informez WordPress de la fonction afin qu’elle sache l’afficher lors de l’ajout ou de la modification du widget.
Voici le code pour stocker et récupérer les paramètres:
fonction widget_coming_next_control () $ options = get_option (COMING_NEXT_WIDGET_ID); if (! is_array ($ options)) $ options = array (); $ widget_data = $ _POST [COMING_NEXT_WIDGET_ID]; if ($ widget_data ['submit']) $ options ['num_posts'] = $ widget_data ['num_posts']; $ options ['coming_up_text'] = $ widget_data ['coming_up_text']; $ options ['show_excerpt'] = $ widget_data ['show_excerpt']; update_option (COMING_NEXT_WIDGET_ID, $ options); // Rendu le formulaire $ num_posts = $ options ['num_posts']; $ coming_up_text = $ options ['coming_up_text']; $ show_excerpt = $ options ['show_excerpt']; // Le formulaire HTML ira ici
Le cœur de cette fonction sont ces deux appels à l’API WordPress:
get_option () sur la ligne 2 et
update_option () à la ligne 13.
update_option () peut être utilisé pour enregistrer n’importe quelle variable dans la base de données WordPress en tant que paire clé-valeur et get_option à
lis le.
Par exemple, dans l'extrait de code ci-dessus, vous verrez que sur la ligne 13, update_option () est utilisé pour stocker le $ options tableau avec le
clé COMING_NEXT_WIDGET_ID.
Pour rendre les choses plus organisées, au lieu de sauvegarder chaque variable en tant que paire clé-valeur séparée, nous les plaçons dans un
tableau ($ options) qui peut être sauvegardé en une fois.
Ce tableau contient alors toutes les données liées à ce widget. Le tableau est chargé au début de la fonction pour que les données soient disponibles
pour le rendu du formulaire de paramètres et des paramètres existants, ils peuvent être utilisés par défaut et ne seront pas perdus lors de l'envoi du formulaire..
le widget_coming_next_control () la fonction est appelée à la fois lorsque le formulaire de configuration est affiché et lorsque l'utilisateur appuie sur le bouton "Enregistrer les modifications"
pour stocker les paramètres. Pour identifier si le formulaire a été soumis ou non, nous utilisons un champ caché
appelé COMING_NEXT_WIDGET_ID [submit]. Si le champ caché a été enregistré, nous lisons dans les paramètres de la
forme et enregistrez-les (lignes 8-14). Et dans les deux cas, que les données soient sauvegardées ou non, le formulaire est rendu.
En parlant de formes, cette partie essentielle manque toujours. Copiez le formulaire ci-dessous et mettez-le à la fin de la fonction que nous venons de créer
(juste après la ligne 21, avant l'accolade fermante):
?>
Si vous examinez attentivement le formulaire, vous remarquerez qu'il n'y a pas de balises d'ouverture ou de fin de formulaire. C’est parce que tous les widgets actifs sont
mis dans le même formulaire, rendu par WordPress, et sont enregistrés à la pression de "Enregistrer les modifications." Cela sera utile lorsque vous déciderez d'écrire
un widget qui peut être ajouté plusieurs fois, tel que le widget de texte WordPress (pour cela, vous devez être conscient de la présence de plusieurs widgets
et tous leurs états différents en même temps). Mais pour le moment, cela signifie simplement que vous devez faire attention à la manière dont vous nommez les champs dans votre partie du formulaire..Dans ce plugin, j'ai décidé d'utiliser le COMING_NEXT_WIDGET_ID constante comme identifiant pour définir lequel des champs appartient à ce widget.
En utilisant le widget_id [field_id] notation dans le prénom paramètres de notre contribution balises rend les choses
bien pour nous car ils sont analysés dans un tableau avec field_id comme index de tableau.Après avoir créé la fonction d’écran des paramètres, nous devons toujours indiquer à WordPress de l’utiliser. Ceci est fait avec le crochet suivant.
Ajoutez-le à la widget_coming_next_init () fonction que nous avons créée précédemment:wp_register_widget_control (COMING_NEXT_WIDGET_ID, __ ('Next suivant'), 'widget_coming_next_control');Maintenant, lorsque vous allez ajouter ou modifier le widget, vous verrez que de nouvelles options sont apparues:
Le widget a maintenant des paramètresEnfin, nous allons faire en sorte que le rendu du widget utilise les paramètres définis dans la zone de paramètres. C'est très simple: tout ce dont nous avons besoin
est de lire les paramètres en utilisant le get_option () une fonction. Remplacer la fonction de rendu de widget créée précédemment par
cette nouvelle version:fonction widget_coming_next ($ args) extract ($ args, EXTR_SKIP); $ options = get_option (COMING_NEXT_WIDGET_ID); // Interroge la prochaine publication planifiée $ num_posts = $ options ["num_posts"]; $ show_excerpt = $ options ["show_excerpt"]; $ coming_up_text = $ options ["coming_up_text"]; echo $ before_widget; list_upcoming_posts ($ num_posts, $ show_excerpt, $ coming_up_text); echo $ after_widget;C'est tout. Vous avez maintenant créé un widget WordPress avec des paramètres!
La sortie semble toujours plutôt terne, mais avec une petite touche de CSS, elle s'animera et correspondra parfaitement au thème de votre blog.
Le widget À venir Suivant en action