Widgets WordPress : refactorisation, partie 5
Dans le post précédent, nous avons créé un registre qui va être utilisé pour stocker toutes les différentes classes chargées de donner à notre widget sa fonctionnalité.
Pour ce faire, il y aura une variété d’autres classes introduites, mais avant d’y aller, nous devons ajouter le registre au bootstrap du plugin (et encore moins créer un bootstrap pour le plugin).
Plus précisément, voici où nous nous sommes arrêtés :
Comme mentionné précédemment dans le post, nous devons ajouter ceci au bootstrap du plugin. Pour ce faire, cependant, nous devons définir notre propre filtre afin de pouvoir facilement passer le registre autour du reste du plugin (le moment venu).
Donc, dans cet article, nous allons nous concentrer sur cela.
Le passe-partout du widget WordPress : refactorisation, partie 5
Si vous avez suivi la série jusqu’à présent, vous devriez être en bonne position spécifiquement pour ajouter le registre afin que nous y ayons accès tout au long du plugin.
Pour ce faire, cependant, suppose que vous savez comment définir vos filtres. Dans WordPress, nous utilisons tout le temps des actions et des filtres.
La chose à propos de ces crochets est qu’ils sont déjà définis, cependant. Alors, comment définissons-nous notre filtre ?
Voyons comment faire exactement cela.
1 Définir notre filtre
Tout d’abord, nous devons comprendre quelques concepts :
- qu’est-ce qu’un filtre,
- comment ajouter un filtre,
- comment introduire notre registre dans le filtre
- comment récupérer la classe du filtre.
Heureusement, tout ce qui précède est facile à expliquer.
Qu’est-ce qu’un filtre ?
En termes simples, les crochets nous permettent d’appeler WordPress à des moments précis pendant l’exécution du programme. Les actions sont généralement réservées au comportement ; Les filtres sont réservés aux données.
De plus, les filtres nous permettent de travailler avec des données spécifiques dans l’application – il peut s’agir de données préexistantes ou même de nouvelles données. Et dans notre cas, ce sera la classe Registry qui contient des références à d’autres données.
Ajout d’un filtre
L’ajout d’un filtre est facile. Il comporte trois parties :
- appeler add_filter ,
- définir un identifiant unique pour le filtre,
- transmettre des informations au filtre qui peuvent être renvoyées chaque fois qu’il est appelé.
Pour nous, je vais identifier notre registre comme le filtre wpWidgetRegistry. Notez cependant qu’il est important que vous choisissiez un nom unique pour votre implémentation, car si vous ne le faites pas, vous pourriez vous retrouver avec des collisions avec d’autres données si un autre plugin utilise le même identifié.
Quoi qu’il en soit, l’ajout d’un filtre effectue une tâche simple :
Accrochez une fonction ou une méthode à une action de filtre spécifique.
Cela signifie donc que nous devons définir une méthode avec notre ID. En raison de la nature de PHP, nous n’avons pas besoin d’utiliser une fonction distincte.
Au lieu de cela, nous pouvons utiliser une fonction anonyme.
Les fonctions anonymes, également appelées fermetures, permettent la création de fonctions qui n’ont pas de nom spécifié. Ils sont surtout utiles en tant que valeur des paramètres de rappel, mais ils ont de nombreuses autres utilisations.
La fonction anonyme que nous allons définir acceptera une référence au plugin comme argument, puis la renverra chaque fois que le filtre sera appelé (ce qui sera montré plus loin dans cet article).
Transmission d’informations à notre filtre
Maintenant que tout cela est couvert, nous pouvons passer par le processus de création d’une instance de notre registre, définir un filtre, puis ajouter le registre, afin qu’il soit accessible dans toute l’application.
Ainsi, dans le fichier principal du plugin, c’est-à-dire le fichier wordpress-widget-boilerplate.php, nous ajoutons les lignes de code suivantes :
<?php
namespace WordPressWidgetBoilerplate;
use WordPressWidgetBoilerplateUtilitiesRegistry;
// More to come...
Ce qui précède déclare l’espace de noms dans lequel réside le registre. Ensuite, nous ajoutons le bloc de code suivant sous le chargeur automatique :
<?php
// Setup a filter so we can retrieve the registry throughout the plugin.
$registry = new Registry();
add_filter('wpWidgetRegistry', function() use ($registry) {
return $registry;
});
Notez que lorsque vous visez à activer le plugin, il ne s’activera pas et générera une erreur. C’est à cause de l’absence d’un chargeur automatique qui sera discuté dans le prochain post.
2 Récupération de notre registre
Étant donné que le registre est défini dans le bootstrap du plugin et se fait grâce à l’utilisation d’un filtre, nous pouvons accéder au registre n’importe où dans notre plugin en appelant notre filtre personnalisé.
Par exemple, disons que nous sommes dans une autre classe et que nous devons obtenir une référence au registre. Pour ce faire, nous pouvons faire cet appel :
<?php
// Retrieve the registry anywhere in the plugin.
$registry = apply_filters('wpWidgetRegistry', null);
Et c’est tout. Facile, non? Tant que tout a été correctement ajouté au registre – ce qui sera bientôt couvert – nous pourrons alors accéder à chacun d’eux via les identifiants uniques que nous avons utilisés dans le post précédent.
Le chargeur automatique
Nous commençons maintenant à utiliser des espaces de noms et à utiliser d’autres classes. Cela signifie que nous allons devoir utiliser des chargeurs automatiques.
Donc, avant d’entrer dans la refactorisation de la classe entière telle qu’elle est actuellement, nous allons faire un léger détour dans certaines des fonctionnalités de Composer pour voir comment il est utilisé pour générer un chargeur automatique (en plus des choses que nous sommes déjà l’utiliser pour gérer la qualité de notre code source).

