So let's gather some real data from ana vanilla install with no plugins and the TwentyTwelve theme activated with only a single Text widget.
For the home page, the following do_action / do_action_ref_array calls are made in the following order in WordPress 5.7.2 (logged out):
[0] => mu_plugin_loaded [1] => muplugins_loaded [2] => registered_taxonomy [3] => registered_taxonomy [4] => registered_taxonomy [5] => registered_taxonomy [6] => registered_taxonomy [7] => registered_post_type [8] => registered_post_type [9] => registered_post_type [10] => registered_post_type [11] => registered_post_type [12] => registered_post_type [13] => registered_post_type [14] => registered_post_type [15] => registered_post_type [16] => registered_post_type [17] => plugins_loaded [18] => sanitize_comment_cookies [19] => wp_roles_init [20] => setup_theme [21] => unload_textdomain [22] => load_textdomain [23] => after_setup_theme [24] => load_textdomain [25] => load_textdomain [26] => auth_cookie_malformed auth_cookie_valid [27] => set_current_user [28] => init [29] => registered_post_type [30] => registered_post_type [31] => registered_post_type [32] => registered_post_type [33] => registered_post_type [34] => registered_post_type [35] => registered_post_type [36] => registered_post_type [37] => registered_post_type [38] => registered_post_type [39] => registered_taxonomy [40] => registered_taxonomy [41] => registered_taxonomy [42] => registered_taxonomy [43] => registered_taxonomy [44] => widgets_init [45] => register_sidebar [46] => register_sidebar [47] => register_sidebar [48] => wp_register_sidebar_widget [49] => wp_register_sidebar_widget [50] => wp_register_sidebar_widget [51] => wp_register_sidebar_widget [52] => wp_register_sidebar_widget [53] => wp_register_sidebar_widget [54] => wp_register_sidebar_widget [55] => wp_register_sidebar_widget [56] => wp_register_sidebar_widget [57] => wp_register_sidebar_widget [58] => wp_register_sidebar_widget [59] => wp_register_sidebar_widget [60] => wp_register_sidebar_widget [61] => wp_register_sidebar_widget [62] => wp_register_sidebar_widget [63] => wp_register_sidebar_widget [64] => wp_default_scripts [65] => wp_register_sidebar_widget [66] => wp_register_sidebar_widget [67] => wp_register_sidebar_widget [68] => wp_register_sidebar_widget [69] => wp_register_sidebar_widget [70] => wp_register_sidebar_widget [71] => wp_register_sidebar_widget [72] => wp_register_sidebar_widget [73] => wp_register_sidebar_widget [74] => wp_register_sidebar_widget [75] => wp_register_sidebar_widget [76] => wp_register_sidebar_widget [77] => wp_register_sidebar_widget [78] => wp_register_sidebar_widget [79] => wp_register_sidebar_widget [80] => wp_register_sidebar_widget [81] => wp_register_sidebar_widget [82] => wp_register_sidebar_widget [83] => wp_register_sidebar_widget [84] => wp_register_sidebar_widget [85] => wp_register_sidebar_widget [86] => wp_register_sidebar_widget [87] => wp_register_sidebar_widget [88] => wp_register_sidebar_widget [89] => wp_register_sidebar_widget [90] => wp_register_sidebar_widget [91] => wp_register_sidebar_widget [92] => wp_register_sidebar_widget [93] => wp_register_sidebar_widget [94] => wp_sitemaps_init [95] => wp_loaded parse_tax_query[96] => parse_request [97] => send_headers [98] => parse_tax_query posts_selection[99] => parse_query template_redirect[100] => pre_get_posts admin_bar_init[101] => posts_selection add_admin_bar_menus[102] => wp [103] => template_redirect [104] => get_header [105] => wp_head [106] => wp_enqueue_scripts [107] => wp_default_styles [108] => enqueue_block_assets [109] => wp_print_styles [110] => wp_print_scripts get_template_part_content[111] => wp_body_open begin_fetch_post_thumbnail_html[112] => parse_tax_query end_fetch_post_thumbnail_html[113] => parse_query get_template_part_content[114] => pre_get_posts get_template_part_content[115] => parse_tax_query get_template_part_content[116] => posts_selection get_template_part_content[117] => parse_tax_query get_template_part_content[118] => parse_query get_template_part_content[119] => pre_get_posts get_template_part_content[120] => parse_tax_query get_template_part_content[121] => posts_selection [122] => parse_tax_query [123] => parse_query [124] => pre_get_posts [125] => parse_tax_query [126] => posts_selection [127] => parse_tax_query [128] => parse_query [129] => pre_get_posts [130] => parse_tax_query [131] => posts_selection [132] => parse_term_query [133] => pre_get_terms [134] => loop_start [135] => the_post [136] => get_template_part_content begin_fetch_post_thumbnail_html[137] => get_template_part end_fetch_post_thumbnail_html[138] => parse_comment_query [139] => pre_get_comments [140] => parse_comment_query [141] => pre_get_comments [142] => comment_form_comments_closed [143] => loop_end [144] => get_sidebar [145] => dynamic_sidebar_before [146] => dynamic_sidebar [147] => dynamic_sidebar_after [148] => get_footer [149] => twentytwelve_credits [150] => wp_footer [151] => wp_print_footer_scripts wp_before_admin_bar_render[152] => shutdown wp_after_admin_bar_render
using the mu-plugin:
add_action( 'all', function ( $tags ) { shutdown static $hooks = array(); // Only do_action / do_action_ref_array hooks. if ( isset( $GLOBALS['wp_actions'][ $tags ] ) ){ $hooks[] = $tags; } if ( 'shutdown' === $tags ){ print_r( $hooks ); } } );
that prints the collected action hooks, for the current page, in the last available core action (shutdown).
add_action( 'shutdown', function(){ print_r( $GLOBALS['wp_actions'] ); });
or thisthat outputs the array:
[mu_plugin_loaded] => 1 [muplugins_loaded] => 1 [registered_taxonomy] => 10 [registered_post_type] => 20 [plugins_loaded] => 1 [sanitize_comment_cookies] => 1 [wp_roles_init] => 1 [setup_theme] => 1 [unload_textdomain] => 1 [load_textdomain] => 3 [after_setup_theme] => 1 [auth_cookie_malformed] => 1 [set_current_user] => 1 [init] => 1 [widgets_init] => 1 [register_sidebar] => 3 [wp_register_sidebar_widget] => 45 [wp_default_scripts] => 1 [wp_sitemaps_init] => 1 [wp_loaded] => 1 [parse_request] => 1 [send_headers] => 1 [parse_tax_query] => 9 [parse_query] => 5 [pre_get_posts] => 5 [posts_selection] => 5 [wp] => 1 [template_redirect] => 1 [get_header] => 1 [wp_head] => 1 [wp_enqueue_scripts] => 1 [wp_default_styles] => 1 [enqueue_block_assets] => 1 [wp_print_styles] => 1 [wp_print_scripts] => 1 [wp_body_open] => 1 [parse_term_query] => 1 [pre_get_terms] => 1 [loop_start] => 1 [the_post] => 1 [get_template_part_content] => 1 [get_template_part] => 1 [parse_comment_query] => 2 [pre_get_comments] => 2 [comment_form_comments_closed] => 1 [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 [shutdown] => 1
where we can get the total count with echo array_sum( $GLOBALS['wp_actions'] );
Here's a prettified version:
muplugins_loadedmu_plugin_loaded (1) muplugins_loaded (1) registered_taxonomy (10) registered_post_type (1020) plugins_loaded (1) sanitize_comment_cookies (1) wp_roles_init (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 (1245) wp_loadedwp_default_scripts (1) parse_requestwp_sitemaps_init (1) send_headerswp_loaded (1) parse_tax_queryupdate_option (21) update_option__transient_doing_cron (1) parse_queryupdated_option (1) set_transient_doing_cron (1) pre_get_postssetted_transient (1) requests-requests.before_request (1) posts_selectionrequests-curl.before_request (1) http_api_curl (1) wprequests-curl.before_send (1) requests-curl.after_send (1) template_redirectrequests-curl.after_request (1) requests-requests.before_parse (1) wp_default_scriptshttp_api_debug (1) parse_request (1) wp_default_stylessend_headers (1) parse_tax_query (9) admin_bar_initparse_query (15) pre_get_posts (5) add_admin_bar_menusposts_selection (5) wp (1) template_redirect (1) get_header (1) wp_head (1) wp_enqueue_scripts (1) wp_default_styles (1) wp_print_stylesenqueue_block_assets (1) wp_print_styles (1) wp_print_scripts (1) wp_body_open (1) loop_startparse_term_query (1) pre_get_terms (1) the_postloop_start (101) the_post (1) get_template_part_content (101) get_template_part (1) begin_fetch_post_thumbnail_htmlparse_comment_query (2) end_fetch_post_thumbnail_htmlpre_get_comments (2) comment_form_comments_closed (1) 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)