Cum să adaugi un fișier .js doar pe o anumită pagină dinamic în Head

16 nov. 2013, 11:01:29
Vizualizări: 17.4K
Voturi: 4

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

0
Toate răspunsurile la întrebare 2
9

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');
    }
}
16 nov. 2013 11:28:51
Comentarii

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?

Behseini Behseini
16 nov. 2013 11:33:53

î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

Sisir Sisir
16 nov. 2013 11:36:35

Mulțumesc, dar se adaugă în body!

Behseini Behseini
16 nov. 2013 11:38:03

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

Sisir Sisir
16 nov. 2013 11:43:25

da www.teddybearfamilychildcare.com

Behseini Behseini
16 nov. 2013 11:44:19

care este scriptul pe care vrei să-l încarci în head?

Sisir Sisir
16 nov. 2013 11:47:11

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

Behseini Behseini
16 nov. 2013 11:47:53

Nu ar trebui să fie if ( is_page('Contact') )?

Django Reinhardt Django Reinhardt
31 iul. 2015 17:53:33

@Sisir: pot să adaug două întrebări? Încerc: 1. cum folosesc scriptul încărcat de pe pagină? 2. Ce este "Contact" în ultimul exemplu? URL-ul paginii?

3000 3000
4 apr. 2017 10:06:25
Arată celelalte 4 comentarii
0

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();
    }
}
16 nov. 2013 12:06:54