Qual è il modo più efficiente per aggiungere un file javascript a specifici articoli e/o pagine?
Mi chiedo quale sia il metodo più efficiente per aggiungere un file javascript specificamente per un articolo e/o una pagina.
Ecco alcune soluzioni che ho pensato:
- Passare alla visualizzazione di modifica HTML e inserire il JavaScript lì (soluzione piuttosto scadente)
- Campi personalizzati con il JavaScript specifico per quell'articolo/pagina nelle coppie chiave & valore
- Nel footer.php, caricare i file JavaScript in base alla pagina in cui ti trovi (questo però porta a molti condizionali)
Da notare che nessuno dei file JavaScript sarà condiviso tra le pagine - sarà letteralmente specifico per quello che stai visualizzando al momento.
Qualche suggerimento?

Credo che il miglior compromesso tra efficienza e l'utilizzo dei metodi corretti di WordPress per aggiungere JavaScript sia inserire qualcosa di simile nel file functions.php del tuo tema. Per esempio:
functions.php:
function load_scripts() {
global $post;
if( is_page() || is_single() )
{
switch($post->post_name) // post_name è lo slug del post, più coerente per il matching qui
{
case 'home':
wp_enqueue_script('home', get_template_directory_uri() . '/js/home.js', array('jquery'), '', false);
break;
case 'about-page':
wp_enqueue_script('about', get_template_directory_uri() . '/js/about-page.js', array('jquery'), '', true);
break;
case 'some-post':
wp_enqueue_script('somepost', get_template_directory_uri() . '/js/somepost.js', array('jquery'), '1.6', true);
break;
}
}
}
add_action('wp_enqueue_scripts', 'load_scripts');
Questo ti dà il controllo completo su cosa viene caricato e dove, una posizione centralizzata nel file functions.php del tuo tema per modificare cosa viene caricato dove: e, in questo modo, utilizza i metodi di WordPress per aggiungere JavaScript ai tuoi post e pagine in modo sicuro.

Funzione carina e utile. Hai ragione sull'utilità di avere una 'posizione centralizzata'. Grazie mille.

Immagino si possa pulire un po' il codice. Stai fondamentalmente controllando la stessa cosa con due switch-case diversi. Direi di combinare entrambi gli switch-case, e il condizionale if potrebbe essere if (is_page() || is_single())
. Che ne pensi Ben?

@Ben è il file functions.php presente nel tema o in wp-includes? Il titolo della mia pagina è Access to Home Online e ho inserito la tua funzione cambiando home
in Access to Home Online
ma non funziona?

@Ciastopiekarz ho aggiornato la mia risposta per mostrare meglio che il codice va nel file functions.php del tuo tema.

Quello che farei è posizionare nello header o nel footer e utilizzare i condizionali PHP.
Per esempio:
<?php if (is_page ('your-page')){?>
<script type="text/javascript" src"the file path"></script>
<?php } elseif ( is_page ('another')){?>
<script type="text/javascript" src"the file path"></script>
<?php } else { ?>
<script type="text/javascript" src"the file path"></script>
<?php } ?>
In questo modo non richiami tutti gli script ogni volta che una pagina viene caricata, ma solo quelli di cui hai bisogno.
Ecco un link al codex di Wordpress http://codex.wordpress.org/Conditional_Tags
E se hai script particolari che potrebbero essere richiamati solo per un singolo post, utilizza i campi personalizzati.

Grazie Nicole - questo era il punto #3. È una soluzione decente considerando che non avrò molte pagine... ci sto ancora pensando.

L'altro metodo testato è il seguente: aggiungi direttamente nella pagina dall'editor e inserisci i commenti all'interno del tag script, altrimenti non funzionerà.
<script type="text/javascript">
<!--
var a = 5;
alert("hello world. Il valore di a è: " + a);
-->
</script>
