Como obter os ganchos / ações do WordPress em sequência?

43

Em que ordem add_action hooks é executado?

ou seja,

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



EDIT:

Eu também postei minha solução.

    
por T.Todua 29.09.2014 / 09:59
fonte

5 respostas

74
  

"Dados! Dados! Dados!" ele gritou impaciente. "Eu não posso fazer tijolos sem   barro ".

     

- A aventura das faias de cobre

Então, vamos coletar alguns dados reais de uma instalação sem plug-ins e o tema TwentyTwelve ativado com apenas um único widget de Texto.

Para a home page, as seguintes chamadas do_action são feitas na seguinte ordem:

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

Se você quiser verificar a ordem das ações e quantas vezes cada uma delas é acionada, use, por exemplo:

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

ou esta versão prettificada:

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

});

para obter a seguinte 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: Você também deve verificar o grande plugin do Query Monitor de John Blackbourn. (Eu não estou relacionado a este plugin)

    
por birgire 29.09.2014 / 11:04
fonte
19

Aqui está o gráfico de carga do WordPress

Fonte de @Rarst

    
por Robert hue 29.09.2014 / 10:04
fonte
2

Solução encontrada!

Obrigado @birgire por uma boa resposta. Eu adicionarei a isso, muplugins_loaded às vezes não é acionado, então vou usar plugins_loaded como o primeiro gancho (mas, na ocasião, a autorização do usuário ainda não foi feita. Se você quiser para verificar a autorização do usuário, então init é o mais antigo para isso ...

p.s. existem excelentes plugins:

1) Monitor de consulta - Você pode ver tudo o que acontece na página carga, ou seja, a duração de cada função executada e muito mais (veja todas as imagens na página do plugin):

2) WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS :
a) debug hooks ( ações ) lista de execução em seu site.
b) Veja a duração de cada ação (não função):

    
por T.Todua 23.12.2017 / 21:22
fonte
1

Não há duas solicitações exatamente iguais. Uma maneira rápida e suja (mas muito precisa) de descobrir o que está acontecendo é temporariamente adicionar uma linha ao início da função do_action em wp-includes/plugin.php , que registra o $tag , por exemplo :

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

A sequência básica também pode ser encontrada nos documentos oficiais:

enlace

    
por Stratboy 28.05.2018 / 16:57
fonte

Tags