【问题标题】:wordpress load plugin css/js in functions.php w/ conditional tagswordpress 在functions.php中加载插件css/js,带条件标签
【发布时间】:2012-09-09 21:47:38
【问题描述】:

所以我一直在尝试让插件脚本/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' );
    }}

edit:: 我可以使用它,除了它不适用于 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' );
    }}

仍然希望我可以将这项工作用于某些类别..

【问题讨论】:

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

标签: wordpress conditional


【解决方案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。

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

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

【讨论】:

  • 当前视图?我在 codex 中读到如果它是 Catagory Archive 页面,我已经尝试过 is_category('review') 并且它没有工作..我应该是 add_action 到 init 还是 wp_print_scripts?不知道为什么这比它应该更难..
  • 我为您添加了一些可能对您有所帮助的信息。我认为这可能只是 Wordpress 的优先级问题。此外,您可能应该确保这也不是缓存问题并禁用任何缓存插件,并清除浏览器缓存。除此之外,我没有想法。
  • 我已经尝试过您的建议,似乎不适用于 dequeue 或 deregister..我已经使用我在 OP 中编辑的示例使其工作,但是,它仍然不适用于 is_category或 in_category。不过,我会接受你的回答
  • 抱歉,我帮不上忙。如果您找到解决问题的有效解决方案,请随时更新您自己的答案并接受该答案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2019-05-27
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多