Usando wp_enqueue_script no manipulador de função shortcode

4

Eu tenho esse código

function this_is_my_shortcode(){
    wp_register_script('per-pas-belanja-online', plugins_url('js/per-pas-belanja-online.js', __FILE__), array('jquery'), '1.0.0');
    wp_enqueue_script('per-pas-belanja-online');
    return '<div id="poppedout">Blah</div>';
}
add_shortcode('bubba', 'this_is_my_shortcode');

O div é exibido na página, mas o script não é. Que erro eu cometi?

    
por Permana 08.06.2011 / 11:25

3 respostas

2

Diretamente do Codex

  

Use a ação wp_enqueue_scripts para chamar essa função ou admin_enqueue_scripts para chamá-la no lado do administrador. Chamá-lo fora de uma ação pode causar problemas.

    
por kaiser 08.06.2011 / 12:17
2

Como o @Bainternet apontou a partir de 3.3, deve funcionar muito bem para o js (descrito por aqui ). Para aqueles que também querem carregar condicionalmente o css, ainda é difícil, mas esses dois artigos de beerpla e um por iandunn deve abrir o caminho.

    
por orionrush 03.08.2012 / 17:32
0

Você deve enfileirar scripts como este:

function this_is_my_shortcode(){
    add_action('wp_enqueue_scripts', function() {
        wp_register_script('per-pas-belanja-online', plugins_url('js/per-pas-belanja-online.js', __FILE__), array('jquery'), '1.0.0');
        wp_enqueue_script('per-pas-belanja-online');
    });
    return '<div id="poppedout">Blah</div>';
}
add_shortcode('bubba', 'this_is_my_shortcode');
    
por Hamed Moodi 18.06.2016 / 15:41