Migliore Modo per Includere Script in una Pagina Template Specifica

17 mar 2012, 23:47:02
Visualizzazioni: 13.9K
Voti: 2

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:

  1. includere jQuery (la versione di WordPress va bene)
  2. includere un plugin jQuery che dipende da jQuery subito sotto
  3. inizializzare il plugin direttamente sotto questo plugin ED evitare problemi di conflitto usando $ invece di jQuery
  4. 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.

0
Tutte le risposte alla domanda 2
3

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.

18 mar 2012 00:09:25
Commenti

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 jw60660
18 mar 2012 01:54:04

@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

dev_masta dev_masta
19 mar 2018 17:16:36

Grazie mille. Il tuo ultimo paragrafo mi ha salvato In alternativa, se stai usando la versione 3.3+ e il tuo tema chiama wp_footer() allora puoi semplicemente chiamare wp_enqueue_script('my_custom_script') direttamente all'interno della pagina template.

Shady Mohamed Sherif Shady Mohamed Sherif
14 lug 2019 08:55:08
1

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.

18 mar 2012 00:04:22
Commenti

Quel post era per gli shortcode. :D

Stephen Harris Stephen Harris
18 mar 2012 00:11:07