我正在编写插件,插件会添加一个过滤器。过滤器需要根据post id(自定义表)从数据库中选择一些东西。现在的问题是,如果在20个帖子的循环中,它会运行20个查询并不是很好。所以我想知道,如果有可能做这样的事情:
我想知道是否可以在前端(类别归档等页面,基本上是in_the_loop()为真的所有位置)和后端(列表后,页面列表,cpt列表)上执行此操作)。我用谷歌搜索了一些无法找到的东西。如果有人知道是否可以实现,请告诉我。
答案 0 :(得分:0)
好的,所以我浏览了核心代码,发现the_posts
似乎是我正在寻找的过滤器。它包含查询返回的所有帖子对象,并且可以在帖子循环播放之前访问。
可以这样访问:
add_filter('the_posts', 'testtest', '20', 1);
function testtest($posts)
{
//do some magic here
return $posts;
}
$posts
是一个WP_Post_Objects数组,它包含以下键:
[ID]
[post_author]
[post_date]
[post_date_gmt]
[post_content]
[post_title]
[post_excerpt]
[post_status]
[comment_status]
[ping_status]
[post_password]
[post_name]
[to_ping]
[pinged]
[post_modified]
[post_modified_gmt]
[post_content_filtered]
[post_parent]
[guid]
[menu_order]
[post_type]
[post_mime_type]
[comment_count]
[filter]
希望这有助于某人。