web-dev-qa-db-ja.com

カスタム投稿タイプおよび特定のカテゴリ内の投稿数をカウントする

「ビデオ」というカスタム投稿タイプに含まれる投稿数を数えようとしていますが、「仕事」というカテゴリの投稿のみを数えています。

<?php $count_posts = wp_count_posts('videos'); echo $count_posts->publish; // ?>

これを達成するためにどのように上記のコードを調整できますか。

ありがとうございます。

6
Red

WP_Query を使用した代替ソリューションは次のようになります。

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

解決策を見つけました。

<?php $posts = get_posts('post_type=videos&category=4'); 
$count = count($posts); 
echo $count; 
?>
5
Red

これもうまくいくはずです。

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

特定のカスタム分類法を試してください。

$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にあるドキュメント

2
michalzuber

基本的にあなたがあなたの見つけた解決策でそれをするならば、あなたが取得する投稿がたくさんあるときあなたはかなりのDBリソースを浪費するでしょう。

$query = new WP_Query();
echo $query->found_posts();

しかし、WP_Query-> found_postsは単に 'posts_per_page'を取得し、COUNT(*)mysqlジョブを実行します。だから私はあなたが後者のものを使うことを勧めます。

0
Kwag.degi

私はこれが古いスレッドであることを知っています、しかしそれはグーグルで最初に現れるので、これを行う方法についての本当の解決策はここにあります。

$term = get_term( $termId, $taxonomy );
$total_in_term = $term->count;

だからあなたは用語のIDと分類法を渡す必要があります。これは、最軽量のソリューションであり、カスタム分類法を使用する利点があります。

0
Harmonic