WordPressのフック/アクションの実行シーケンスを取得する方法は?


48

add_actionフックはどの順序で実行されますか?

すなわち

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




編集:

ソリューションも投稿しました。


wordpress.stackexchange.com/questions/135857/の重複の可能性があります...私の投稿は14年2月25日
Babu

SEのルールで見たように、唯一のトピックの年齢は重複の決定にカウントされなくなりました:#
T.Todua

回答:


82

「データ!データ!データ!」彼はイライラして泣きました。「粘土なしではレンガを作ることはできません。」

-銅ブナの冒険

それでは、プラグインなしのインストールからいくつかの実際のデータを収集し、TwentyTwelveテーマを単一のTextウィジェットのみでアクティブにします。

ホームページの場合、次の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) 

PS:John BlackbournのすばらしいQuery Monitorプラグインもチェックしてください。(このプラグインとは関係ありません)


本当にいいね!
jdm2112

Query Monitorについて言及していただきありがとうございます。この場合、便利なプラグインのようです。
-DAH

@kraftnerは更新に感謝します。適切な情報源としてストーリー自体に直接リンクすることを常に計画していました(しかし、忘れていました)、明らかに私のシャーロックホームズの検索foo​​はその時点では素晴らしいものではありませんでした
;

1
私は引用が好きで、より多くの文脈を見たかった。そして、私はすでに自分自身のリンクを持っているので、なぜここでも更新しないのですか。:)
クラフトナー

1
4年以上前の投稿で、まだ役に立ちます。どうもありがとう!
セバスチャン・カツマレク

20

これがWordPressの負荷チャートです

WordPressロードチャート

@Rarstによるソース


9
少なくともsourceを追加するか、さらに良い場合:この質問の重複を見つけます。
FUXIA

2
実際、どこから入手したのかわかりませんでした。この画像をPCに保存しました。そうでなければ、私はそれをしたでしょう。
ロバート・ヒュー14

Tom Mc Farlinのホームページにも公開されています。WordPress
DAH

3

ソリューションが見つかりました!

素敵な答えをありがとう@birgire。それに追加しますが、muplugins_loadedときどき解雇されないのでplugins_loaded、一番最初のフックとして使用します(ただし、その時点ではまだユーザー認証は行われていません。ユーザーの認証を確認したい場合initは、それが最も早いです)。 ..

PS優れたプラグインが存在します:

1)クエリモニター -ページのロードで発生するすべてのこと、つまり実行された各機能の継続時間などを確認できます(プラグインページですべてのスクリーンショットを表示)。

ここに画像の説明を入力してください

2)WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS
a)サイトのデバッグフック(アクション)実行リスト。
b)各アクションの持続時間を確認します(機能ではありません): ここに画像の説明を入力してください


1

まったく同じ2つの要求はありません。何が起こっているのかを知るための迅速で汚い(しかし非常に正確な)方法は、を記録する関数の先頭に一時的に行を追加することです。例:do_actionwp-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.