Я хотел бы сохранить стили javascript и css, используемые моим виджетом, в своих собственных файлах (и не добавлять их в тему).
Но я не могу заставить WordPress добавить их, когда виджет фактически используется на боковой панели.
Я пробовал это:
внутри объявления класса я добавил 2 функции
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);
}
и внутри функции widget ():
function widget($args, $instance) {
add_action( 'wp_print_scripts', 'addFrontendJavascript' );
add_action( 'wp_print_styles', 'addFrontendCss' );
}
Но это ничего не делает ...
widgets
wp-enqueue-script
wp-enqueue-style
pixeline
источник
источник
Ответы:
wp_print_scripts
иwp_print_styles
ловушки запускаются раньше, чем ваша функция виджета, так что это не работает.Решением этой проблемы было бы включение скриптов в нижний колонтитул с помощью
wp_print_footer_scripts
хука, взгляните на ответ Яна на похожий вопросИли более приятное решение - взгляните на ответ Сориха на другой похожий вопрос.
источник
Лучшее решение - сначала зарегистрировать ваши активы, а затем поставить в очередь CSS и JS внутри
widget()
функции вашего WP_Widget (напрямую ставить в очередь, а не добавлять новые хуки).Я протестировал это решение, и оно работает в текущей версии WordPress (4.5.3) - и JS, и CSS добавляются в нижний колонтитул страницы.
источник