WP_Query高效率之fields

发布于:2021-05-04 最后编辑:2021-05-04 所属分类:后端 阅读次数:1353

不管是写WordPress主题还是插件,大部分时候都要用到 WP_Query这个查询类。我个人比较喜欢用WordPress原生的查询,而不是自己去写SQL语句。不过在文章数量很多的情况下,我们需要对 WP_Query的参数比较了解才能尽可能的提高查询效率。今天说一个案例,客户要求是批量修改分类下的全部文章的一个自定义字段,我觉得不算困难,就只收了200,结果发现某个分类下,有一万多篇文章。。。果然,代码写好以后,查询别的分类都没事,查询这个分类就会报错。由于是用的AJAX,只能看到返回500错误,没看到具体错误信息。不过估计是内存溢出错误。

本来打算改用SQL语句进行查询,想想还是先去看看文档吧,然后就在官方文档看见了这个 fields参数。因为我只需要获取文章ID,不需要其他的,所以,添加 fields就OK了。而且查询速度也快了很多。示例代码如下:

public static function getPostCount($term_id)
{
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'cat'            => $term_id,
        'posts_per_page' => -1,//获取全部文章
        'fields'         => 'ids'//仅返回文章ID数组
    );

    $the_query = new WP_Query( $args );

    return ( $the_query->have_posts() ) ? $the_query->found_posts : 0;
}
标签: