Come Aggiungere un File .js Dinamicamente Solo in una Pagina Specifica nell'Head
Devo aggiungere alcuni script per Google Maps solo nella mia pagina dei contatti e non voglio che vengano caricati su tutte le pagine. Non voglio nemmeno creare un header personalizzato, quindi mi chiedevo se esiste un modo per includere il file js solo nella pagina dei contatti? Attualmente sto usando questo codice per aggiungere javascript al tema:
//Carica Scripts
function load_scripts(){
wp_deregister_script('jquery'); // Deregistra il jQuery esistente
wp_enqueue_script('jquery', 'http://code.jquery.com/jquery.js', '', '', true);
wp_enqueue_script('bootstrap-jquery', get_template_directory_uri().'/assets/js/bootstrap.js', '', '', true);
}
Ma come ho detto, ho un altro file chiamato googlemap.js. Potreste dirmi se posso aggiungerlo SOLO alla pagina dei contatti da questo codice? L'altro punto è che WordPress sta aggiungendo questo codice alla fine del body (prima del tag ) che non so come e perché! Ma nel mio caso specifico ho bisogno di aggiungere il codice nell'head! Potreste dirmi come posso fare questo?
Grazie

Utilizza il condizionale is_page()
per caricare script su pagine specifiche.
Ecco la versione modificata della tua funzione:
//Carica Scripts
function load_scripts(){
wp_deregister_script('jquery'); // Deregistra il jQuery esistente
wp_register_script('jquery', 'http://code.jquery.com/jquery.js', '', '', true);
wp_enqueue_script( 'jquery' );
wp_register_script('bootstrap-jquery',get_template_directory_uri().'/assets/js/bootstrap.js', array( 'jquery' ), '', true);
wp_enqueue_script( 'bootstrap-jquery' );
// registra lo script
wp_register_script( 'my-script', 'URL allo Script' ); // di default lo script verrà caricato nell'head
// carica condizionalmente per pagina
if (is_page( 'Contatto' )) {
wp_enqueue_script('my-script');
}
}

Grazie Sisir, ho solo alcune domande qui! Perché hai aggiunto wp_enqueue_script(''); al codice e come mai il codice viene aggiunto al body invece che all'head? Come posso forzare l'aggiunta di my-script nell'head?

di default gli script vengono caricati nell'<head>
non nel footer. Puoi controllare questo quando registri uno script vedi wp_register_script()
cerca l'argomento $in_footer

assicurati di cancellare la cache del browser. Hai qualche URL dove posso vederlo in azione?

sì www.teddybearfamilychildcare.com

continuiamo questa discussione nella chat

Ecco alcuni trucchi per te
Nota:
wp_register_script(); // registra solo il file js, non lo esegue
wp_deregister_script(); // rimuove completamente il file js, non è il metodo migliore da usare, meglio usare un controllo condizionale di pagina
//Esegui JS
wp_enqueue_script(); // usa solo il tuo file js registrato,
wp_dequeue_script(); // questa funzione evita l'esecuzione del file js, è un buon metodo da usare nel controllo condizionale di pagina
Nel tuo file functions.php
function js_library() {
//1. Metodo
if ( is_front_page() ) {
//wp_dequeue_script();
}
//2. Metodo
if ( is_page(120)) { //120 è l'ID della pagina, puoi ottenere l'ID della pagina usando $post->ID o get_the_ID
//wp_dequeue_script();
}
if ( is_page($post->ID) == 120 ) { //120 è l'ID della tua pagina
//wp_dequeue_script();
}
if ( is_page('chi-siamo') ) { //'chi-siamo' è lo slug della pagina, puoi ottenere lo slug della pagina da http://tuodominio.com/chi-siamo
//wp_dequeue_script();
}
$remove_js_pages = array('chi-siamo', 'contatti', 'servizi'); // per più slug di pagina
if ( is_page($remove_js_pages) ) { //ricorda che puoi ottenere lo slug della pagina dall'URL della tua pagina ;-)
//wp_dequeue_script();
}
//Usando il nome della pagina
$pagename = get_query_var('pagename');
if ( !$pagename && $id > 0 ) {
// Se una pagina statica è impostata come homepage, $pagename non sarà settato. Recuperalo dall'oggetto interrogato
$post = $wp_query->get_queried_object();
$pagename = $post->post_name;
}
if ( is_page() == $pagename ) {
//wp_dequeue_script();
}
}
