Chciałbym zachować style javascript i css używane przez mój widżet w ich własnych plikach (i nie dodawać ich do motywu).
Ale nie mogę uzyskać Wordpressa, aby je dodać, gdy widżet jest faktycznie używany na pasku bocznym.
Próbowałem tego:
w deklaracji klasy dodałem 2 funkcje
class EssentielleRubriquesPosts extends WP_Widget {
function addFrontendCss(){
wp_enqueue_style('erw-frontend-css', ESSENTIELLE_RUBRIQUE_WIDGET_PLUGIN_PATH . 'css/EssentielleRubriqueWidget-frontend.css');
}
function addFrontendJavascript(){
wp_register_script('jq-hoverintent', PLUGIN_PATH . 'js/jquery.hoverintent.js', array('jquery'), '1.0',true);
wp_enqueue_script('jq-hoverintent');
wp_enqueue_script('jq-tools', PLUGIN_PATH . 'js/jquery.tools.js', array('jquery'),'1.0',true);
wp_enqueue_script('erw-frontend-js', PLUGIN_PATH . 'js/widget-frontend.js', array('jquery', 'jq-hoverintent', 'jq-tools'),'1.0',true);
}
i wewnątrz funkcji widget ():
function widget($args, $instance) {
add_action( 'wp_print_scripts', 'addFrontendJavascript' );
add_action( 'wp_print_styles', 'addFrontendCss' );
}
Ale to nic nie robi ...
widgets
wp-enqueue-script
wp-enqueue-style
pixeline
źródło
źródło
Odpowiedzi:
wp_print_scripts
iwp_print_styles
haki są wystrzeliwane na długo przed funkcją widżetu, więc nie działa.Rozwiązaniem tego byłoby włączenie skryptów w stopce za pomocą
wp_print_footer_scripts
haka, spójrz na odpowiedź Jana na podobne pytanieLub o wiele ładniejsze rozwiązanie, spójrz na odpowiedź Soricha na inne podobne pytanie
źródło
Najlepszym rozwiązaniem jest najpierw zarejestrowanie zasobów, a następnie kolejkowanie CSS i JS wewnątrz
widget()
funkcji WP_Widget (kolejkowanie bezpośrednie, a nie dodawanie nowych haków).Przetestowałem to rozwiązanie i działa ono w bieżącej wersji WordPress (4.5.3) - zarówno JS, jak i CSS są dodawane w stopce strony.
źródło