wp_query

时间:2015-09-05 23:44:23

标签: wordpress

我正在编写插件,插件会添加一个过滤器。过滤器需要根据post id(自定义表)从数据库中选择一些东西。现在的问题是,如果在20个帖子的循环中,它会运行20个查询并不是很好。所以我想知道,如果有可能做这样的事情:

  1. 在说出类别页面(但在循环之前)运行wp_query之后,获取由它返回的ID数组
  2. 使用步骤1中的数组运行1个查询,以获取所有帖子所需的数据,并将其存储在全局变量中。
  3. 在过滤器中从全局变量检索数据而不是每次调用过滤器时运行查询。
  4. 我想知道是否可以在前端(类别归档等页面,基本上是in_the_loop()为真的所有位置)和后端(列表后,页面列表,cpt列表)上执行此操作)。我用谷歌搜索了一些无法找到的东西。如果有人知道是否可以实现,请告诉我。

1 个答案:

答案 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]

希望这有助于某人。