Wie bekomme ich die Hook-Run-Sequenz von WordPress?

In welcher Reihenfolge / Reihenfolge werden add_action Hooks ausgeführt?

dh

 init wp_head wp_footer after_theme_setup etc.. 


BEARBEITEN:

Ich habe auch meine Lösung als Antwort unten gepostet.

Solutions Collecting From Web of "Wie bekomme ich die Hook-Run-Sequenz von WordPress?"

“Daten! Daten! Daten!” er weinte ungeduldig. “Ich kann keine Ziegel ohne Ton machen.”

-Das Abenteuer der Kupferbuchen

Also lasst uns einige echte Daten von einer Installation ohne Plugins sammeln und das Twenty Twelve-Thema mit nur einem einzigen Text-Widget aktivieren.

Für die Homepage werden folgende do_action Aufrufe in der folgenden Reihenfolge ausgeführt:

 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 

Wenn Sie die Reihenfolge der Aktionen und die Anzahl der Wiederholungen überprüfen möchten, können Sie beispielsweise Folgendes verwenden:

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

oder diese verschönerte Version:

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

um die folgende Liste zu erhalten:

 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: Du solltest auch das großartige Query Monitor Plugin von John Blackbourn ausprobieren. (Ich bin nicht mit diesem Plugin verwandt)

Hier ist das WordPress-Lastdiagramm

WordPress Load Chart

→ Quelle von @Rarst

Keine zwei Anfragen sind genau gleich. Ein schneller und schmutziger Weg, um herauszufinden, was vor sich geht, ist das Hinzufügen einer Zeile zum Start der function do_action in wp-includes/plugin.php die das $tag protokolliert, zB:

 if (isset($some_get_or_post_trigger_var)) file_put_contents(ABSPATH . 'action.log', $tag, FILE_APPEND); 

Gefundene Lösung!

Danke @birgire für nette Antwort. Ich füge hinzu, dass muplugins_loaded manchmal nicht gefeuert wird, also werde ich plugins_loaded als den ersten Hook verwenden (aber zu diesem Zeitpunkt ist die Benutzerautorisierung noch nicht abgeschlossen. Wenn Sie die Benutzerautorisierung überprüfen wollen, dann ist init das früheste für Das)…

PS gibt es hervorragende Plugins:

1) Abfrage-Monitor – Sie können alles sehen, was auf der Seite-Laden, dh die Dauer jeder ausgeführten function passiert und vieles mehr (alle Screenshots auf der Plugin-Seite anzeigen):

Bildbeschreibung hier eingeben

2) WP-DEBUG-BAR + WP-DEBUG-SLOW-AKTIONEN :
a) Debug-Hooks ( Aktionen ) führen die Liste auf Ihrer Site aus.
b) Siehe Dauer jeder Aktion (nicht function): Bildbeschreibung hier eingeben