是否计算自定义帖子类型和特定分类和术语中的帖子?

时间:2013-03-04 作者:Red

我想统计一下,有多少帖子在名为“视频”的自定义帖子类型中直播,但只有来自名为“工作”类别的帖子。

<?php $count_posts = wp_count_posts(\'videos\'); echo $count_posts->publish; // ?>
如何调整上述代码以实现这一点?

谢谢

7 个回复
SO网友:Stephen S.

替代解决方案使用WP_Query 将是:

$args = array(
  \'cat\' => 4,
  \'post_type\' => \'videos\'
);
$the_query = new WP_Query( $args );
echo $the_query->found_posts;

SO网友:Red

Found a solution.

<?php $posts = get_posts(\'post_type=videos&category=4\'); 
$count = count($posts); 
echo $count; 
?>
SO网友:michalzuber

对于特定的自定义分类法,请尝试:

$the_query = new WP_Query( array(
    \'post_type\' => \'CUSTOM_POST_TYPE\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'CUSTOM_TAXONOMY\',
            \'field\' => \'id\',
            \'terms\' => TERM_ID
        )
    )
) );
$count = $the_query->found_posts;
文档位于https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

SO网友:Viktor Kruglikov

这也应该起作用:

$category = get_term(\'work\', \'category\');
$posts_in_category = $category->count;

SO网友:Cato

我自己在研究类似的事情时发现了这个问题,所以这里是我的解决方案,以防它对其他人有用。。。注意:Harmonic的答案是有效的,这取决于具体情况,尽管这样做可能更容易:

$count = get_category($category->term_id)->category_count;

哪里$category 是您的分类对象。

这里需要注意的是,这假设没有其他post\\u类型使用相同的分类法。详细信息:get_category() 实际上是的包装函数get_term().

在本例中,get\\u term()有一个类似name\\u的参数,而get\\u category()没有。可能还有其他一些小区别。

请参见:get_term()get_category

SO网友:Kwag.degi

基本上,如果您使用找到的解决方案执行此操作,那么当您有许多帖子要获取时,您将浪费大量的DB资源。

$query = new WP_Query();
echo $query->found_posts();
然而,WP\\u Query->found\\u posts只需获取“posts\\u per\\u page”,并为您计算(*)mysql作业。所以我建议您使用后一种。

SO网友:Harmonic

我知道这是一个古老的线程,但它首先出现在谷歌上,所以这里是如何做到这一点的真正解决方案。

$term = get_term( $termId, $taxonomy );
$total_in_term = $term->count;
因此,您需要传递术语和分类的ID。这是最轻量级的解决方案,并且具有使用自定义分类法的好处。

结束

相关推荐

Search posts by Tag

我希望我的搜索表单只显示按标记组织的结果。我知道你可以添加&tag=TAGNAME 但如何将其集成到表单中,以便我的网站只搜索包含与搜索框中输入的内容相同的标记的帖子?我在页面上有两个搜索,因此理想情况下,我希望能够通过HTML将其添加到表单中,而不是其他任何地方,但任何答案都可以:)谢谢