是否有可能让get_posts()或WP_Query不返回帖子内容?

时间:2011-01-24 03:44:43

标签: wordpress wordpress-plugin

get_posts()WP_Query几乎适用于所有内容,但有时我想查询我的所有帖子,只显示有关它们的基本信息。

例如,如果我正在创建一个显示标题的页面并链接到我博客上的每个帖子,那么我没有理由查询这些帖子的内容。如果我有成千上万的帖子,并且每个帖子的内容都是巨大的,那么将所有这些内容存储在php变量中只是为了获得这些帖子的标题和永久链接将是非常浪费的。但这正是这两个功能的作用!

我希望能够做到这样的事情:

$query = array(
  'numberposts' => -1,
  'exclude_fields' => 'post_content'
);
$all_posts = get_posts($query);

是否有人知道如何在不编写自定义查询的情况下执行此操作?

(自定义查询的缺点 - 这是一个巨大的缺点 - 就是你不能使用WordPress的所有优秀功能,例如,所有的循环功能)

1 个答案:

答案 0 :(得分:1)

我唯一知道的方法是使用插件中的过滤器(或主题中的functions.php)重写SQL查询。由于您有时只想删除内容,因此必须创建一种在必要时从模板文件中注册和删除此过滤器的方法。

这是您要连接的过滤器:

http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_request

通过不列出WordPress期望的列来小心破坏某些内容,因为您将使用显式列列表替换*。

一般情况下,编写原始SQL以及获取标题/链接/所需的一小段代码可能更容易。在这几个地方你需要这样做。

您也可以忽略所有这一切,仅使用WordPress的内置函数编写它,并依赖于您可以缓存页面并且每天只浪费一次内存或者通常允许刷新缓存的事实