Mu plugin > JS dans le footer avec condition (Créer un compte)

  • Statut : non résolu
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #544197
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Ma configuration WP actuelle
    – Version de WordPress : la dernière
    – Version de PHP/MySQL :
    – Thème utilisé :
    – Extensions en place : clean up, s2members, download-manager
    – Nom de l’hebergeur :
    – Adresse du site : local

    Bonjour,

    J’ai crée un Mu plugin pour placer tous les JS dans le footer.

    Comment mettre une condition concernant le js qui se situe directement dans une page ?

    Explication :

    Les progressbars sont activées via un shortcode, ce qui engendre du JS directement dans la page.

    Si je mets le code:

    <?php
    /*
    MU Plugin: JS_Footer
    Description: Inserer automatiquement les JS dans le footer
    Version1: 14.11.2014
    Réf: http://www.geekpress.fr/wordpress/astuce/inserer-automatiquement-javascript-footer-154/
    */
    //JS dans le footer
        add_action('init', 'mgm_insert_js_in_footer');
        function gkp_insert_js_in_footer() {
         
        // On verifie si on est pas dans l'admin
        if( !is_admin() ) :
         
        // On annule jQuery installer par WordPress (version 1.4.4
        wp_deregister_script( 'jquery' );
         
        // On declare un nouveau jQuery dernière version grace au CDN de Google
        wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js','',false,true);
        wp_enqueue_script( 'jquery' );
         
        // On insere le fichier de ses propres fonctions javascript
        wp_register_script('functions', get_bloginfo( 'template_directory' ).'/js/functions.js','',false,true);
        wp_enqueue_script( 'functions' );
         
        endif;
        }
    ?>

    Le JS des progressbars n’est plus fonctionnel, donc il faut que je trouve comment mettre une condition.

    En ce qui concerne les fichiers JAVASCRIPTs: plugins, theme, WP et autre, c’est parfait 🙂

    Je remercie d’avance si une personne a une idée ou un lien. :search:

    Réf: http://www.geekpress.fr/wordpress/astuce/inserer-automatiquement-javascript-footer-154/

    #982762
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Roòô !!

    J’ai déjà trouvé la solution sur le web, désolée pour le dérangement … Presque à chaque fois, je poste un message…

    #982763
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    J’ai oublié de supprimer cette ligne dans le code ci-dessus:
    $exclude_page = ‘on’; // this turns on the “exclude” option

    Plus simple, il y a aussi cette solution: http://www.kevinleary.net/move-javascript-bottom-wordpress/

    Voili voilà!!

    #982764
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Bonjour,

    Mauvaises surprises, il fait un temps de chien et plus rien ne fonctionne sur mes tests en local = page blanche.

    J’ai tout remis à zéro, j’ai testé à nouveau le code de geekpress.fr (erreur copier coller > mgm).
    Celui-ci fonctionne sauf le thème mer*ouille.

    Dans l’appel du JS qui se trouve dans le shortcode. Le JS est bel et bien mode jQuery noConflict Wrappers

    
    	   jQuery(document).ready(function($){
    	       function progress(percent, $element) {
                	var progressbarwidth = percent * $element.width() / 100;
                	$element.find(“div”).animate({ width: progressbarwidth }, 1000).html(“<strong>‘.$value.’</strong>  ” + percent + “%  “);
               }
               progress(‘.$amount.’, $(“#progressbar’.$i.'”));
           });
        

    Avec le code mis dans un Mu plugin ou dans le fichier functions.php, j’obtiens cette erreur avec Firefox -> Script

    ReferenceError: jQuery is not defined
    	jQuery(document).ready(function($){

    avec $ ou sans c’est idem, j’ai testé toutes les solutions proposées par le codex (lien ci-dessus (“jQuery noConflict”)) et d’autres sur le web (Je suppose que à nouveau, hier soir, j’ai dû oublier de vider le cache :oops:).

    Ce que je ne comprends pas, c’est que le code JS n’a pas de dépendance (enfin, c’est ce qu’il me semble être, mais pas certaine car je ne suis pas dev …) avec des autres fichiers JS mis dans le footer. Peut-être n’est il pas possible de les déplacer quand il y a du javascripte dans une page. Si c’est le cas, dites le moi, afin que je cesse mes recherche… 🙂 car il y a toujours la possibilité de le faire manuellement …

    Ceci ne sont que des tests à titre personnel, afin d’en comprendre en peu plus, les mécanismes de WordPress.

    Merci d’avance pour vos suggestions.

    #982765
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Bon après avoir écumé le web et fait de multiple essais, j’arrive à la conclusion qu’il n’est pas toujours aisé de mettre automatiquement tous les fichiers JavaScript dans le footer.

    Mon avant dernier essai a été d’extraire le shortcode du fichier fn.shortcodes.php et d’en faire un Mu Plugin. Sans surprise, c’est fonctionnel. Dès que j’ajoute le code pour déplacer automatiquement les fichiers JS dans le footer, le résultat est négatif.

    Pour finir j’ai testé sans code, mais avec un plugin conçu pour. Le résultat a été égal à tous mes autres tests. 😉

    Si j’ai du temps, je ferai peut-être d’autre test …

    #982766
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Bonjour,

    Qu’est-ce qu’on s’amuse dans mon bac à sable…

    Des heures à chercher la solution quand celle-ci était sous mon bout du nez ou presque, je dirais une moitié de solution qui m’a permis de lire plusieurs tutos qui porterons leurs fruits à un moment donné…

    Dans le fichier, j’ai mis en commentaire les lignes suivantes:

    //wp_deregister_script( ‘jquery’ );
    //wp_register_script( ‘jquery’, ‘https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js&#8217;,”,false,true);
    wp_enqueue_script( ‘jquery’ );

    Donc ma conclusion: le JS intégré dans le shortcode dépend de jQuery version 1.4.4 installée par WP. Résultat seulement deux fichiers qui proviennent du dossier wp-includes/js/jquery/ restent dans le header. Tous les autres fichiers JAVASCRIPTs des plugins sont déplacés dans le footer.

    Tout ceci reste un peu nébuleux 🙂, par contre, je n’ai plus de souci avec le shortcode contenant du JS

    #982767
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Vu la date de publication jQuery version 1.4.4 installée jQuery version 1.11.1 installée par WP
    Est-ce bien ça??

    #982768
    didier07
    Participant
    Maître WordPress
    1965 contributions

    wp_enqueue_script prend en 4ème paramètre les dépendances. Il suffit de mettre array(‘jquery’) pour que wordpress inclus ton script APRES jQuery

    Didier

    #982769
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    @didier07 Oui, il me semble bien avoir lu quelque chose qui s’ y approche … Je me suis accrochée à :
    qui ne m’a pas donné satisfaction, car je ne métripse pas…

    Merci pour la piste que je vais suivre à pas de loup, sans doute…

    #982770
    didier07
    Participant
    Maître WordPress
    1965 contributions

    wp_register_script te référence le script, donc tu ne peux pas le mettre trop tard dans le déroulement du cycle de requete de wordpress.
    wp_enqueue_script t’insère les scripts référencés dans l’ordre nécessaire pour les dépendances, ou un script que tu lui indique au moment où il lit la ligne. Si tu utilise $in_footer à true, il te le mets en bas de page.

    A+

    Didier

    #982771
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Je viens de le comprendre via WordPress et les JavaScripts asynchrones
    Il est noté à la dernière ligne

    Le code est complet et l’astuce devrait maintenant être opérationnelle, sauf dans certains cas :

    Si votre thème est codé un peu à l’arrache et que des scripts sont mis « en dur »
    Si des scripts sont mis en dur, avant wp_footer()

    PFFFF!!! Pas facile de tout comprendre en 5 mn 😉

    #982772
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Je viens de remarquer que de mettre false à la dernière position avait le même effet que le code en mode commentaire//. J’ai toujours pensé que cette position avait un rapport avec $in_footer à true.

    Donc, je ne vois pas vraiment ou il faut mettre array(‘jquery’). J’ai testé ainsi:

    wp_register_script( ‘jquery’, ‘https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js&#8217;,array(‘jquery’),false,true);
    wp_enqueue_script( ‘jquery’ );

    Je pense retourner dans mon bac à sable pour faire de jolis pâtés de sable le week-end prochain.

    Merci, pour ta contribution.

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