带有条件标签的functions.php中的wordpress加载插件css / js

时间:2012-09-17 16:19:36

标签: wordpress wordpress-plugin conditional

所以我一直试图让插件脚本/ css只在需要时加载。我有一个名为“评论”的帖子的类别,在我的functions.php下面我试图只在带有“审查”的帖子上加载插件,而不管是什么页面/帖子/主屏幕......没有加载。任何可能的帮助?

add_action( 'init', 'stopmyrpjs', 100 );
function stopmyrpjs() {
if (!in_category('review')){
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
        wp_deregister_script( 'myrp-stuff' );
    wp_dequeue_script( 'jtip' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-ui' );
    wp_dequeue_script( 'myrp-stuff' );
    wp_dequeue_script( 'jquery-ui-accordion' );
    wp_dequeue_script( 'jscolor' );
    wp_dequeue_script( 'sorttable' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-rating' );
    }}

编辑::我有它的工作,除了它不适用于is_category或in_category ..我的工作是在下面:

add_action( 'wp_print_scripts', 'stopmyrpjs', 100 );
function stopmyrpjs() {
if (!is_single()){
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
wp_deregister_script( 'myrp-stuff' );
    wp_dequeue_script( 'jtip' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-ui' );
    wp_dequeue_script( 'myrp-stuff' );
    wp_dequeue_script( 'jquery-ui-accordion' );
    wp_dequeue_script( 'jscolor' );
    wp_dequeue_script( 'sorttable' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-rating' );
    }}

仍然希望我能为某些类别做这项工作..

2 个答案:

答案 0 :(得分:1)

我想你想要is_category

这可以在循环外部使用,并根据当前视图返回一个布尔值。

<强>更新

仔细观察你的动作钩子,“它不起作用”的原因是因为动作的优先级。您正试图在'init'操作中取消注册和出列脚本,这可能是在脚本本身实际注册和/或入队之前触发的。

我也猜测外部脚本是由各种插件注册的,每个插件都有自己的动作挂钩和优先级。

尝试将其更改为“wp_footer”,而不是使用init钩子,以确保在删除任何多余的脚本之前,所有脚本都由相应的插件加载:

if (!is_category('review'))
{
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
    add_action('wp_footer', 'stopmyrpjs');
}
function stopmyrpjs(){
    wp_deregister_script( 'myrp-stuff' );
    wp_dequeue_script( 'jtip' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-ui' );
    wp_dequeue_script( 'myrp-stuff' );
    wp_dequeue_script( 'jquery-ui-accordion' );
    wp_dequeue_script( 'jscolor' );
    wp_dequeue_script( 'sorttable' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-rating' );
}

另外,请记住,wp_dequeue_script是一个相对较新的函数(自3.1版本起)。如果由于某种原因您仍然遇到问题,请尝试将wp_dequeue_script更改为wp_deregister_script。

进一步检查将确保函数本身正在触发,并且相应的视图会使您的条件值评估为真。

希望这会有所帮助,祝你好运。

答案 1 :(得分:0)

Script Logic 是一个WordPress插件,可让您完全控制所有JavaScript和CSS文件。您可以通过使用WP的conditional tags来有条件地在需要的页面上加载CSS和JS文件。