如何高效地获取没有内容的近期帖子?

时间:2021-09-17 作者:silviubogan

这将是伟大的,使一个单一的数据库请求,但我也不知道如何做到这一点。我有这个代码,它可以工作,但我想更改它以提高效率:

$cs = get_categories(array(
    \'orderby\' => \'name\',
    \'order\' => "ASC",
));

$params = array(
    \'last_five_articles\' => array()
);
foreach ($cs as $c) {
    $rp = wp_get_recent_posts(array(
        \'numberposts\' => 5,
        \'post_status\' => \'publish\',
        \'category\' => $c->term_id
    ));

    foreach ($rp as $idx => $crt)
    {
        $rp[$idx]["post_content"] = NULL;

        $rp[$idx]["url"] = esc_url(get_permalink($crt["ID"]));

        $rp[$idx]["is_current"] = $crt["ID"] === get_the_ID();
    }

    $params[\'last_five_articles\'][$c->slug] = $rp;
}

更新1

我在每篇帖子中使用的字段是:

  • url (自定义字段)
  • is_current (自定义字段)
  • post_title
  • post_date
1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

如何获取最近没有内容的帖子?

与其他帖子一样,不要使用帖子内容。

不获取帖子内容不会提高性能,实际上可能会影响性能。这是因为如果WordPress需要帖子内容,它需要进行额外的查询。当您查询一篇文章时,WP会启动临时缓存,这样无论您请求了多少次,它都只会在一次请求中请求一篇文章。

通过更具体地说明您想要哪些领域,您可能会认为您在提高性能,但实际上您正在损害它,因为WP不再能够缓存,必须生成定制的定制结果。

只要求特定的字段可以最大限度地减少服务器和浏览器之间的带宽使用,这样您就可以获得一块很好的数据,而且占用的空间非常适合移动电话。但你不是手机,你是数据中心的服务器,数据库可能在同一台机器上。

您希望能够缓存和批量请求数据,以便查询便宜且可重用。当与对象缓存相结合时,这一功能尤其强大。

这将是伟大的,使一个单一的数据库请求,但我也不知道如何做到这一点。

这是做不到的,你想做什么requires 多个查询

即使您确实找到了一个API函数来执行此操作,该函数也会在内部进行5个单独的查询,不会提高性能。

其他注意事项:

  • wp_get_recent_posts 是辅助函数。剪掉它,直接转到WP_QueryWP_Post, so使用$post->post_content 相反,您最好将帖子ID或帖子本身存储在$params[\'last_five_articles\']