2012-09-17 47 views
0

所以我一直试图让插件脚本/ css加载只在需要时。我有一个名为“审查”的帖子,下面在我的functions.php我试图加载插件只有在职位与catagory“审查”,而不是,页面/ post/home screen..nothign加载。任何可能的帮助?wordpress加载插件css/js在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'); 
    }} 

仍然希望我能有这个对某些类别的工作,而不是..

+0

在互联网上发现,in_category只用于“循环”,任何其他选项相同的功能,但在functions.php? –

回答

1

我想你想is_category

这可以在循环外使用,并返回一个布尔值取决于铜rrent视图。

更新:在你的行动挂钩

仔细看,为什么“它不工作”的原因是因为行动的优先次序。你试图在'init'操作中取消注册和取出脚本,这可能在脚本本身实际注册和/或入队之前触发。

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

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

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。

一些进一步的检查将确保函数本身正在触发,并且适当的视图会使您的条件评估为true。

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

+0

当前视图?我在Codex上看到,如果它是Catagory Archive页面,我已经尝试过is_category('review')并且它没有工作。我应该将add_action添加到init还是wp_print_scripts?不知道为什么这是困难的,那么它应该是.. –

+0

我已经添加了更多的信息给你,可能有帮助。我认为这可能只是Wordpress的优先级问题。此外,您应该确保这不是一个缓存问题,并禁用任何缓存插件,以及清除浏览器缓存。除此之外,我没有想法。 – maiorano84

+0

我已经尝试了你的建议,似乎没有与出列或取消注册工作..我已经得到它使用我编辑在OP中的示例工作,但是,它仍然不适用于is_category或in_category。但是,我会接受你的回答 –

0

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