Migliore Modo per Includere Script in una Pagina Template Specifica
Questo è qualcosa che mi ha sempre confuso e potrei usare un po' di aiuto.
Voglio fare quattro cose direttamente sopra il tag di chiusura del body:
- includere jQuery (la versione di WordPress va bene)
- includere un plugin jQuery che dipende da jQuery subito sotto
- inizializzare il plugin direttamente sotto questo plugin ED evitare problemi di conflitto usando $ invece di jQuery
- fare questo solo su template di pagina specifici o file del tema
Capisco che probabilmente dovrei usare wp_enqueue_script, ma non sono sicuro se dovrei usarlo in functions.php o direttamente nella pagina dove lo voglio.
Riguardo al punto 3 ho visto soluzioni alternative come:
jQuery(function ($) {
/* Puoi usare $ in questo blocco di codice per riferirti a jQuery in modo sicuro */
});
Ma onestamente sono confuso su come implementarlo.
Qual è il modo migliore per ottenere questo risultato?
Grazie mille.

Il seguente codice (nel file functions.php
del tuo tema) registrerà il tuo script e imposterà jQuery come dipendenza. Quindi, quando lo accoderai, anche jQuery verrà accodato.
function my_scripts_method() {
// registra la posizione del tuo script, le dipendenze e la versione
wp_register_script('my_custom_script',
get_template_directory_uri() . '/js/custom_script.js',
array('jquery'),
'1.0' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
Puoi poi accodare il tuo script in uno di questi due modi. Nel file functions.php
del tuo tema puoi usare il filtro template_include
per ottenere il template in uso utilizzando is_page_template()
add_filter( 'template_include', 'my_load_script_for_template', 1000 );
function my_load_script_for_template( $template ){
if(is_page_template('my-template.php'))
wp_enqueue_script('my_custom_script');
return $template;
}
In alternativa, se stai utilizzando WordPress 3.3+ e il tuo tema chiama wp_footer()
, puoi semplicemente chiamare wp_enqueue_script('my_custom_script')
direttamente all'interno della pagina del template.

Grazie per la risposta. Hai qualche consiglio riguardo al problema della variabile jQuery $ e sull'uso corretto delle scorciatoie per aggirare questo problema? Non sono del tutto sicuro su come gestirlo. È solo lo script che attiva il plugin sulla pagina che necessita di questa soluzione alternativa, oppure bisogna modificare anche il file del plugin jQuery vero e proprio che viene caricato?

@jw60660 So che è passato un po' di tempo (6 anni) ma nel caso qualcun altro ne avesse bisogno, puoi scrivere il tuo file .js come jQuery(document).ready(function ($) { //some_code_here });
e some_code_here può usare la variabile $ invece di jQuery

Non sono sicuro che sia ancora (o che lo sia mai stato) il "modo migliore" dato che non ho avuto tempo di esplorare gli ultimi aggiornamenti dello sviluppo, ma inizierò postando come lo faccio io:
function my_slider_script() {
if ( !is_page_template( 'slider.php' ) )
return;
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('jquery-ui-tabs');
wp_enqueue_script( 'my_rotator_script', get_template_directory_uri() . '/js/photo_rotator_tabs.js', array('jquery'));
}
add_action( 'template_redirect', 'my_slider_script' )
I primi due utilizzano il JavaScript incluso in WordPress, mentre 'my_rotator_script'
è uno script che ho incluso nella cartella del mio template all'interno di una cartella js nella radice del tema chiamata photo_rotator_tabs.js
. Viene incluso solo nelle pagine che utilizzano il template di pagina slider.php.
Credo che Scribu abbia scritto un post molto dettagliato su questo argomento, ma non ricordo il link. Penso che utilizzi il metodo wp_print_scripts
, o il metodo "WordPress Ninja". Forse potrà aiutarti se il mio metodo è obsoleto.

Quel post era per gli shortcode. :D
