La comunidad WP.SE siempre ha aconsejado el uso de wp_register_script
y wp_enqueue_script
para agregar scripts en un tema / plantilla (y del mismo modo, wp_register_style
y wp_enqueue_style
para hojas de estilo).
Así es como me registro y pongo en cola mis guiones ...
Primero, agrego algo como esto en 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');
}
luego llámalo en un archivo de plantilla (por ejemplo, header.php) como este
<?php wp_enqueue_script( 'aahan_bootstrap_carousel' ); ?>
<?php wp_enqueue_script( 'wpse54189_ajax_comment' ); ?>
Ahora, llegando al punto, ¿cómo registro y coloco "archivos condicionales de JavaScript" que deben ser reconocidos por navegadores específicos? Por ejemplo:
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
¿Cómo me registro y coloco esto correctamente?
PD: uso el tema Reddle , desarrollado por los wranglers de temas en Automattic. Y el header.php del tema usa directamente el código recién mencionado, es decir, no está en cola. Entonces, ¿eso significa que es la única forma de hacerlo?
Respuestas:
WP_Scripts
y lasWP_Styles
clases están detráswp_enqueue_script
y laswp_enqueue_style
funciones. Si echa un vistazo a la implementación de clases ( scripts y estilos ), verá que laWP_Scripts
clase no admite ningún tipo de scripts condicionales, ¡pero! se puede ver queWP_Styles
hace! El problema es quewp_enqueue_style
no le permite configurar la condición.Entonces tenemos que hacer un pequeño truco:
Tal pirateo es posible, porque todos los estilos registrados se almacenan en el
registered
campo deWP_Styles
clase. Cada estilo registrado es un objeto de_WP_Dependency
clase, que le permite agregar datos adicionales.Lamentablemente, este truco no funciona para los scripts.
Información adicional:
Anoche estaba revisando el código del tema Essence Theme de Aaron Campbell y me di cuenta de que estaba llamando tanto un guión condicional como un estilo de navegador.
También hay un boleto y un parche, pero aún no está en el núcleo . Obviamente, el script condicional no funcionará sin el parche, pero una cosa a tener en cuenta es que puede usar el método add_data directamente dentro de su función que está adjunta a la
wp_enqueue_scripts
acción.fuente
Unfortunately this hack is not working for scripts.
Oh ... eso apesta! Parece que la única forma es como es. :( Gracias por el truco por cierto. :)