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.