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

43

Dans quel ordre add_action les hooks s'exécutent?

i.e.

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



EDIT:

J'ai également posté ma solution.

    
posée T.Todua 29.09.2014 - 09:59

5 réponses

74
  

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

     

- L'aventure des hêtres de cuivre

Réunissons donc des 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 do_action appels suivants sont passé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 le nombre de fois que chacune d'entre elles est déclenchée, vous pouvez utiliser par exemple:

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

ou cette version simplifié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 plug-in Query Monitor de John Blackbourn. (Je ne suis pas lié à ce plugin)

    
réponse donnée birgire 29.09.2014 - 11:04
19

Voici le tableau de charge de WordPress

Source de @Rarst

    
réponse donnée Robert hue 29.09.2014 - 10:04
2

Solution trouvée!

Merci @birgire pour votre bonne réponse. J'ajouterai à cela que muplugins_loaded n'est parfois pas déclenché. Je vais donc utiliser plugins_loaded comme premier accrochage (à ce moment-là, l'autorisation de l'utilisateur n'est pas encore terminée. Si vous le souhaitez, pour vérifier l'autorisation de l'utilisateur, alors init est la plus ancienne pour cela) ...

p.s. il existe d'excellents plugins:

1) Moniteur de requêtes : vous pouvez voir tout ce qui se passe sur la page. load, 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):

2) WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS :
a) Les crochets de débogage ( actions ) exécutent la liste sur votre site.
b) Voir la durée de chaque action (non fonctionnelle):

    
réponse donnée T.Todua 23.12.2017 - 21:22
1

Il n'y a pas deux demandes identiques. Un moyen rapide et sale (mais très précis) de savoir ce qui se passe consiste à ajouter temporairement 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);
    
réponse donnée Walf 24.11.2017 - 09:48
1

La séquence de base est également disponible sur la documentation officielle:

enlace

    
réponse donnée Stratboy 28.05.2018 - 16:57

Lire d'autres questions sur les étiquettes