为什么我的WordPress模板不能识别我的JQuery库和CSS文件?

时间:2017-03-01 02:09:09

标签: javascript php jquery css wordpress

我创建了以下脚本,并在我的WordPress中添加了functions.php文件:

add_action('wp_enqueue_scripts', 'scripts_styles');
function scripts_styles(){
     if(is_page_template('Disclosures.php')){
       wp_enqueue_script('jquery', get_template_directory_uri().'/js/jquery.validate.js', array(), GOVPRESS_VERSION, false );
       wp_enqueue_script('jquery', get_template_directory_uri().'/js/jquery.min.js', array(), GOVPRESS_VERSION, false );
       wp_enqueue_script('bootstrap', get_template_directory_uri().'/js/bootstrap.min.js', array(), GOVPRESS_VERSION, false );
       wp_enqueue_script('handlebars',  get_template_directory_uri().'/js/handlebars.min.js', array(), GOVPRESS_VERSION, false );
       wp_enqueue_script('addrows', get_template_directory_uri().'/js/addrows.js', array(), GOVPRESS_VERSION, false );
   }
}

function wpse_enqueue_page_template_styles() {
    if ( is_page_template( 'Disclosures.php' ) ) {
        wp_enqueue_style( 'bootstrapthemecss', get_template_directory_uri() . '/css/bootstrap-theme.min.css', array(), GOVPRESS_VERSION, false );
        wp_enqueue_style( 'bootstrapcss', get_template_directory_uri() . '/css/bootstrap.min.css', array(), GOVPRESS_VERSION, false );
        wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/main.css', array(), GOVPRESS_VERSION, false );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse_enqueue_page_template_styles' );

但是,我的自定义模板无法识别它们。

换句话说,我使用这些脚本和样式表测试了我的页面,它们运行良好。

我能够验证表单字段并以指定的样式显示结果。

然而,他们没有验证相同的表单字段,并且页面没有被设置样式。

我错过了什么?

仅仅是一个FYI,主题的名称是govpress。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  1. 您似乎将两个具有相同名称的脚本排入队列:jquery。但是,jquery已存在于WordPress中,您可能会注意到wp_enqueue_script()说明: 不会覆盖 。这意味着每当您尝试将与以前排队的脚本同名的脚本排入队列时......没有任何反应。

  2. 如果您对WP中嵌入的jquery的现有版本不满意,则需要取消注册并注册新的版本,并使用以下确切名称:jquery。这个名称非常重要,因为很多WP脚本都依赖于jquery。如果您更换它,它们将取决于您的版本而不是包含的版本。无论您的模板逻辑如何(如果您删除了默认模板逻辑),请确保将jquery版本排入队列。

  3. 您应该将jquery指定为依赖于jquery的每个脚本的依赖项数组中的依赖项。

  4. 如果您的脚本和样式都没有加载,您可能需要调试脚本检查is_page_template('Disclosures.php')是否在您正在测试它的页面中返回true。一个简单的die('this just happened...')将用于测试目的。