[Résolu] conflit de scripts : comment charger un script sur une seule page ? (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 25)
  • Auteur
    Messages
  • #526047
    Oric
    Membre
    Initié WordPress
    13 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 3.5.2
    – Version de PHP/MySQL : 5.3.8 / 5.5.16
    – Thème utilisé : Swatch (WooThemes) (modifié via un thème enfant)
    – Extensions en place : WooSidebars
    – Nom de l’hebergeur : en local (Wampserver)
    – Adresse du site : /

    Problème(s) rencontré(s) :

    Bonjour à tous,

    Après avoir cherché en vain une solution à mon problème depuis hier, je rejoins votre communauté pour demander votre aide.

    Je créé actuellement un site avec le thème Swatch (je travaille sur un thème enfant de Swatch 1.5.1), que j’ai choisi pour son effet slider en page d’accueil. J’ai également installé un effet javascript « accordéon » dans une autre page. J’ai intégré les différents scripts nécessaires à l’accordéon grâce à wp_enqueue_script dans mon fichier functions.php, ce qui fait que les scripts nécessaires à l’effet accordéon sont chargés sur tout le site et cela créé un conflit avec le slider de la page d’accueil, qui ne fonctionne plus.
    Comme je n’ai pas besoin des scripts « accordéon » sur la page d’accueil j’ai donc cherché à limiter leur chargement à la page concernée, mais cela ne fonctionne pas : les scripts « accordéon » ne sont alors plus chargés du tout. Voici le code correspondant dans mon fichier functions.php :

    function monaccordeon(){

    wp_enqueue_script ( ‘jquery.min’, ‘http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js’, », »,true );
    wp_enqueue_script ( ‘jquery.accordion’, ‘http://localhost/monsite/wp-content/themes/swatch-child/js/jquery.accordion.js’, », »,true );
    wp_enqueue_script ( ‘jquery.easing.1.3’, ‘http://localhost/monsite/wp-content/themes/swatch-child/js/jquery.easing.1.3.js’, », »,true );
    wp_enqueue_script (‘function-accordion’, ‘http://localhost/monsite/wp-content/themes/swatch-child/js/function-accordion.js’, », »,true );

    }
    if ( is_page( 351 ) ) {
    add_action(‘init’,’monaccordeon’);
    }

    J’ai essayé également d’exclure la page d’accueil avec if ( !is_home ) {
    … mais ça ne fonctionne pas non plus (les scripts ne sont pas chargés)

    J’ai peu de connaissance en php et j’utilise WordPress depuis peu, aussi il y a fort à parier que j’ai fait une erreur quelque part. Pouvez-vous éclairer ma lanterne ? Est-ce que c’est une bonne idée de chercher à charger les scripts sur une page précise ou bien dois-je chercher une autre solution ?

    Un grand MERCI par avance pour vos conseils et votre aide !

    #901693
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Vous pouvez utiliser
    http://codex.wordpress.org/Function_Reference/wp_register_script pour déclarer tous vos script sans les charger sur une page précise.
    A l’appel, vous faites

    <?php 
    if ( is_page( 351 ) ) {
    wp_enqueue-script('mon_script',….);
    }

    #901694
    Oric
    Membre
    Initié WordPress
    13 contributions

    Merci pour votre réponse rapide mais à vrai dire je n’ai pas tout compris…:oops:. J’ai essayé d’adapter le code mais ça ne fonctionne toujours pas. Je ne l’ai peut-être pas mis là où il fallait…

    function monaccordeon() {
    wp_register_script ( ‘jquery.min’, ‘http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js’, », »,true );
    if ( is_page( 351 ) ) {
    wp_enqueue_script ( ‘jquery.min’ );
    }
    }
    add_action(‘init’,’monaccordeon’);

    Ou alors le problème vient d’ailleurs ? Pour faire un test, j’ai créé une fonction de débuggage avec un pour vérifier que mes fonctions passent bien :

    function mydebugmode(){
    echo ‘HELLO THERE !’;
    }
    if ( !is_admin()) {
    add_action(‘init’,’mydebugmode’);
    }

    Ca fonctionne avec et … et c’est tout ! Pas de résultat avec is_page(), is_page ( 351 ) (j’ai bien vérifié dans l’adresse et l’ID est bien celle-là), is_home, ou is_front_page ! Est-ce normal et est-ce que ça a un lien avec ma difficulté à charger le script sur une seule page ?

    Si quelqu’un a une idée, ce serait super ! 🙂

    #901695
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Il est inutile de faire un appel a add_action, faites directement :

    wp_register_script (  ‘jquery.min’, ‘http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js’, », »,true );
    if ( is_page( 351 ) ) {
    wp_enqueue_script ( ‘jquery.min’ );
    }

    #901696
    Oric
    Membre
    Initié WordPress
    13 contributions

    Rien à faire ! Le script refuse de se charger quelle que soit la page dès qu’il y a la condition « if ( is_page( 351 ) ) » !

    #901697
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    C’est peut-être, mais je n’en suis pas certain, un problème venant des arguments vides par défauts ?
    essayez : wp_register_script ( ‘jquery.min’, ‘http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js&rsquo;,false,false,true );

    #901698
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Oups, non, plutôt

    wp_register_script (  ‘jquery.min’, ‘http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js’,array(),false,true );

    #901699
    Oric
    Membre
    Initié WordPress
    13 contributions

    Malheureusement, ça ne fonctionne toujours pas.

    #901700
    luciole135
    Participant
    Maître WordPress
    13714 contributions
    #901701
    Oric
    Membre
    Initié WordPress
    13 contributions

    Oui, il est bien valide. J’arrive par ailleurs à faire fonctionner le script « accordéon » sans problème sur la page où je l’ai installé… mais dans ce cas-là c’est le slider de l’accueil qui ne fonctionne pas (et vice-versa). C’est pour ça que j’aurais aimé pouvoir charger le script sur une page spécifique : j’ai deux scripts qui fonctionnent indépendamment l’un de l’autre, qui ne sont pas sur la même page mais qui rentrent en conflit malgré tout. C’est assez frustrant…

    Merci en tout cas pour votre aide.

    #901702
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    est-ce que le wp_enquue-script fonctionne sans le test is_page ,

    #901703
    Oric
    Membre
    Initié WordPress
    13 contributions

    Re-bonjour 🙂

    Oui, le « wp_enqueue_script » fonctionne sans le « is_page ». Donc j’arrive bien à charger mes scripts pour tout le site WordPress mais pas pour une page précise.

    #901704
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Etes-vous certain alors que le numero 351 soit le bon ?

    #901705
    Oric
    Membre
    Initié WordPress
    13 contributions

    Voici l’adresse de la page donc a priori c’est bien ça, non ?
    http://localhost/monsite/?page_id=351

    #901706
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Oui, c’est le bon numéro, c’est donc que vous insérez le code dans le mauvais fichier !
    vous l’insérez où ?

15 sujets de 1 à 15 (sur un total de 25)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.