jQuery: includerlo correttamente in WordPress
This entry was posted on September 2nd, 2009 and is filed under jQuery, php, Wordpress.
Molti leggendo il titolo dell’articolo avranno riposto: basta scaricarlo e inserirlo nell’header della pagina!
Niente di più vero.
Effettivamente la strada più semplice da compiere è proprio questa; ovvero scaricare il framework, inserirlo nel server e includerlo all’interno del file “header.php”.
<script type="text/javascript" src="path/to/jquery/jquery.js"></script>
Bisogna riconoscere che in fase di realizzazione del template le cose vanno bene, non ci saranno intoppi o malfuzionamenti. I problemi incominceranno ad uscire nel momento in cui il template sarà reso operativo e si inseriranno plugin che fanno uso di tale script. Essi, non trovandolo, andranno a caricarlo creando ovviamente problemi.
jQuery però è già incluso in WordPress dentro il path wp-includes\js\jquery, ed è disponibile una funzione per richiamarlo nel momento del bisogno. Il giusto modo per caricarlo all’interno del nostro template è richiamarlo prima di eseguire la funzione wp_head() nell’header.php. Il seguente codice, quindi, carica correttamente il framework evitando malfunzionamenti:
//header.php
<?php wp_enqueue_script("jquery"); ?>
<?php wp_head(); ?>
Un altro problema che potrebbe sorgere è l’utilizzo in contemporanea di diversi framework. Tale conflitto può essere risolto con pochissime righe di codice, basta attivare il no-conflict integrato in jQuery. Il codice necessario è il seguente:
var $j = jQuery.noConflict();
$j(function(){
$j("a").click(function(){
alert("jQuery works!");
});
});
Come abbiamo potuto notare l’integrazione senza conflitti è molto semplice e richiede poche operazioni. Dopotutto sfruttare gli strumenti che WordPress ci mette a disposizione (e sono tanti) garantisce sicuramente il miglior risultato.
Via | digwp














September 7, 2009 at 8:05 pm
Supponendo di voler scrivere un plugin o altro che richiede la presenza di jQuery, come è possibile evitare i conflitti o l’inclusione di framework diversi?
Per altro intendo, per esempio, l’utilizzo del plugin “Adding Blocks” per WPMU.
Con questo plugin posso creare dei blocchi di codice (in realtà uso dei file include per comodità) che sono visualizzati in tutti i blog del sito.
In questo caso, non posso chiamare jQuery prima wp_head().
September 7, 2009 at 8:55 pm
Non sono sicuro di aver capito quale sia il problema. Comunque se hai solo bisogno di richiamare un plugin per jQuery il problema non si pone. Subito dopo la wp_head() inserisci lo script da caricare e tutto è risolto. Ad esempio:
< ? php wp_enqueue_script("jquery"); ? >
< ? php wp_head(); ? >
…
includo nell’html lo script come si include normalmente.
Se invece ti riferisci a qualcos altro ti chiedo cortesemente di rispiegarmi perchè non ho capito! Scusami.
September 7, 2009 at 9:12 pm
In effetti non mi sono capito nemmeno io
Ambiente: WPMu
Il plugin x wpmu “adding blocks” consente di inserire dei blocchi di codice (HTML e/o php) in tutti o alcuni dei sottoblog, indipendentemente dal tema utilizzato, purchè siano chiamati wp_head() e wp_footer().
Nel mio caso, visualizzo un piccolo banner che vorrei far sparire dopo n secondi, usando jquery.
Il codice può utilizzare le funzioni standard di wp, ma ovviamente non è possibile, a questo livello, inserire del codice prima di wp_head(), a meno di toccare tutti i temi installati.
Quindi, come è possibile evitare i conflitti, quando non è possibile toccare i temi?
Immagino che la soluzione sia analoga a quella usata dai plugin (di worpress, non di jquery) che usano, appunto, jquery… Forse un hook?
September 8, 2009 at 9:38 am
Si infatti….anche io penso che con un hook dovresti risolvere. C’è la funzione:
add_action( ‘plugins_loaded’, …);
Se vuoi informazioni aggiuntive sulla funzione vai a questo link:
http://codex.wordpress.org/Function_Reference/add_action
Credo che cosi dovresti risolvere.