如何仅在需要时使用wp_enQueue_style()和wp_enQueue_script()?

时间:2011-12-11 作者:Aram Kocharyan

我的插件使用wp\\u enqueue\\u style()和wp\\u enqueue\\u script()来加载资源,但我要记住,不要降低用户的性能,只有在当前帖子集包含插件的短代码时才加载这些内容。我通过以下方式完成此操作:

add_filter(\'the_posts\', \'CrayonWP::the_posts\');
\\u posts在wp\\u head之前调用,但之后也会调用几次(可能是针对小部件中最近的帖子等)。

这里的问题是,当我在帖子内容中搜索我的短码并向排队过程发出信号时,有时会出现以下情况:

在wp\\u head(我想要什么)之前调用\\u post,但那组post没有我的短码,我也没有排队在调用wp\\u head之前,是否有明确的方法来检查页面上会出现什么,以便我可以确信我只会在需要时排队,而不会错过机会?

EDIT:

伟大的文章:http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/

但它没有考虑在一个页面请求中对\\u帖子的多次调用:(

EDIT 2:

我尝试的是使用:

add_action(\'wp\', \'CrayonWP::queue\');
wp 操作仅在请求完成后立即使用一次。

在这个函数中:

global $wp_query;
$posts = $wp_query->posts;
但是,我不确定$wp\\u query变量在循环中是如何变化的。如果一次又一次地调用\\u posts过滤器,这是否意味着当小部件跨自己的请求发送时,原始查询可能会发生变化?显然,我并不想检查“最近的帖子”中的短代码,因为它们目前可能不会显示在页面上。使用wp 动作挂钩代替the_posts 过滤器包含为给定页面请求的帖子,无论是单个页面还是主页?

1 个回复
SO网友:Stephen Harris

我没有测试过,但可以is_main_query() (出现在3.3中)用于测试正在运行的查询是否是用于填充“循环”的查询。(我不确定它是如何处理新的WP_Query 实例)。

法典说它可以用于pre_get_posts, 但是看着代码,我不明白为什么不能在以后的钩子上调用它(即。the_posts)- 它所做的只是检查全局$wp_the_query 针对当前查询。

结束

相关推荐