Ajouter une vue personnalisée à l’écran Tous les messages
TL;DR: Je vais travailler sur une série qui examine comment réaliser une tâche utile avec des taxonomies, des catégories probables, puis la refactoriser en un plugin orienté objet qui servira de plugin utilitaire pour les taxonomies, en général .
Une brève histoire des messages OOP
Il y a quelque temps, j’ai fait une longue série sur les principes de la programmation orientée objet (et j’ai essayé de partager une quantité décente sur la façon de réaliser certaines choses dans le contexte de WordPress).
J’ai également écrit un tas d’articles sur l’ensemble du paradigme au fil des ans pour ceux qui souhaitent rattraper certains de ces articles.
Et je m’en voudrais de ne pas partager qu’un bon ami à moi a littéralement écrit un livre sur le sujet aussi.
Et donc, alors que je réfléchissais à divers sujets sur lesquels écrire (après avoir pris une période de temps certes plus longue que prévu), j’ai pensé qu’il pourrait être utile de parler de choses pratiques que nous pouvons faire avec des API et des crochets normaux, puis refactorisez cela dans un type de plugin utilitaire.
Ajouter une vue personnalisée
Pour les besoins du travail que je vais partager dans cette démo, j’utilise les éléments suivants :
- Local par Flywheel avec un
https://sandbox.localdomaine - TablePlus pour l’accès à la base de données
- Visual Studio Code comme mon IDE
- Et les normes de codage PHP WDS pour tout le PHP que vous allez voir.
Si vous voulez suivre ce que j’ai en cours, utilisez tout ce qui précède (je ne sais pas si je partagerai tout mais si vous voyez des captures d’écran et des extraits de code, vous saurez d’où cela vient ).
Sur ce, voici une courte digression sur viewsWordPress (et ce n’est pas comme Views au sens de MVC ou MVVM ).
Vues WordPress
Au moment d’écrire ces lignes, il ne semble pas y avoir de déclaration claire et concise sur ce qu’est une vue WordPress. En termes de crochet disponible, nous avons views_edit-post.
Donc, si nous prenons ce crochet particulier et ce qu’il fait, peut-être que quelque chose comme ça suffirait :
Une vue WordPress est une page sur laquelle nous pouvons afficher tous les articles conformes à un ensemble de critères spécifiés.
Prêt à l’emploi, ce critère inclut généralement des publications telles que :
- Publié,
- Brouillons,
- Poubelle,
- Programmé,
- Etc.
Mais que se passe-t-il si vous avez un autre message qui a d’autres critères selon lesquels vous souhaitez filtrer ? Bien sûr, vous pouvez filtrer par la liste déroulante qui est présente à l’écran (par exemple, par catégorie), et c’est très bien, mais que se passe-t-il si vous souhaitez utiliser un critère personnalisé pour [une raison quelconque] ?
Par exemple, que se passe-t-il si vous ne voulez pas avoir à cliquer sur un certain élément, puis à filtrer, puis à afficher les publications ? Au lieu de cela, vous voulez voir un lien vers les critères, le nombre de publications qui correspondent aux critères, puis les filtrer ?
C’est là que la possibilité de modifier les vues entre en jeu.
Et pour les besoins de cet article, je vais expliquer comment introduire une nouvelle ancre en haut de la page qui répertoriera le nombre de messages pour une catégorie spécifiée.
Quelle est notre opinion ?
Dans ce cas, nous utiliserons Non catégorisé car une installation par défaut a déjà un article non catégorisé disponible et nous pouvons facilement modifier certains changements autour de cela.
Pour ce faire, nous allons écrire un mu-pluginafin qu’il soit placé dans le mu-pluginsrépertoire. Si votre installation n’en a pas, ajoutez le répertoire, puis ajoutez add-custom-view.phpau répertoire :
À partir de là, le fichier de plugin initial peut ressembler à ceci :
Dans un premier temps, nous procédons comme suit :
- Définition d’un espace de noms,
- Ajouter un filtre,
- Ensuite, configurez la fonction qui acceptera l’ensemble par défaut de
$viewset renverra le tableau de$viewsaprès qu’ils ont été modifiés.
Alors, que devons-nous faire à partir d’ici ?
L’ensemble des exigences
Pour réaliser ce que nous voulons, nous devons être capables de :
- Précisez le nom de la catégorie,
- Ajoutez le lien vers la catégorie ainsi que le nombre de messages avec cette catégorie à la liste des vues,
- La possibilité de déterminer si nous sommes sur la page de catégorie pour styliser correctement la liste
- La possibilité de filtrer par type de publication,
- Et un moyen de le tester.
Tout ce qui précède sera couvert dans le code plus tard dans l’article, mais la cinquième étape nécessite que vous créiez manuellement une catégorie afin que nous puissions facilement tester si le reste du code fonctionne.
Alors allez-y et faites-le. La catégorie peut être nommée n’importe quoi (j’ai utilisé Sample Category). Une fois cela fait, écrivons le code du reste du plugin.
Déterminer notre point de vue
Tout d’abord, je vais partager une fonction qui déterminera sur quelle page nous nous trouvons et fera l’une des deux choses suivantes :
- Si nous sommes sur une page qui a le même paramètre de chaîne de requête pour l’ID de notre catégorie, je fournirai un nom de classe ; sinon, nous retournerons une chaîne vide.
Pour ce faire, la fonction doit :
- Accepter un nom de catégorie,
- Initialiser une variable pour les attributs,
- Comparer les variables de chaîne de requête
- Déterminez si le nom de la catégorie et l’ID de la catégorie sont identiques,
- Et retournez la bonne valeur, si ce n’est pas le cas.
Voici à quoi ressemble ma fonction :
Cela pourrait également être simplifié avec un opérateur ternaire, mais pour le garder aussi lisible que possible, je le laisse tel quel pour le moment.
Déterminer le nom de la catégorie
Cette fonctionnalité particulière est en fait très simple et bien que nous ayons l’habitude de recevoir les commentaires des utilisateurs dans une grande partie de ce que nous faisons, nous allons coder en dur cette valeur.
Pour ce faire, nous allons simplement stocker ceci dans une variable qui est passée dans le reste du code.
Vous avez vu la variable précédemment transmise à la fonction ci-dessus et la verrez également utilisée dans la version finale du code source.
Récupérer les résultats des publications avec la catégorie
Pour cela, nous devons faire deux choses :
- Récupérer tous les
object_idenregistrements qui ont l’ID de cette catégorie, - Filtrez le contenu qui n’est pas destiné à ces messages.
Il y a deux ou trois choses que je veux mentionner ici: Tout d’abord, nous allons utiliser la get_cat_IDfonction fournie par WordPress. Cela récupère l’ID de la catégorie en fonction du nom entrant.
Deuxièmement, j’utilise deux fonctions – dont une est une boucle – pour examiner le statut de publication d’un élément. Ce n’est pas la manière la plus efficace de le faire. Au lieu de cela, nous pourrions utiliser une requête plus élégante pour récupérer uniquement les publications ; cependant, la première itération de ceci est destinée à montrer non seulement comment le faire à partir de zéro, mais aussi pour un public qui peut ne pas être aussi à l’aise avec d’autres aspects de l’écriture de code.
Avec cela, voici comment nous obtenons tous les enregistrements dans WordPress qui sont marqués comme non classés.
Et avec cela, nous prenons les résultats et les envoyons dans cette fonction qui renverra le nombre d’éléments qui ne sont que des messages.
Avec cela, nous avons la plupart de ce dont nous avons besoin pour commencer à assembler notre ancre de vue.
Générer une ancre de vue
Maintenant que nous avons toutes les fonctions nécessaires pour générer une ancre de vue, nous devons les assembler à la place de sprintfpour un formatage de chaîne sûr.
L’objectif est de générer une ancre qui :
- Ressemble au reste des ancres,
- Affiche le nombre de messages,
- Est en gras chaque fois que vous consultez lesdits messages.
Pour ce faire, nous devons créer le lien et ajouter les arguments de chaîne de requête appropriés. Cela signifie que nous allons créer un lien vers edit.phpavec des arguments pour :
- l’identifiant de la catégorie,
- le type de poste,
- et tous les messages qui ont cette catégorie.
Ensuite, nous devrons inclure :
- tous les attributs pour styliser le lien,
- le nom de la catégorie,
- et juste le contenu du message
post_type.
Pour ce faire, nous pouvons utiliser la fonction suivante :
Cela fait plusieurs choses :
- Accepte le tableau standard
$viewsde WordPress, - Ajoute notre ancre personnalisée comme indiqué ci-dessus,
- Le pousse dans le
$viewstableau, - Le renvoie à WordPress pour le rendu.
Et c’est tout!
Le tester
Pour tester cela, chargez votre navigateur et vous devriez voir un nouveau lien Non classé à côté du reste des ancres telles que Tout, Publié, Mine, Corbeille, Planifié, etc.
Après cela, modifiez une catégorie de messages et supprimez Non catégorisé, puis revisitez ou actualisez la page Tous les messages et vous verrez que le lien est actif et stylé, selon la façon dont vous le visualisez, et il inclut le nombre de messages qui sont catégorisés comme tel aussi.
Maintenant, vers GitHub
J’ai chargé la première itération de ce plugin sur GitHub afin que vous puissiez le télécharger et le placer dans votre mu-pluginsrépertoire pour le tester.
Dans les prochains articles, j’aimerais commencer par changer cela en un paradigme orienté objet afin que ce soient les changements qui arrivent dans le plugin et le contenu à venir dans les futurs articles.






