คำสั่งadd_action
hooks จะดำเนินการอย่างไร
กล่าวคือ
init
wp_head
wp_footer
after_theme_setup
etc...
???
???
???
แก้ไข:
ฉันโพสต์โซลูชันของฉันด้วย
คำสั่งadd_action
hooks จะดำเนินการอย่างไร
กล่าวคือ
init
wp_head
wp_footer
after_theme_setup
etc...
???
???
???
ฉันโพสต์โซลูชันของฉันด้วย
คำตอบ:
"ข้อมูล! ข้อมูล! ข้อมูล!" เขาร้องไห้อย่างหงุดหงิด "ฉันทำอิฐด้วยดินไม่ได้"
ดังนั้นให้รวบรวมข้อมูลจริงจากการติดตั้งโดยไม่มีปลั๊กอินและธีม 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'] );
});
หรือรุ่นที่สวยงามนี้:
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: คุณควรตรวจสอบปลั๊กอินQuery Monitorที่ยอดเยี่ยมโดย John Blackbourn (ฉันไม่เกี่ยวข้องกับปลั๊กอินนี้)
นี่คือแผนภูมิโหลด WordPress
ขอบคุณ@ Birgireสำหรับคำตอบที่ดี ฉันจะเพิ่มการที่muplugins_loaded
บางครั้งไม่ได้ยิงดังนั้นฉันจะใช้plugins_loaded
เป็นตะขอแรกมากที่สุด ( แต่ในเวลานั้นผู้ใช้สิทธิ์ยังไม่ได้ทำ. ถ้าคุณต้องการที่จะตรวจสอบการอนุมัติของผู้ใช้แล้วinit
เป็นเร็วสำหรับที่) ..
ps มีปลั๊กอินที่ยอดเยี่ยมอยู่:
1) การตรวจสอบคำถาม - คุณสามารถเห็นทุกสิ่งที่เกิดขึ้นกับการโหลดหน้าเว็บนั่นคือระยะเวลาของฟังก์ชั่นที่ดำเนินการแต่ละครั้งและอีกมากมาย (ดูภาพหน้าจอทั้งหมดในหน้าปลั๊กอิน):
2) WP-DEBUG-BAR + WP-DEBUG-SLOW-ACTIONS :
a) debug hooks ( actions ) เรียกใช้รายการบนไซต์ของคุณ
b) ดูระยะเวลาของแต่ละการกระทำ (ไม่ใช่ฟังก์ชั่น):
ไม่มีสองคำขอที่เหมือนกัน วิธีที่รวดเร็วและสกปรก (แต่แม่นยำมาก) ในการค้นหาว่าเกิดอะไรขึ้นคือการเพิ่มบรรทัดไปยังจุดเริ่มต้นของฟังก์ชันที่บันทึกไว้เป็นการชั่วคราวเช่น: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);
ลำดับขั้นพื้นฐานสามารถพบได้ในเอกสารอย่างเป็นทางการ: