我的插件使用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没有我的短码,我也没有排队稍后,另一个打给\\u posts的电话试图排队,但为时已晚在调用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
过滤器包含为给定页面请求的帖子,无论是单个页面还是主页?