统计所有员额类型的总数

时间:2018-02-09 作者:JoaMika

我使用此代码计算一个自定义帖子类型的帖子数量。

要将这三种不同的自定义帖子类型汇总在一起,最好的方法是什么?

function get_all_them_ven_posts(){
    $post_type = \'restaurants\';
    $count_posts = wp_count_posts( $post_type );

    $published_posts = $count_posts->publish;
    return $published_posts;
}

3 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

为什么不直接得到每种帖子类型的数量并求和呢?

function get_all_them_ven_posts(){
  $count= 0;
  $post_types = [ \'postType1\', \'postType2\', \'postType3\' ];
  foreach( $post_types as $post_type ) {
    $count_posts =  wp_count_posts( $post_type );
    $count = $count + $count_posts->publish;
  }
  return $count;
}

SO网友:Nicolai Grossherr

我很好奇,所以我microtime它有三种帖子类型,共有大约120个帖子。比较三个wp_count_posts() 呼叫一个get_posts() 呼叫如果您使用fields 后者的参数,值为ids, 然后它们的速度大致相同,否则会慢30倍。这个get_posts() 相比之下,该方法可能在95%的范围内,所以它可能会快一点,但我没有运行足够的迭代来得到最终结果。所以我想说你可以用任何一种方式。

// use either
$p1c = wp_count_posts( \'post-type-1\' )->publish;
$p2c = wp_count_posts( \'post-type-2\' )->publish;
$p3c = wp_count_posts( \'post-type-3\' )->publish;
$res = $p1c + $p2c + $p3c;
//alternatively
$pts = [ \'product\', \'post\', \'page\' ];
$res = 0;
foreach ( $pts as $pt) {
    $res = $res + wp_count_posts( $pt )->publish;
}

// or use this
$res = count( get_posts( [ 
  \'post_type\' => [ \'product\', \'post\', \'page\' ], 
  \'posts_per_page\' => -1, 
  \'fields\' => \'ids\' 
] ) );

SO网友:Abhay Yadav

获取自定义帖子类型中的帖子总数

$args = array( \'post_type\' => \'custompost\', \'post_status\' => \'publish\', \'posts_per_page\' => -1);
$loop = new WP_Query( $args );
$total = $loop->found_posts;
echo $total;

结束

相关推荐

修改WooCommerce Storefront子主题Single.php“Related Posts”时遇到问题

我想显示过去一周发布的某个类别的帖子。我使用query_posts() 但我已经读到了这是一个多么糟糕的主意。因此,我尝试创建一个可以修改并放入functions.php 然后直接调用或通过single.php “我的孩子”主题的单个博客帖子模板。我的功能从未起过作用,希望能得到一些帮助,找出我做错了什么。function new_function() { //Arguments $args = array( \'post_t