Wordpress有条件地加载缩小的脚本

时间:2016-12-13 10:57:33

标签: javascript php jquery wordpress

我有一个脚本,我只想在有人particular page

时加载

我加载了像 Functions.php

这样的脚本
function my_assets() {

wp_enqueue_script( 'footerlinks', get_stylesheet_directory_uri() . '/js/footerlinks.js', array( 'jquery' ), '1.0', true );
wp_enqueue_script( 'gallery', get_stylesheet_directory_uri() . '/js/gallery.js', array( 'jquery' ), '1.0', true );
wp_enqueue_script( 'about', get_stylesheet_directory_uri() . '/js/about.js', array( 'jquery' ), '1.0', true );
wp_enqueue_script( 'legal', get_stylesheet_directory_uri() . '/js/legal.js', array( 'jquery' ), '1.0', true );


if ( !is_page( 490 ) ) {
        wp_dequeue_script('about');
}
if ( !is_page( 29804 ) ) {
        wp_dequeue_script('legal');
}
if ( !is_page( 24574 ) ) {
        wp_dequeue_script('gallery');
}

}

    add_action( 'wp_enqueue_scripts', 'my_assets' );

此代码有效,但我也在缩小和连接脚本。当我执行此部分时,脚本不会起作用,但它仍然在页面中加载而没有任何错误。

这是脚本 legal.js

<!-- Script for making legal blurbs clickable to display one at a time -->
jQuery(document).ready(function(){
    jQuery(".legaltab").hide();
    console.log("legal script running");
    var tprivacy = document.createAttribute("target");
    var ttc = document.createAttribute("target");
    var tdisclaimer = document.createAttribute("target");

    var bprivacy = document.getElementById("bprivacy");
    tprivacy.value = "sprivacy";
    bprivacy.setAttributeNode(tprivacy);

    var btc = document.getElementById("btc");
    ttc.value = "stc";
    btc.setAttributeNode(ttc);

    var bdisclaimer = document.getElementById("bdisclaimer");
    tdisclaimer.value = "sdisclaimer";
    bdisclaimer.setAttributeNode(tdisclaimer);


    jQuery(".legalblurb").click(function(){
    console.log("inside link button function");
        jQuery(".legaltab").hide();
        jQuery("#"+ jQuery(this).attr("target") ).show();
    }); 
});

我装错了吗?其他一些问题讨论了gulp或grunt,但我不确定它们是否是同一个东西。

3 个答案:

答案 0 :(得分:1)

您的JS中有错误。例如,在legal.js中你有:

<!-- Script for making legal blurbs clickable to display one at a time -->

在Javascript中添加评论的正确方法是

// Script for making legal blurbs clickable to display one at a time

/* Script for making legal blurbs clickable to display one at a time */

我看了一下你在网站上编译过的JS,看到了JS中另一个糟糕的评论:

<!--Script for footer links that take you everywhere else-->

我建议您使用JavaScript strict mode并使用JSHint测试您的代码。这将大大减少缩小错误。

legal.js的已清理版本将是:

/*globals jQuery*/
/* Script for making legal blurbs clickable to display one at a time */
jQuery(document).ready(function($){
   'use strict';
    $(".legaltab").hide();
    console.log("legal script running");
    var tprivacy = document.createAttribute("target");
    var ttc = document.createAttribute("target");
    var tdisclaimer = document.createAttribute("target");

    var bprivacy = document.getElementById("bprivacy");
    tprivacy.value = "sprivacy";
    bprivacy.setAttributeNode(tprivacy);

    var btc = document.getElementById("btc");
    ttc.value = "stc";
    btc.setAttributeNode(ttc);

    var bdisclaimer = document.getElementById("bdisclaimer");
    tdisclaimer.value = "sdisclaimer";
    bdisclaimer.setAttributeNode(tdisclaimer);


    $(".legalblurb").click(function(){
    console.log("inside link button function");
        $(".legaltab").hide();
        $("#"+ $(this).attr("target") ).show();
    }); 
});

答案 1 :(得分:0)

对你来说这很奇怪,你为什么不这样做:

wp_register_script( 'gallery', get_stylesheet_directory_uri() . '/js/gallery.js', array( 'jquery' ), '1.0', true );

if ( is_page( 24574 ) ) {
    wp_enqueue_script('gallery');
}

minify工具基于wp_enqueue_script函数

工作

答案 2 :(得分:0)

首先检查您是否使用任何缓存插件。如果您使用任何类似的插件,请禁用它。清除浏览器缓存。之后,让你的代码像这样

wp_register_script( 'gallery', get_stylesheet_directory_uri() . '/js/gallery.js', array( 'jquery' ), '1.0', true );

if ( is_page( 'gallery' ) ) {
    wp_enqueue_script('gallery');
}

它应该适合你。