A comunidade WP.SE sempre aconselhou o uso wp_register_script
e wp_enqueue_script
a adição de scripts em um tema / modelo (e da mesma forma wp_register_style
e wp_enqueue_style
para folhas de estilo).
É assim que eu registro e coloco meus scripts em fila ...
Primeiro, adiciono algo assim em functions.php
add_action('init','wpse54189_register_script');
function wpse54189_register_script(){
//Register scripts
wp_enqueue_script( 'jquery' );
wp_register_script( 'aahan_bootstrap_transition', get_template_directory_uri().'/js/bootstrap-transition.js');
wp_register_script( 'aahan_bootstrap_carousel', get_template_directory_uri().'/js/bootstrap-carousel.js', array('aahan_bootstrap_transition'));
wp_register_script( 'wpse54189_ajax_comment', get_template_directory_uri().'/js/no-reload-comments.js');
}
chame-o em um arquivo de modelo (por exemplo, header.php) como este
<?php wp_enqueue_script( 'aahan_bootstrap_carousel' ); ?>
<?php wp_enqueue_script( 'wpse54189_ajax_comment' ); ?>
Agora, chegando ao ponto, como faço para registrar e enfileirar "arquivos JavaScript condicionais" que existem para serem reconhecidos por navegadores específicos? Por exemplo:
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
Como faço para registrar e enfileirar isso corretamente?
PS: Eu uso o tema Reddle , desenvolvido pelos organizadores de temas da Automattic. E o header.php do tema usa diretamente o código acima mencionado - ou seja, não está na fila. Então, isso significa que é a única maneira de fazer isso?
Respostas:
WP_Scripts
e asWP_Styles
classes estão atrasadaswp_enqueue_script
ewp_enqueue_style
funcionam. Se você der uma olhada na implementação de classes ( scripts e estilos ), verá que aWP_Scripts
classe não suporta nenhum tipo de script condicional, mas! você pode ver queWP_Styles
sim! O problema é quewp_enqueue_style
não permite que você configure a condição.Então temos que fazer um pequeno hack:
Esse hack torna-se possível, porque todos os estilos registrados são armazenados no
registered
campo deWP_Styles
classe. Cada estilo registrado é um objeto de_WP_Dependency
classe, que permite adicionar dados extras.Infelizmente esse hack não está funcionando para scripts.
Informações adicionais:
Na verdade, eu estava revisando o código no Tema da Essência de Aaron Campbell na noite passada e notei que ele estava chamando de script e estilo condicional do navegador.
Há também um ticket e patch, mas ainda não está no núcleo . Obviamente, o script condicional não funcionará sem o patch, mas uma coisa a ser observada é que você pode usar o método add_data diretamente dentro da sua função anexada à
wp_enqueue_scripts
ação.fonte
Unfortunately this hack is not working for scripts.
Oh ... isso é péssimo! Parece que o único caminho é o que é. :( Obrigado pelo hack pela maneira :).