Gostaria de manter os estilos javascript e css usados pelo meu widget dentro de seus próprios arquivos (e não adicioná-los ao tema).
Mas não consigo obter o wordpress para adicioná-los quando o widget é realmente usado em uma barra lateral.
Eu tentei isso:
dentro da declaração de classe, adicionei 2 funções
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);
}
e dentro da função widget ():
function widget($args, $instance) {
add_action( 'wp_print_scripts', 'addFrontendJavascript' );
add_action( 'wp_print_styles', 'addFrontendCss' );
}
Mas isso não faz nada ...
widgets
wp-enqueue-script
wp-enqueue-style
pixeline
fonte
fonte
Respostas:
wp_print_scripts
ewp_print_styles
ganchos são acionados muito antes da função do widget, para que não funcione.Uma solução para isso seria incluir os scripts no rodapé usando
wp_print_footer_scripts
hook, veja a resposta de Jan para uma pergunta semelhanteOu uma solução muito mais agradável, dê uma olhada na resposta de Sorich para outra pergunta semelhante
fonte
A melhor solução é registrar seus ativos primeiro e depois enfileirar o CSS e JS na
widget()
função do seu WP_Widget (enfileirar diretamente, não adicionando novos ganchos).Testei esta solução e ela funciona na versão atual do WordPress (4.5.3) - o JS e o CSS são adicionados no rodapé da página.
fonte