Obtener una lista de todas las acciones registradas

2 jul 2013, 17:47:20
Vistas: 56.2K
Votos: 44

Estoy intentando depurar un plugin que no desarrollé y quiero listar todas las acciones registradas. He leído este hilo de SO:

Pero es específico para un hook y trata sobre filtros, no acciones.

¿Existe alguna variable como $wp_filter o algo similar?

4
Comentarios

Usa este plugin para mostrar visualmente en una página https://wordpress.org/plugins/show-hooks/

Rafiq Rafiq
23 jun 2020 16:46:56

¿y tú eres el desarrollador de ese plugin, correcto?

alexwc_ alexwc_
24 ago 2020 05:57:40

Sí, hice este plugin para mí mismo y luego lo alojé en WordPress.

Rafiq Rafiq
25 ago 2020 18:59:24

@Rafiq deberías eliminar tu enlace show-hooks ya que ya no es válido.

Prof. Moriarty Prof. Moriarty
1 dic 2023 20:37:37
Todas las respuestas a la pregunta 2
4
60

Los filtros y acciones se asignan a hooks. Las funciones asignadas a hooks se almacenan en la variable global $wp_filter. Así que todo lo que tienes que hacer es usar print_r en ella.

print_r($GLOBALS['wp_filter']);

PD: La función add_action realiza una llamada a add_filter. Y esta última hace $wp_filter[$tag][$priority][$idx].




NOTA: puedes agregar directamente este código en functions.php, y verás un debug en tu sitio:

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

bueno, pero ¿dónde puedo depurarlos? intenté agregar if(WP_DEBUG == true){ global $wp_filter; print_r($wp_filter); } en index.php y obtuve NULL

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

error mío, no debería escribir global $wp_filter;

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

OK, ¿entonces lo resolviste?

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

No uses el hook wp si tienes problemas de memoria. Coloca el código sin hook en el functions.php.

jMike jMike
11 sept 2022 12:21:33
1

Pregunta original relacionada con los hooks de acción.

...Pero es específico para un hook y se trata de filtros, no de acciones.

¿Existe alguna variable como $wp_filter o algo así?

Entonces, la respuesta es Sí, existe. Es la variable global $wp_actions.

Consulta wp-includes/plugin.php alrededor de la línea 31 (para WP 6.4.2) donde primero se declara la variable $wp_actions como global ...sin ninguna descripción.

Desplázate hacia abajo hasta la función do_action() en la línea correspondiente. Lee su bloque de documentación.

* @global int[]     $wp_actions        Almacena el número de veces que se activó cada acción.

Entonces, esta variable es para almacenar los hooks de tipo acción que fueron activados.

Para cualquiera que llegue a esta página desde un motor de búsqueda y esté buscando filtros activados, sí está en $wp_filters NO en $wp_filter.

Para ver qué acciones fueron activadas. En tu código, engancha al hook shutdown (o cualquier acción que no sea demasiado temprana) y luego...

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

¡Gracias! La respuesta aceptada causó errores de memoria, incluso con 32GB. Y el array estaba lleno de información irrelevante.

Zade Zade
22 sept 2024 23:05:48