WordPress'in 'kancaları / eylemleri' sırasını nasıl çalıştırır


Yanıtlar:


82

"Veri! Veri! Veri!" sabırsızca ağladı. "Kil olmadan tuğla yapamam."

- Bakır Kayınların Serüveni

Öyleyse, eklentileri olmayan bir kurulumdan bazı verileri toplayalım ve TwentyTwelve temasını sadece tek bir Metin widget'ı ile etkinleştirelim.

Ana sayfa için aşağıdaki do_actionçağrılar aşağıdaki sırada yapılır:

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

Eylemlerin sırasını ve her birinin kaç kez kovulduğunu kontrol etmek istiyorsanız, örneğin:

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

veya bu ayrıntılı versiyon:

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

});

Aşağıdaki listeyi almak için:

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) 

Not: Ayrıca John Blackbourn'un harika Query Monitor eklentisini de incelemelisin. (Bu eklentiyle ilgili değilim)


Gerçekten çok iyi!
jdm2112

Query Monitor'dan bahsettiğiniz için teşekkür ederiz. Bu durumda yararlı bir eklenti gibi görünüyor.
DAH,

@kraftner güncelleme için teşekkürler, her zaman (ancak unutmayı unuttum) hikayenin kendisine uygun bir kaynak olarak doğrudan bağlanmayı planladım, belli ki Sherlock Holmes arama foo o zamanlar pek iyi değildi ;-)
Birgire

1
Teklifi beğendim ve daha fazla içerik görmek istedim. Ve zaten kendim için bir bağlantıya sahip olduğum için neden burada da güncelleme yapmıyorsunuz? :)
kraftner

1
4 yaşın üzerinde ve hala yardımcı. Çok teşekkürler!
Sebastian Kaczmarek


3

Çözüm Bulundu!

Güzel cevap için teşekkürler @birgire . Buna ek olarak, muplugins_loadedbazen kovulmadığından, plugins_loadedilk kanca olarak kullanacağım (ancak o zaman, kullanıcı yetkilendirmesi henüz yapılmadı. Kullanıcının yetkilendirmesini kontrol etmek istiyorsanız, initbunun için en erken olanıdır ). ..

ps mükemmel eklentileri var:

1) Sorgu İzleme - Sayfa yükünde ne olduğunu, yani yürütülen her işlevin süresini ve daha fazlasını görebilirsiniz (eklenti sayfasındaki tüm ekran görüntülerini görüntüleyin):

görüntü tanımını buraya girin

2) WP-DEBUG-BAR + WP-DEBUG-YAVAŞ EYLEMLER :
a) Sitenizdeki hata ayıklama kancaları ( işlemler ) çalışma listesi.
b) Her bir eylemin süresini görün (işlev değil): görüntü tanımını buraya girin


1

Hiçbir iki istek tam olarak aynı değildir. Neler olup bittiğini öğrenmenin hızlı ve kirli (ancak çok kesin) bir yolu , örneğin, günlüğe kaydettiği işlevin başlangıcına geçici olarak bir satır eklemektir , örneğin:do_actionwp-includes/plugin.php$tag

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.