¿Cómo obtener la secuencia de ejecución de enganches / acciones de WordPress?

43

¿En qué orden se ejecutan add_action ganchos?

es decir,

init
wp_head
wp_footer
after_theme_setup 
etc...
???
???
???



EDITAR:

También he publicado mi solución.

    
pregunta T.Todua 29.09.2014 - 09:59

5 respuestas

74
  

"¡Datos! ¡Datos! ¡Datos!" gritó con impaciencia. "No puedo hacer ladrillos sin   arcilla. "

     

-La aventura de las hayas de cobre

Así que reunamos algunos datos reales de una instalación sin complementos y el tema TwentyTwelve se activó con un solo widget de texto.

Para la página de inicio, las siguientes llamadas do_action se realizan en el siguiente orden:

muplugins_loaded
registered_taxonomy
registered_taxonomy
registered_taxonomy
registered_taxonomy
registered_taxonomy
registered_post_type
registered_post_type
registered_post_type
registered_post_type
registered_post_type
plugins_loaded
sanitize_comment_cookies
setup_theme
unload_textdomain
load_textdomain
after_setup_theme
load_textdomain
load_textdomain
auth_cookie_malformed
auth_cookie_valid
set_current_user
init
registered_post_type
registered_post_type
registered_post_type
registered_post_type
registered_post_type
registered_taxonomy
registered_taxonomy
registered_taxonomy
registered_taxonomy
registered_taxonomy
widgets_init
register_sidebar
register_sidebar
register_sidebar
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_register_sidebar_widget
wp_loaded
parse_tax_query
parse_tax_query
posts_selection
template_redirect
admin_bar_init
add_admin_bar_menus
get_header
wp_head
wp_enqueue_scripts
wp_print_styles
wp_print_scripts
get_template_part_content
begin_fetch_post_thumbnail_html
end_fetch_post_thumbnail_html
get_template_part_content
get_template_part_content
get_template_part_content
get_template_part_content
get_template_part_content
get_template_part_content
get_template_part_content
get_template_part_content
get_template_part_content
begin_fetch_post_thumbnail_html
end_fetch_post_thumbnail_html
get_sidebar
dynamic_sidebar_before
dynamic_sidebar
dynamic_sidebar_after
get_footer
twentytwelve_credits
wp_footer
wp_print_footer_scripts
wp_before_admin_bar_render
wp_after_admin_bar_render
shutdown

Si desea verificar el orden de las acciones y cuántas veces se dispara cada una, entonces puede usar, por ejemplo:

add_action( 'shutdown', function(){
    print_r( $GLOBALS['wp_actions'] ); 
});

o esta versión prectificada:

add_action( 'shutdown', function(){
    foreach( $GLOBALS['wp_actions'] as $action => $count )
        printf( '%s (%d) <br/>' . PHP_EOL, $action, $count );

});

para obtener la siguiente lista:

muplugins_loaded (1) 
registered_taxonomy (10) 
registered_post_type (10) 
plugins_loaded (1) 
sanitize_comment_cookies (1) 
setup_theme (1) 
unload_textdomain (1) 
load_textdomain (3) 
after_setup_theme (1) 
auth_cookie_malformed (1) 
auth_cookie_valid (1) 
set_current_user (1) 
init (1) 
widgets_init (1) 
register_sidebar (3) 
wp_register_sidebar_widget (12) 
wp_loaded (1) 
parse_request (1) 
send_headers (1) 
parse_tax_query (2) 
parse_query (1) 
pre_get_posts (1) 
posts_selection (1) 
wp (1) 
template_redirect (1) 
wp_default_scripts (1) 
wp_default_styles (1) 
admin_bar_init (1) 
add_admin_bar_menus (1) 
get_header (1) 
wp_head (1) 
wp_enqueue_scripts (1) 
wp_print_styles (1) 
wp_print_scripts (1) 
loop_start (1) 
the_post (10) 
get_template_part_content (10) 
begin_fetch_post_thumbnail_html (2) 
end_fetch_post_thumbnail_html (2) 
loop_end (1) 
get_sidebar (1) 
dynamic_sidebar_before (1) 
dynamic_sidebar (1) 
dynamic_sidebar_after (1) 
get_footer (1) 
twentytwelve_credits (1) 
wp_footer (1) 
wp_print_footer_scripts (1) 
admin_bar_menu (1) 
wp_before_admin_bar_render (1) 
wp_after_admin_bar_render (1) 
shutdown (1) 

PS: También deberías ver el excelente Query Monitor de John Blackbourn. (No estoy relacionado con este complemento)

    
respondido por el birgire 29.09.2014 - 11:04
19

Aquí está el gráfico de carga de WordPress

Fuente por @Rarst

    
respondido por el Robert hue 29.09.2014 - 10:04
2

¡Solución encontrada!

Gracias @birgire por una buena respuesta. Añadiré a eso, muplugins_loaded a veces no se activa, así que usaré plugins_loaded como el primer enlace más (pero en ese momento, la autorización del usuario aún no está terminada. Si desea para verificar la autorización del usuario, entonces init es el primero para eso) ...

p.s. Existen excelentes complementos:

1) Monitor de consultas : puede ver todo lo que sucede en la página carga, es decir, la duración de cada función ejecutada y mucho más (ver todas las capturas de pantalla en la página del complemento):

2) WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS :
a) los enlaces de depuración ( acciones ) ejecutan la lista en su sitio.
b) Consulte la duración de cada acción (no funciona):

    
respondido por el T.Todua 23.12.2017 - 21:22
1

No hay dos solicitudes exactamente iguales. Una forma rápida y sucia (pero muy precisa) de averiguar qué está pasando es temporalmente agregar una línea al inicio de la función do_action en wp-includes/plugin.php , que registra $tag , por ejemplo :

if (isset($some_get_or_post_trigger_var)) file_put_contents(ABSPATH . 'action.log', "$tag\n", FILE_APPEND);
    
respondido por el Walf 24.11.2017 - 09:48
1

La secuencia básica también se puede encontrar en los documentos oficiales:

enlace

    
respondido por el Stratboy 28.05.2018 - 16:57

Lea otras preguntas en las etiquetas