To pytanie może być złe, nie jestem tego pewien. Ponieważ nie mam jasności co do tego.
Wiem, add_action
że służy do połączenia naszej funkcji z określoną funkcją. Na przykład add_action('wp_head'.'myfunc');
teraz, co kiedykolwiek kod myfunc
zostanie wykonany wwp_head()
. To jasne, ale mam wątpliwości, do_action
co to robi?
Myślę, że służy do tworzenia własnego haka, takiego jak już dostępne haki (wp_head, wp_footer, itp.). Jeśli mam rację, czy ktoś może pokazać mi prostą zrozumiałą odpowiedź z prostym przykładem.
Próbowałem różnicy w Internecie, ale wszystkie wskazują na różnicę między add działań i add_filter. Nie chcę tam iść, ponieważ najpierw chcę to wyjaśnić, a następnie się tam przeprowadzę.
Czy ktoś może mi pomóc?
EDYCJA po pytaniu POST
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
Próbowałem tego we wtyczce, ale nie dostałem komunikatu ostrzegawczego.
Ale kiedy podpinam tę samą funkcję wp_head
, to działa dobrze
/******************working****************/
add_action('wp_head','custom_register');
do_action('custom');
po zarejestrowaniu oddzwonienia? I upewnij się, że jQuery jest załadowany.wp_head
, działa dobrze, ale nie działa zcustom
Odpowiedzi:
Służy
do_action( 'unique_name' )
do tworzenia własnych działań.Możesz go użyć, aby zaoferować interfejs API dla Twojej wtyczki , dzięki czemu inne wtyczki mogą rejestrować wywołania zwrotne dla akcji niestandardowej. Przykład: Czy muszę wywoływać do działań w mojej wtyczce?
Ale możesz także użyć niestandardowych akcji (lub filtrów) w kompozycji. Przykład: najlepszy sposób implementacji niestandardowych sekcji w motywie WordPress
Możesz połączyć oba elementy, aby wtyczka i motyw działały razem. Przykład: Jak udostępnić metodę z wtyczki w motywie?
Podsumowanie:
add_action( 'foo' )
rejestruje oddzwonienie,do_action( 'foo' )
wykonuje zarejestrowane oddzwonienie.źródło
To jest moje przypuszczenie, więc jeśli wiesz lepiej, zrób komentarz, aby zaktualizować moje przypuszczenie.
Twój kod wtyczki jest wykonywany wcześniej
wp_head()
(co możemy założyć, że wywoła dodane do niego działania). Kiedy tyadd_action('wp_head','custom_register')
mówisz PHP, że kiedy (w przyszłości)do_action('wp_head')
zostanie wywołany, również zadzwońcustom_register()
. To samo dotyczy twojego wezwania do,add_action('custom','custom_register')
ale jak widać w kodzie, wezwanie dodo_action('custom')
zostało już wykonane, a kiedy zostało wywołane, nie dodano (jeszcze) żadnych działań. Dlatego Toscho zapytał, co się stanie, gdy zadzwoniszdo_action('custom')
po zarejestrowaniu oddzwonienia. Twoja odpowiedź na temat zaplecza i interfejsu jest niejednoznaczna. Jeśli zamienisz dwie ostatnie linie w następującym kodzie, myślę, że to zadziała:źródło
do_action
: Rejestruje hak akcji, aadd_action
: dodaje funkcję zwrotną do zarejestrowanego haka.Przykład
Rozważ, że chcesz wydrukować coś przed paskiem bocznym w swoim szablonie.
index.php
za pośrednictwem<?php add_action('bp_sidebar_left'); ?>
.functions.php
pliku możesz dodać funkcję zwrotną do tego haka, aby wydrukować coś, co chcesz.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }
źródło
Musisz użyć jak poniżej:
źródło