如何统计带有特定参数的帖子

时间:2019-02-05 作者:Jim

我想知道如何通过传递某些参数来请求帖子数量(您可以将其视为“查询”的一部分)。请参见下面的示例。

$args = [
    "numberposts" => -1, 
    "post_type" => "jobs", 
    "s" => "developer", 
    "tax_query" => ["taxonomy" => "IT", "field" => "slug"]
];
$posts = get_posts($args);
$count = count($posts);
我知道下面的函数非常适合我的情况。然而,执行起来非常累人。我不是在一个查询中实际获取所有帖子,而是在寻找一个函数,该函数只对带有特定参数的帖子进行计数。

请记住,我正在传递某些meta\\u查询和tax\\u查询,这将使一些对数据库的查询本身变得相当困难。

希望有人能帮忙。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

优化此查询的最简单方法是添加\'fields\' => \'ids\' 到参数。这样,只会从DB中检索帖子的ID(通常这是一个很大的变化)。

$args = [
    \'numberposts\' => -1, 
    \'post_type\' => \'jobs\', 
    \'s\' => \'developer\', 
    \'tax_query\' => [\'taxonomy\' => \'IT\', \'field\' => \'slug\'],
    \'fields\' => \'ids\'
];
$posts = get_posts($args);
$count = count($posts);
另一方面,您可以使用WP_Query 而不是get_posts. 这样可以设置posts_per_page 设置为1,因此仅检索和使用一个IDfound_posts WP\\u查询字段,以获取与您的条件匹配的帖子总数。

$args = [
    \'posts_per_page\' => 1,
    \'post_type\' => \'jobs\', 
    \'s\' => \'developer\', 
    \'tax_query\' => [\'taxonomy\' => \'IT\', \'field\' => \'slug\'],
    \'fields\' => \'ids\'
];
$query = new WP_Query($args);
$count = $query->found_posts;