首页 > 解决方案 > 只有第一个“if 函数”派生了最新版本的 .js 页面(wordpress)?

问题描述

以下用于将 .js 页面的最新版本加载到 wordpress 页面上。第一组(assets1)工作正常。但是第二个函数加载最新版本的js页面失败,只能上传原版。我希望这两个函数都派生最新版本的 .js 页面,我需要更改哪些内容?

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);
    }
}

标签: javascriptphpwordpresswordpress-theming

解决方案


夫妇的事情。

  1. 您可以将版本/修订添加到 enqueue 挂钩本身,因此您不必担心将版本连接到文件名并意外排除诸如“?”之类的字符。钩子为你做到了。

  2. 您缺少第二个函数的 add_action 。

  3. 您应该将两个 if 语句组合到同一个函数中。

尝试这样的事情:

<?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');


推荐阅读