- Racó tècnic - http://www.racotecnic.com -

Utilizar framework JavaScript en nuestro tema o plugin de WordPress

Quizás os hayáis planteado añadir un poco de JavaScript a vuestro tema o plugin de WordPress fácilmente gracias a algún framework como jQuery, Scriptacolous, Prototype… o quizás simplemente nos interese añadir nuestro propio fichero de JavaScript!

Al hacerlo olvidaros de hacer “echo ‘<script type=”text/javascript>…</script>;'”… pues como quizás ya sepáis, WordPress incluye algunas de estas librerías y podrías hacerlas entrar en conflicto (debido a que algún plugin o vuestro tema ya utilicen alguna de estas librerías).

WordPress tiene una función llamada “wp_enqueue_script” que se encargará de importar en la cabecera del blog el JavaScript que queramos. Ésta misma función se encargará de ordenar los scripts en la cabecera automáticamente y, en caso de ser un script creado por nosotros, deberemos indicar qué escripts van delante de éste (para hacer así un fichero de funciones externo para jQuery, por ejemplo).


Vemos la función:

wp_enqueue_script( 'handle', 'src', 'deps', 'ver');

Y sus parámetros:

Algunos de los “handle” que podéis utilizar son:

Podéis ver una lista completa [5] en el Codex de WordPress [6].

Dado que últimamente estoy trasteando con jQuery os mostraré un pequeño ejemplo de cómo importarlo en nuestro tema e importar nuestro fichero de funciones.

Primero de todo importemos jQuery en nuestro tema. Abramos el fichero “header.php” y antes de llamar a la función “wp_head();” llamemos a wp_enqueue_script:

<?php
wp_enqueue_script('jquery');
wp_head();
?>

Con esto WordPress insertará una etiqueta <script> en la sección <head> de la página haciendo referencia a la librería jQuery.

Lo siguiente que haremos es importar nuestro código con las funciones que tengamos que utilicen jQuery, pero antes deberemos evitar posibles conflictos entre otros frameworks distribuidos con WordPress como Prototype, SWFUpload… (los “hamdle” anteriormente mencionados).

Esto es porque, por ejemplo, Prototype y jQuery utilizan el mismo método de llamada, el dólar “$”. Debemos cambiar éste método en jQuery para que funcione correctamente el código, para ello utilizaremos el método nonConflict de jQuery, así:

<script type="text/javascript">
$miMetodoDeLlamadaJquery = jQuery.noConflict();
</script>

Evidentemente no es nada recomendable poner un método de llamada tan largo 😉 Yo utilizaría $jQ:

<script type="text/javascript">
$jQ = jQuery.noConflict();

$jQ(function(){
	$jQ("div#search").hide();
}
</script>

Este pequeño ejemplo, insertado en nuestra cabecera del tema, ocultaría la capa con id=”search”.

Imaginemos que en lugar de estar insertado en la cabecera quisiéramos tener nuestro código en un fichero a parte, guardado en alguna carpeta del tema, o del plugin. Por supuesto, lo primero que haríamos es eliminar las etiquetas “script” de nuestro código, dado que será un fichero .js. Una vez guardado nuestro código en un fichero js y éste subido a alguna carpeta en el servidor (en principio en la carpeta del tema o plugin) lo importamos con wp_enqueue_script:

<?php
wp_enqueue_script('jquery');
wp_enqueue_script('misfunciones','/wp-content/themes/mitema/lib/functions.js',array('jquery'));
wp_head();
?>

Recordad que si estáis programando una extensión de jquery debéis pasar un array como tercer parámetro (deps) a la función indicando los ficheros de los que depende vuestra librería. Si hubierais programado una extensión de una extensión deberíais indicarlo así:

<?php
wp_enqueue_script('misfunciones','/wp-content/themes/mitema/lib/functions.js',array('jquery','extension-jquery'));
?>

Espero que os sirva, salud!

Páginas de referencia: