Cum să adaugi un fișier .js doar pe o anumită pagină dinamic în Head
Am nevoie să adaug niște scripturi pentru Google Maps doar pe pagina de contact și nu vreau să le încarc pe toate paginile. Nu doresc să creez un header personalizat, așa că mă întrebam dacă există vreo metodă de a încărca fișierul js doar pe pagina de contact? momentan folosesc acest cod pentru a adăuga JavaScript în tema:
//Încărcare Scripturi
function load_scripts(){
wp_deregister_script('jquery'); // Dezînregistrează jQuery existent
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);
}
dar cum am menționat, am un alt fișier numit googlemap.js și aș dori să știu dacă pot să-l adaug doar pe pagina de contact prin acest cod? Un alt aspect este că WordPress adaugă acest cod la sfârșitul body-ului (înainte de tag-ul ) și sincer nu înțeleg cum și de ce! În cazul meu specific, trebuie să adaug codul în ! Poți să-mi arăți cum pot face asta?
Mulțumesc

Folosește condiția is_page()
pentru încărcarea scriptului pe o anumită pagină.
Iată versiunea modificată a funcției tale:
//Încarcă Scripturi
function load_scripts(){
wp_deregister_script('jquery'); // Dezînregistrează jquery existent
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' );
// înregistrează scriptul
wp_register_script( 'my-script', 'URL către Script' ); // implicit scriptul se va încărca în head
// încarcă condiționat pe pagină
if (is_page( 'Contact' )) {
wp_enqueue_script('my-script');
}
}

Mulțumesc Sisir, am doar câteva întrebări aici! De ce ai adăugat wp_enqueue_script(''); în cod și cum se face că codul se adaugă în body și nu în head? Cum pot forța ca my-script să fie adăugat în head?

în mod implicit, scripturile se încarcă în <head>
nu în footer. Poți controla acest lucru când înregistrezi un script, vezi wp_register_script()
caută argumentul $in_footer

asigură-te că ștergi cache-ul browserului. Ai vreun URL unde pot să-l văd în acțiune?

da www.teddybearfamilychildcare.com

hai să continuăm această discuție în chat

Iată câteva trucuri pentru tine
Notă:
wp_register_script(); // înregistrează doar fișierul js, nu îl rulează
wp_deregiser_script(); // elimină complet fișierul js, nu este o metodă recomandată, este mai bine să folosești verificări condiționale pe pagină
//Rulează Js
wp_enqueue_script(); // folosește doar fișierul js pe care l-ai înregistrat,
wp_dequeue_script(); // această funcție face ca fișierul js să nu ruleze, este o metodă bună de utilizat în verificările condiționale pe pagină
În fișierul tău functions.php
function js_library() {
//1. Metodă
if ( is_front_page() ) {
//wp_dequeue_script();
}
//2. Metodă
if ( is_page(120)) { //120 este id-ul paginii, poți obține id-ul paginii folosind $post->ID sau get_the_ID
//wp_dequeue_script();
}
if ( is_page($post->ID) == 120 ) { //120 este id-ul paginii tale
//wp_dequeue_script();
}
if ( is_page('despre-noi') ) { //'despre-noi' este slug-ul paginii, poți obține slug-ul paginii din URL: http://domeniultau.com/despre-noi
//wp_dequeue_script();
}
$remove_js_pages = array('despre-noi', 'contact', 'servicii'); // pentru mai multe slug-uri de pagini
if ( is_page($remove_js_pages) ) { //amintește-ți că poți obține slug-ul paginii din URL-ul paginii tale ;-)
//wp_dequeue_script();
}
//Folosind numele paginii
$pagename = get_query_var('pagename');
if ( !$pagename && $id > 0 ) {
// Dacă o pagină statică este setată ca pagină principală, $pagename nu va fi setat. Obține-l din obiectul interogat
$post = $wp_query->get_queried_object();
$pagename = $post->post_name;
}
if ( is_page() == $pagename ) {
//wp_dequeue_script();
}
}
