WordPress의 후크 / 액션 실행 순서를 얻는 방법?


47

add_action후크는 어떤 순서로 실행됩니까?

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




편집하다:

또한 솔루션을 게시했습니다.


의 가능한 중복 wordpress.stackexchange.com/questions/135857/...이 광산은 2월 25일 '14에 배치로
바부

내가 SE 규칙에서 보았 듯이, 유일한 주제의 나이는 더 이상 중복 결정에 포함되지 않습니다 : #
T.Todua

답변:


82

"데이터! 데이터! 데이터!" 그는 조급히 울었다. "점토없이 벽돌을 만들 수 없습니다."

구리 너도밤의 모험

플러그인이없는 설치에서 단일 텍스트 위젯으로 만 TwentyTwelve 테마를 활성화하여 실제 데이터 를 수집 해 봅시다 .

홈 페이지의 do_action경우 다음 순서로 호출됩니다.

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

작업 순서와 각 작업이 몇 번 발생했는지 확인하려면 다음과 같이 사용할 수 있습니다.

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

또는이 prettified 버전 :

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

});

다음 목록을 얻으려면

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) 

추신 : John Blackbourn 의 훌륭한 Query Monitor 플러그인 도 확인하십시오 . (이 플러그인과 관련이 없습니다)


참으로 아주 좋은!
jdm2112

Query Monitor를 언급 해 주셔서 감사합니다. 이 경우 유용한 플러그인 인 것 같습니다.
DAH

@kraftner 업데이트에 감사드립니다. 저는 항상 스토리 자체를 적절한 소스로 직접 연결하려고 계획했습니다. 그러나 내 Sherlock Holmes 검색 foo는 그 당시에는 좋지 않았습니다
birgire

1
나는 인용문을 좋아했고 더 많은 맥락을보고 싶었다. 그리고 나는 이미 나 자신을위한 링크를 가지고 있었기 때문에 여기뿐만 아니라 업데이트하지 않는 이유. :)
kraftner

1
4 개월 이상 게시물을 작성했지만 여전히 유용합니다. 고마워요!
Sebastian Kaczmarek

19

다음은 워드 프레스로드 차트입니다

워드 프레스로드 차트

@Rarst의 출처


9
적어도 source를 추가 하거나 더 좋습니다 :이 질문에 대한 사본을 찾으십시오.
fuxia

2
실제로 나는 어디서 왔는지 몰랐다. 이 이미지를 PC에 저장했습니다. 그렇지 않으면 나는 그렇게했을 것입니다.
Robert hue

또한 Tom Mc Farlin 홈페이지에 게시되었습니다 : WordPress Page Lifecycle-> tommcfarlin.com/wordpress-page-lifecycle
DAH

2

해결책을 찾았습니다!

좋은 답변을 주셔서 감사합니다 @birgire . 나는 그것에 추가하고 muplugins_loaded때로는 해고되지 않기 때문에 plugins_loaded가장 첫 번째 후크로 사용할 것입니다 (그러나 그 당시에는 사용자 인증이 아직 완료되지 않았습니다. 사용자의 권한을 확인하려면 init그 중 가장 빠른 것입니다). ..

추신 훌륭한 플러그인이 있습니다 :

1) 쿼리 모니터 -페이지로드에서 발생하는 모든 것을 볼 수 있습니다. 즉, 실행 된 각 함수의 지속 시간 등 (플러그인 페이지의 모든 스크린 샷보기) :

여기에 이미지 설명을 입력하십시오

2) WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS :
a) 사이트의 디버그 훅 ( actions ) 실행 목록.
b) 각 동작의 지속 시간을 참조하십시오 (기능 아님). 여기에 이미지 설명을 입력하십시오


1

두 요청이 정확히 동일하지 않습니다. 무슨 일이 일어나고 있는지 알 수있는 빠르고 더러운 (그러나 매우 정확) 방법은 것입니다 일시적으로 의 시작에 줄을 추가 do_action로 기능 wp-includes/plugin.php로그되는 $tag, 예를 :

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.