Il semble que de nombreux développeurs de plugins prennent le temps d'ajouter des filtres / actions pour permettre aux utilisateurs de modifier les fonctionnalités de leurs produits. Ce qui est génial, mais ce qu'ils ne font souvent pas, c'est de fournir une liste de crochets et le nombre d'arguments qu'ils prennent.
Quelqu'un a-t-il trouvé la meilleure façon automatisée de pointer vers un répertoire de plugins (ou de thèmes) et de voir une liste de tous les hooks disponibles?
J'ai l'impression que certains plugins recherchent des crochets, mais pour autant que je sache, ils vous montrent lesquels sont réellement appelés pour rendre une page donnée. Ce que je reçois peut être pratique. Mais parfois, si je sais que j'interagis avec un plugin particulier, je veux savoir à quel endroit il peut me permettre d'accrocher une action ou un filtre.
Donc ce que je recherche vraiment, c'est que, étant donné un répertoire racine de plugin, il créera une liste où chaque élément comprend:
- étiquette
- type (action ou filtre)
- nombre d'arguments
- où il est appelé (via
do_action()
ouapply_filter()
) dans la source
Un script serait génial car cela pourrait vraisemblablement joliment HTMLifier le tout et me le montrer directement dans l'interface d'administration pour chaque plugin. Mais même un script de ligne de commande qui génère un fichier statique utile serait génial.
Réponses:
Il n'y a aucun script ou plugin à ma connaissance pour faire ce que vous voulez. Comme vous l'avez indiqué, il existe des scripts ( même des variables globales ) que vous pouvez utiliser pour imprimer des filtres et des actions actuellement utilisés.
En ce qui concerne les filtres et les actions dormants, j'ai écrit deux fonctions très basiques ( avec une aide ici et là ) qui trouvent tout
apply_filters
et lesdo_action
instances dans un fichier puis l'imprimeLES BASES
Nous utiliserons les
RecursiveDirectoryIterator
,RecursiveIteratorIterator
et lesRegexIterator
classes PHP pour obtenir tous les fichiers PHP dans un répertoire. Par exemple, sur mon hôte local, j'ai utiliséE:\xammp\htdocs\wordpress\wp-includes
Nous allons ensuite parcourir les fichiers et rechercher et retourner (
preg_match_all
) toutes les instances deapply_filters
etdo_action
. Je l'ai configuré pour correspondre aux instances imbriquées de parenthèses et également pour faire correspondre les espaces blancs possibles entreapply_filters
/do_action
et la première parenthèseNous allons simplement créer un tableau avec tous les filtres et actions, puis parcourir le tableau et afficher le nom de fichier et les filtres et actions. Nous ignorerons les fichiers sans filtres / actions
NOTES IMPORTANTES
Ces fonctions sont très chères. Exécutez-les uniquement sur une installation de test locale.
Modifiez les fonctions selon vos besoins. Vous pouvez décider d'écrire la sortie dans un fichier, créer une page spéciale pour cela, les options sont illimitées
OPTION 1
La première fonction d'options est très simple, nous retournerons le contenu d'un fichier sous forme de chaîne en utilisant
file_get_contents
, rechercherons les instancesapply_filters
/do_action
et sortirons simplement le nom de fichier et les noms de filtre / actionJ'ai commenté le code pour un suivi facile
Vous pouvez utiliser au suivi sur un modèle, frontend ou backend
Cela imprimera
OPTION 2
Cette option est un peu plus coûteuse à exécuter. Cette fonction renvoie le numéro de ligne où le filtre / l'action peut être trouvé.
Ici, nous utilisons
file
pour exploser le fichier dans un tableau, puis nous recherchons et renvoyons le filtre / l'action et le numéro de ligneVous pouvez utiliser au suivi sur un modèle, frontend ou backend
Cela imprimera
ÉDITER
C'est essentiellement autant que je peux le faire sans que les scripts expirent ou manquent de mémoire. Avec le code de l'option 2, c'est aussi simple que d'aller dans ledit fichier et ladite ligne dans le code source, puis d'obtenir toutes les valeurs de paramètres valides du filtre / de l'action, et aussi, ce qui est important, d'obtenir la fonction et le contexte dans lequel le filtre / action est utilisé
la source
On dirait que WP Parser fait ce que vous cherchez. Il est utilisé pour générer la référence officielle du développeur . Il répertorie les paramètres, les balises @since et les références à la source. Il fonctionne avec tous les plugins WordPress et est accessible via la ligne de commande:
la source
Le rapide et le furieux
La bonne
*nix
ligne de commande est toujours pratique:Beaucoup plus d'options via
#man grep
.Ensuite, nous pouvons même créer un simple script bash
wp-search.sh
:et exécutez-le avec.
Jolie sortie
Nous pouvons utiliser l'
--color
attribut pour coloriser la sortie degrep
, mais notez qu'il ne fonctionnera pas avecless
.Une autre option serait de générer un tableau HTML pour les résultats de la recherche.
Voici un
awk
exemple que j'ai construit qui produit les résultats de la recherche sous forme de tableau HTML, dans leresults.html
fichier:où j'ai utilisé cette astuce pour supprimer tous les espaces blancs de tête et celle-ci pour imprimer tous les champs sauf le premier.
J'utilise
sed
ici juste pour ajouter de l'espace supplémentaire après le deuxième deux-points (:
), juste au cas où il n'y aurait pas d'espace là-bas.Scénario
Nous pourrions ajouter ceci à notre
wp-search.sh
script:où vous devez ajuster le
/path/to/some/directory
et/path/to/results.html
à vos besoins.Exemple - Recherche d'un plugin
Si nous essayons ceci sur le
wordpress-importer
plugin avec:alors le
results.html
fichier s'affichera comme:Exemple - Recherche dans le noyau
Je l'ai testé pour le noyau:
et c'est rapide!
Remarques
Pour obtenir un contexte supplémentaire, nous pourrions utiliser le
-C NUMBER
grep.Nous pourrions modifier la sortie HTML de diverses manières, mais j'espère que vous pourrez l'ajuster davantage à vos besoins.
la source