Es scheint, dass sich viele Plugin-Entwickler die Zeit nehmen, Filter- / Aktions-Hooks hinzuzufügen, damit Benutzer die Funktionalität ihrer Produkte optimieren können. Was großartig ist, aber was sie oft nicht tun, ist eine Liste von Hooks und wie viele Argumente sie nehmen.
Hat jemand die beste automatisierte Möglichkeit gefunden, auf ein Plugin- (oder Theme-) Verzeichnis zu verweisen und eine Liste aller verfügbaren Hooks anzuzeigen?
Ich habe anscheinend einige Plugins, die nach Hooks suchen, aber soweit ich das beurteilen kann, zeigen sie Ihnen, welche tatsächlich aufgerufen werden, um eine bestimmte Seite zu rendern. Was ich bekomme, kann praktisch sein. Aber manchmal, wenn ich weiß, dass ich mit einem bestimmten Plugin interagiere, möchte ich jeden Ort kennen, an dem ich eine Aktion oder einen Filter einbinden kann.
Was ich also wirklich suche, ist etwas, das bei einem Plugin-Stammverzeichnis eine Liste erstellt, in der jedes Element Folgendes enthält:
- Etikett
- Typ (Aktion oder Filter)
- Anzahl der Argumente
- wo es in der Quelle (via
do_action()
oderapply_filter()
) genannt wird
Ein Skript wäre großartig, da dies vermutlich das Ganze gut HTMLifizieren und mir für jedes Plugin direkt in der Admin-Benutzeroberfläche zeigen könnte. Aber auch ein Befehlszeilenskript, das eine nützliche statische Datei ausgibt, wäre großartig.
Antworten:
Es gibt kein Skript oder Plugin, von dem ich weiß, dass es das tut, was Sie wollen. Wie Sie bereits angegeben haben, gibt es Skripte ( auch globale Variablen ), mit denen Sie Filter und Aktionen drucken können, die derzeit verwendet werden.
In Bezug auf ruhende Filter und Aktionen habe ich zwei sehr grundlegende Funktionen geschrieben ( mit etwas Hilfe hier und da ), die alle
apply_filters
unddo_action
Instanzen in einer Datei finden und dann ausdruckenGRUNDLAGEN
Wir verwenden das
RecursiveDirectoryIterator
,RecursiveIteratorIterator
undRegexIterator
Klassen PHP alle die PHP - Dateien in einem Verzeichnis zu erhalten. Als Beispiel habe ich auf meinem localhost verwendetE:\xammp\htdocs\wordpress\wp-includes
Wir werden dann die Dateien durchlaufen und
preg_match_all
alle Instanzen vonapply_filters
und suchen und zurückgeben ( )do_action
. Ich habe es so eingerichtet, dass es mit verschachtelten Instanzen von Klammern und auch mit möglichen Leerzeichen zwischenapply_filters
/do_action
und der ersten Klammer übereinstimmtWir werden dann einfach ein Array mit allen Filtern und Aktionen erstellen und dann das Array durchlaufen und den Dateinamen sowie die Filter und Aktionen ausgeben. Wir werden Dateien ohne Filter / Aktionen überspringen
WICHTIGE NOTIZEN
Diese Funktionen sind sehr teuer. Führen Sie sie nur in einer lokalen Testinstallation aus.
Ändern Sie die Funktionen nach Bedarf. Sie können entscheiden, die Ausgabe in eine Datei zu schreiben, eine spezielle Backend-Seite dafür zu erstellen, die Optionen sind unbegrenzt
OPTION 1
Die erste Optionsfunktion ist sehr einfach. Wir geben den Inhalt einer Datei als Zeichenfolge zurück
file_get_contents
, suchen nach denapply_filters
/do_action
Instanzen und geben einfach den Dateinamen und die Filter- / Aktionsnamen ausIch habe den Code zur leichteren Verfolgung kommentiert
Sie können at follow für eine Vorlage, ein Frontend oder ein Backend verwenden
Dies wird gedruckt
OPTION 2
Diese Option ist etwas teurer in der Ausführung. Diese Funktion gibt die Zeilennummer zurück, in der sich der Filter / die Aktion befindet.
Hier verwenden wir
file
, um die Datei in ein Array zu zerlegen, dann suchen wir den Filter / die Aktion und die Zeilennummer und geben sie zurückSie können at follow für eine Vorlage, ein Frontend oder ein Backend verwenden
Dies wird gedruckt
BEARBEITEN
Dies ist im Grunde so viel, wie ich tun kann, ohne dass die Skripte abgelaufen sind oder nicht genügend Speicherplatz zur Verfügung steht. Mit dem Code in Option 2 ist es so einfach, wie die Datei und die Zeile im Quellcode aufzurufen und dann alle gültigen Parameterwerte des Filters / der Aktion abzurufen. Wichtig ist auch, die Funktion und den weiteren Kontext abzurufen, in dem Der Filter / die Aktion wird verwendet
quelle
Klingt so, als ob WP Parser das tut, wonach Sie suchen. Es wird verwendet, um die offizielle Entwicklerreferenz zu generieren . Es listet Parameter, @ seit Tags und Verweise auf die Quelle auf. Es funktioniert mit allen WordPress-Plugins und kann über die Befehlszeile aufgerufen werden:
quelle
The Fast and the Furious
Die gute alte
*nix
Kommandozeile ist immer praktisch:Viele weitere Optionen über
#man grep
.Dann können wir sogar ein einfaches Bash-Skript erstellen
wp-search.sh
:und führen Sie es mit.
Hübsche Ausgabe
Wir können
--color
Attribute verwenden, um die Ausgabe von zu kolorierengrep
, aber beachten Sie, dass es nicht funktioniertless
.Eine andere Möglichkeit wäre, eine HTML-Tabelle für die Suchergebnisse zu generieren.
Hier ist ein
awk
Beispiel, das ich erstellt habe und das die Suchergebnisse als HTML-Tabelle in dieresults.html
Datei ausgibt :wo ich diesen Trick verwendet habe , um alle führenden Leerzeichen zu entfernen und diesen , um alle Felder außer dem ersten zu drucken.
Ich benutze
sed
hier nur, um nach dem zweiten Doppelpunkt (:
) zusätzlichen Platz hinzuzufügen , nur für den Fall, dass dort kein Platz ist.Skript
Wir könnten dies zu unserem
wp-search.sh
Skript hinzufügen :wo Sie das
/path/to/some/directory
und/path/to/results.html
an Ihre Bedürfnisse anpassen müssen.Beispiel - Suche nach einem Plugin
Wenn wir dies auf dem
wordpress-importer
Plugin versuchen mit:dann wird die
results.html
Datei angezeigt als:Beispiel - Durchsuchen des Kerns
Ich habe es mal auf den Kern getestet:
und es ist schnell!
Anmerkungen
Um zusätzlichen Kontext zu erhalten, verwenden wir möglicherweise das
-C NUMBER
von grep.Wir könnten die HTML-Ausgabe auf verschiedene Arten ändern, aber hoffentlich können Sie dies weiter an Ihre Bedürfnisse anpassen.
quelle