Obține o listă cu toate acțiunile înregistrate
Încerc să debughez un plugin pe care nu l-am dezvoltat eu și vreau să listez toate acțiunile înregistrate. Am citit acest thread de pe SO:
Dar este specific pentru un singur hook și este despre filtre, nu despre acțiuni.
Există vreo variabilă precum $wp_filter
sau ceva similar?
Filtrele și acțiunile sunt ambele atribuite cârligelor (hooks). Funcțiile atribuite cârligelor sunt stocate în variabila globală $wp_filter
. Deci tot ce trebuie să faci este să folosești print_r
pentru a le afișa.
print_r($GLOBALS['wp_filter']);
PS. Funcția add_action
face un apel către add_filter
. Iar aceasta din urmă folosește $wp_filter[$tag][$priority][$idx]
.
NOTĂ: poți adăuga direct acest cod în functions.php, și vei vedea un debug pe site-ul tău:
add_action('wp', function(){ echo '<pre>';print_r($GLOBALS['wp_filter']); echo '</pre>';exit; } );

super, dar unde le pot depana? am încercat să adaug if(WP_DEBUG == true){ global $wp_filter; print_r($wp_filter); } în index.php și am primit NULL

Întrebare originală legată de hook-uri de tip acțiune.
...Dar este specifică unui singur hook și este despre filtre, nu acțiuni.
Există vreo variabilă precum $wp_filter sau ceva similar?
Deci, răspunsul este Da, există. Este variabila globală $wp_actions
.
Consultați wp-includes/plugin.php în jurul liniei 31 (pentru WP 6.4.2) unde este declarată prima dată variabila $wp_actions
ca global
...fără nicio descriere.
Derulați în jos până la funcția function do_action()
. Citiți doc-block-ul lor.
* @global int[] $wp_actions Stochează numărul de ori fiecare acțiune a fost declanșată.
Deci, această variabilă este folosită pentru a stoca hook-urile de tip acțiune care au fost declanșate.
Pentru oricine care ajunge pe această pagină de la un motor de căutare și caută filtre declanșate, da, acestea se găsesc în $wp_filters
NU $wp_filter
.
Pentru a vedea ce acțiuni au fost declanșate. În codul tău, folosește hook-ul shutdown
(sau orice acțiune care nu este prea devreme) și apoi...
global $wp_actions;
echo '<pre>'.htmlspecialchars(print_r($wp_actions, true)).'</pre>';
