web-dev-qa-db-fra.com

Comment ajouter un fichier .js uniquement dans une page spécifique dynamiquement à l'en-tête

Je dois ajouter des scripts pour Google Maps uniquement dans ma page de contact et je ne souhaite pas le renseigner sur toutes les pages. Je ne suis pas disposé à créer un en-tête personnalisé aussi, alors je me suis demandé s'il était possible de renseigner le fichier js uniquement sur la page de contact. J'utilise actuellement ce code pour ajouter du javascript au thème

//Load Scripts
function load_scripts(){
    wp_deregister_script('jquery'); // De-register Existing jquery
    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);
}

mais comme je l'ai dit, j'ai un autre fichier appelé googlemap.js pouvez-vous s'il vous plaît laissez-moi savoir si je peux l'ajouter à la SEULE page de contact à partir de ce code? l'autre point est Wordpress ajoute ce code à la fin du corps (avant tag) qui honnêtement Je ne sais pas comment et pourquoi ! mais dans mon cas spécifique, je dois ajouter le code! pouvez-vous s'il vous plaît laissez-moi savoir comment je peux le faire

Merci

3
Behseini

Utilisez conditionnel is_page() pour charger un script sur une page spécifique.

Voici la version modifiée de votre fonction:

//Load Scripts
function load_scripts(){
    wp_deregister_script('jquery'); // De-register Existing jquery
    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' );

    // register the script
    wp_register_script( 'my-script', 'URL to Script' ); // by default script will load to head

    // conditionally load page
    if (is_page( 'Contact' )) {
        wp_enqueue_script('my-script');
    }
}
3
Sisir

Voici quelques astuces pour vous

Remarque:

wp_register_script(); // is only register js file, it is not running
wp_deregiser_script(); // is completely remove js file, it is not Nice method is to use in page condition check

//Run Js
wp_enqueue_script(); // is use only your register js file,
wp_dequeue_script(); // this function make not to run js file, it is Nice method to use in page codition check

Dans votre fichier functions.php

function js_library() {

    //1. Method
    if ( is_front_page() ) {
        //wp_dequeue_script();
    }

    //2. Method
    if ( is_page(120)) { //120 is page id, you can get page id using using $post->ID or get_the_ID
        //wp_dequeue_script();
    }

    if ( is_page($post->ID) == 120 ) { //120 is your page id
        //wp_dequeue_script();
    }

    if ( is_page('about-us') ) { //about-us is using page slug, you can get page slug http://yourdomain.com/about-us
        //wp_dequeue_script();
    }

    $remove_js_pages = array('about-us', 'contact-us', 'service'); // for multi page slugs
    if ( is_page($remove_js_pages) ) { //remember you can get page slug from your page url ;-)
        //wp_dequeue_script();
    }

    //Using page name
    $pagename = get_query_var('pagename');
    if ( !$pagename && $id > 0 ) {
        // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
        $post = $wp_query->get_queried_object();
        $pagename = $post->post_name;
    }

    if ( is_page() == $pagename ) {
        //wp_dequeue_script();
    }
}
3
por