0

所以我一直在尝试让插件脚本/css 仅在需要时加载。我有一个名为“review”的帖子类别,在我的functions.php下面我试图仅在类别为“review”的帖子上加载插件,而不是,无论页面/帖子/主屏幕..nothign正在加载。有什么帮助吗?

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' );
    }}

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

4

2 回答 2

1

我想你想要is_category

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

更新:

更仔细地查看您的操作挂钩,“它不起作用”的原因是因为操作的优先级。您正在尝试在“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。

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

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

于 2012-09-17T17:35:29.853 回答
0

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

于 2014-06-17T08:02:44.547 回答