Seule la première « fonction if » dérive de la dernière version d’une page .js (wordpress) ?

Publié par Jean-Michel le

Ce qui suit est utilisé pour charger la dernière version d’une page .js sur une page wordpress. Le premier ensemble (assets1) fonctionne bien. Cependant, la deuxième fonction ne parvient pas à charger la dernière version de la page js, uniquement le téléchargement d’origine. Je voudrais que les deux fonctions dérivent la dernière version de la page .js, que dois-je changer pour ce faire ?

function load_js_assets1() {
    if( is_page( 'Example Page 1' ) ) {
        $datetime = new DateTime('now');
        $revision = $datetime->format("YmdHis");
        wp_enqueue_script('example1.js?'.$revision, 'http://website.com/example1.js', array('jquery'), '', false);
    }
}
add_action('wp_enqueue_scripts', 'load_js_assets1');
function load_js_assets2() {
    if( is_page( 'Example Page 2' ) ) {
        $datetime = new DateTime('now');
        $revision = $datetime->format("YmdHis");
        wp_enqueue_script('example2.js'.$revision, 'http://website.com/example2.js', array('jquery'), '', false);
    }
}

Solution n°1 trouvée

Il vous manque le second add_action, ce qui peut être la raison pour laquelle le second script ne se charge pas correctement. Essayez ce code, qui utilise deux fonctions et add_actionsi vous êtes sur les pages que vous voulez qu’elles soient utilisées :

function load_js_assets1() {
   $datetime = new DateTime('now');
   $revision = $datetime->format("YmdHis");
   wp_enqueue_script('example1.js?'.$revision, 'http://website.com/example1.js', array('jquery'), '', false);
}

function load_js_assets2() {
   $datetime = new DateTime('now');
   $revision = $datetime->format("YmdHis");
   wp_enqueue_script('example2.js'.$revision, 'http://website.com/example2.js', array('jquery'), '', false);
}

if( is_page( 'Example Page 1' ) ) {
    add_action('wp_enqueue_scripts', 'load_js_assets1');
}

if( is_page( 'Example Page 2' ) ) {
    add_action('wp_enqueue_scripts', 'load_js_assets2');
}

Solution n°2 trouvée

Quelques choses.

  1. Vous pouvez ajouter la version/révision au hook de mise en file d’attente lui-même, de sorte que vous n’avez pas à vous soucier de concaténer la version au nom de fichier et d’exclure accidentellement des caractères comme ‘?’. Le crochet le fait pour vous.

  2. Il vous manque l’add_action sur la deuxième fonction.

  3. Vous devez simplement combiner les deux instructions if dans la même fonction.

Essayez quelque chose comme ceci :

<?php
function load_js_assets() {

    // Declare your revision variables once

    $datetime = new DateTime('now');
    $revision = $datetime->format("YmdHis");

    // Test against first statement.  If true enqueue the first script

    if( is_page( 'Example Page 1' ) ) {
        wp_enqueue_script('example1.js', 'http://website.com/example1.js', array('jquery'), $revision, false);
    }

    // Test against second statement.  If true enqueue the second script

    if( is_page( 'Example Page 2' ) ) {
        wp_enqueue_script('example2.js', 'http://website.com/example2.js', array('jquery'), $revision, false);
    }

    // Do more if needed...

}
add_action('wp_enqueue_scripts', 'load_js_assets');

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *