有选择地将脚本入队&在需要的地方激活

时间:2013-03-27 作者:vonholmes

如果我有选择地将脚本排队,例如,我有一个滑块,我只想在主页上加载,它在主js中被激活,例如:

wp_enqueue_script( \'main-js\' );
if ( is_front_page() ) {    
  wp_enqueue_script( \'slider\' );
}
那么,最好的方法是什么?因为我所有的jquery都在主js中,并且应用于每个页面,所以调用来激活滑块(例如。$(\'#slider\').slider();) 仅适用于主页?

希望这是有意义的,如果有人能解释一下最好的方法,我将不胜感激。

更新时间:

在函数中也是如此。php我有:

// Hook in function with javascript files using the wp_enqueue_scripts hook 
add_action( \'wp_enqueue_scripts\', \'load_javascript_files\' );

// Register javascript files
function load_javascript_files() {

wp_register_script( \'slider\', get_template_directory_uri() . \'/js/slider.js\', array(\'jquery\'), \'\', true );
wp_register_script( \'main-js\', get_template_directory_uri() . \'/js/main.js\', array(\'jquery\'), \'\', true );

wp_enqueue_script( \'main-js\' );
if ( is_front_page() ) {  
  wp_enqueue_script( \'slider\' );
}

}
和main。js具有通用代码,例如:

jQuery(document).ready(function($){

  //activate slider
  $(\'#slider\').slider();  

    // scroll body to 0px on click
    $(\'a[href=#top]\').click(function () {
        $(\'html, body\').animate({
            scrollTop: 0
        }, \'slow\');
        return false;
    });

    //add opacity to linked images
    $("a img").hover(function(){
       $(this).stop().animate({"opacity": 0.7}, 200);
       },function(){
       $(this).stop().animate({"opacity": 1}, 300);
    });
  });
因此,我需要滑块激活只适用于主页。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

如果您只在需要脚本时才将其排入队列,则可以在尝试使用插件之前先在JS中检查插件的命名空间是否存在:

if( $.fn.slider ) {
    $(\'#slider\').slider();
}
或者另一种选择是通过wp_localize_script:

$wpa_script_data = array(
    \'is_front_page\' => is_front_page(),
    \'slider_options\' => array(
        \'speed\' => 6000
    )
);

wp_localize_script(
    \'main-js\',
    \'wpa_vars\',
    $wpa_script_data
);
然后在js中:

if( wpa_vars.is_front_page ) {
    $(\'#slider\').slider({
        \'speed\' : wpa_vars.slider_options.speed
    });
}

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php