web-dev-qa-db-fra.com

Comment obtenir la séquence d'exécution des actions/actions de WordPress?

Dans quel ordre les add_action hooks sont-ils exécutés?

c'est à dire.

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




MODIFIER:

J'ai aussi posté ma solution.

45
T.Todua

"Données! Données! Données!" cria-t-il avec impatience. "Je ne peux pas faire de briques sans argile."

- L'aventure des hêtres de cuivre

Rassemblons donc quelques données réelles à partir d’une installation sans plug-in et du thème TwentyTwelve activé avec un seul widget Texte.

Pour la page d’accueil, les appels do_action suivants sont effectués dans l’ordre suivant:

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 vous souhaitez vérifier l'ordre des actions et combien de fois chacune d'elles est déclenchée, vous pouvez utiliser par exemple:

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

ou cette version raffinée:

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

});

pour obtenir la liste suivante:

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: Vous devriez également consulter l'excellent Query Monitor plugin de John Blackbourn. (Je ne suis pas lié à ce plugin)}

80
birgire

Voici le tableau de charge de WordPress

WordPress Load Chart

Source par @Rarst

19
Robert hue

Solution trouvée!

Merci @birgire pour cette belle réponse. J'ajouterai à cela que muplugins_loaded n'est parfois pas déclenché. Je vais donc utiliserplugins_loadedcomme premier accrochage (à ce moment-là, l'autorisation de l'utilisateur n'est pas encore terminée. Si vous souhaitez vérifier l'autorisation de l'utilisateur, alors init est le plus ancien pour ça) ...

p.s. il existe d'excellents plugins:

1) Moniteur de requêtes - Vous pouvez voir tout ce qui se passe sur le chargement de la page, c'est-à-dire la durée de chaque fonction exécutée et bien plus encore (voir toutes les captures d'écran sur la page du plugin):

 enter image description here 

2)WP-DEBUG-BAR+WP-DEBUG-SLOW-ACTIONS:
a) Déboguer les hooks ( actions ) sur votre site.
b) Voir la durée de chaque action (non fonction):  enter image description here 

2
T.Todua

La séquence de base se trouve également sur la documentation officielle:

https://codex.wordpress.org/Plugin_API/Action_Reference

1
Luca Reghellin

Aucune deux demandes ne sont exactement les mêmes. Un moyen rapide et sale (mais très précis) de savoir ce qui se passe est de temporairement ajouter une ligne au début de la fonction do_action dans wp-includes/plugin.php qui enregistre le $tag, par exemple:

if (isset($some_get_or_post_trigger_var)) file_put_contents(ABSPATH . 'action.log', "$tag\n", FILE_APPEND);
1
Walf