Bagaimana cara menjalankan rangkaian kait / tindakan WordPress?

48

Dalam rangka apa add_actionkait dieksekusi?

yaitu

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




SUNTING:

Saya juga memposting solusi saya.

T.Todua
sumber
Kemungkinan duplikat dari wordpress.stackexchange.com/questions/135857/… karena milik saya diposting pada 25 Feb '14
Babu
Apa yang saya lihat dalam aturan SE, usia satu-satunya topik tidak lagi diperhitungkan untuk keputusan duplikasi: #
T.Todua

Jawaban:

82

"Data! Data! Data!" dia menangis tidak sabar. "Aku tidak bisa membuat batu bata tanpa tanah liat."

-Petualangan Beech Tembaga

Jadi mari kita kumpulkan beberapa data nyata dari instalasi tanpa plugin dan tema TwentyTwelve diaktifkan hanya dengan satu widget teks.

Untuk beranda, do_actionpanggilan berikut dibuat dalam urutan berikut:

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

Jika Anda ingin memeriksa urutan tindakan dan berapa kali masing-masing dipecat, maka Anda dapat menggunakan misalnya:

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

atau versi prettified ini:

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

});

untuk mendapatkan daftar berikut:

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: Anda juga harus memeriksa plugin Query Monitor yang hebat oleh John Blackbourn. (Saya tidak terkait dengan plugin ini)

birgire
sumber
Memang sangat bagus!
jdm2112
Terima kasih telah menyebutkan Monitor Kueri. Tampaknya menjadi plugin yang bermanfaat dalam kasus ini.
DAH
@kraftner terima kasih atas pembaruannya, saya selalu merencanakan (tetapi melupakannya) untuk menautkan langsung ke cerita itu sendiri sebagai sumber yang tepat, jelas pencarian foo Sherlock Holmes saya tidak hebat pada waktu itu ;-)
birgire
1
Saya menyukai kutipan dan ingin melihat lebih banyak konteks. Dan karena saya sudah memiliki tautan untuk diri saya sendiri mengapa tidak memperbarui saja di sini. :)
kraftner
1
Lebih dari 4 pos Anda dan masih membantu. Terima kasih banyak!
Sebastian Kaczmarek
20

Berikut adalah bagan beban WordPress

Bagan Muat WordPress

Sumber oleh @Rarst

Rona Robert
sumber
9
Tambahkan setidaknya sumbernya , atau lebih baik lagi: temukan duplikat untuk pertanyaan ini.
fuxia
2
Sebenarnya saya tidak tahu dari mana saya mendapatkannya. Saya menyimpan gambar ini di PC saya. Kalau tidak, aku akan melakukannya.
Robert hue
Ini juga diterbitkan di beranda Tom Mc Farlin: Siklus Hidup Halaman WordPress -> tommcfarlin.com/wordpress-page-lifecycle
DAH
3

Solusi yang Ditemukan!

Terima kasih @bgire untuk jawaban yang bagus. Saya akan menambahkan bahwa, muplugins_loadedkadang-kadang tidak dipecat, jadi saya akan menggunakan plugins_loadedsebagai pengait pertama (tetapi pada saat itu, otorisasi pengguna belum dilakukan. Jika Anda ingin memeriksa otorisasi pengguna, maka initadalah yang paling awal untuk itu). ..

ps ada plugin yang sangat baik:

1) Monitor Kueri - Anda dapat melihat semua yang terjadi pada pemuatan halaman, yaitu durasi setiap fungsi yang dieksekusi dan lebih banyak lagi (lihat semua tangkapan layar pada halaman plugin):

masukkan deskripsi gambar di sini

2) WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS :
a ) jalankan debug hooks ( tindakan ) daftar run di situs Anda.
b) Lihat durasi setiap tindakan (tidak berfungsi): masukkan deskripsi gambar di sini

T.Todua
sumber
1

Tidak ada dua permintaan yang persis sama. Cara cepat dan kotor (tapi sangat akurat) untuk mencari tahu apa yang terjadi adalah menambahkan sementara ke awal do_actionfungsi wp-includes/plugin.phptempat log $tag, misalnya:

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