Ottenere una lista di tutte le azioni registrate

2 lug 2013, 17:47:20
Visualizzazioni: 56.2K
Voti: 44

Sto cercando di debuggare un plugin che non ho sviluppato e vorrei elencare tutte le azioni registrate. Ho letto questa discussione su SO:

Ma è specifica per un singolo hook e riguarda i filtri, non le azioni.

Esiste una variabile come $wp_filter o qualcosa di simile?

4
Commenti

Usa questo plugin per mostrare visivamente su una pagina https://wordpress.org/plugins/show-hooks/

Rafiq Rafiq
23 giu 2020 16:46:56

e sei lo sviluppatore di quel plugin, corretto?

alexwc_ alexwc_
24 ago 2020 05:57:40

Sì, ho creato questo plugin per me stesso e poi l'ho ospitato su WordPress.

Rafiq Rafiq
25 ago 2020 18:59:24

@Rafiq dovresti rimuovere il tuo link show-hooks poiché non è più valido.

Prof. Moriarty Prof. Moriarty
1 dic 2023 20:37:37
Tutte le risposte alla domanda 2
4
60

I filtri e le azioni vengono entrambi assegnati agli hook. Le funzioni assegnate agli hook sono memorizzate nella variabile globale $wp_filter. Quindi tutto ciò che devi fare è utilizzare print_r su di essa.

print_r($GLOBALS['wp_filter']);

PS. La funzione add_action effettua una chiamata a add_filter. E quest'ultima esegue $wp_filter[$tag][$priority][$idx].




NOTA: puoi aggiungere direttamente questo codice in functions.php e vedrai un debug sul tuo sito:

add_action('wp', function(){ echo '<pre>';print_r($GLOBALS['wp_filter']); echo '</pre>';exit; } );
2 lug 2013 17:52:11
Commenti

bene, ma dove posso fare il debug? ho provato ad aggiungere if(WP_DEBUG == true){ global $wp_filter; print_r($wp_filter); } in index.php ma ho ottenuto NULL

Jacer Omri Jacer Omri
2 lug 2013 17:57:07

colpa mia, non avrei dovuto scrivere global $wp_filter;

Jacer Omri Jacer Omri
2 lug 2013 18:03:39

OK, quindi hai risolto?

Krzysiek Dróżdż Krzysiek Dróżdż
2 lug 2013 18:12:55

Non utilizzare l'hook wp se riscontri problemi di memoria. Inserisci il codice senza hook nel file functions.php.

jMike jMike
11 set 2022 12:21:33
1

Domanda originale relativa agli action hook.

...Ma è specifico per un hook e riguarda i filtri, non le azioni.

Esiste una variabile come $wp_filter o qualcosa di simile?

Quindi, la risposta è Sì, esiste. È la variabile globale $wp_actions.

Fai riferimento a wp-includes/plugin.php intorno alla riga 31 (per WP 6.4.2) dove viene dichiarata per la prima volta la variabile $wp_actions come global ...senza alcuna descrizione.

Scorri verso il basso fino alla funzione function do_action(). Leggi il loro doc-block.

* @global int[]     $wp_actions        Memorizza il numero di volte in cui ogni azione è stata attivata.

Quindi, questa variabile serve per memorizzare gli hook di tipo action che sono stati attivati.

Per chiunque arrivi su questa pagina da un motore di ricerca e stia cercando i filtri attivati, sì si trova in $wp_filters NON $wp_filter.

Per vedere quali azioni sono state attivate. Nel tuo codice, agganciati all'azione shutdown (o a qualsiasi azione che non sia troppo precoce) e poi...

global $wp_actions;
echo '<pre>'.htmlspecialchars(print_r($wp_actions, true)).'</pre>';
24 dic 2023 15:50:52
Commenti

Grazie! La risposta accettata causava errori di memoria, anche con 32GB. E l'array era pieno di informazioni irrilevanti.

Zade Zade
22 set 2024 23:05:48