WordPressで複数のカスタムタクソノミーのタームに所属している投稿数の合計を取得する方法

最近制作しているサイトでは、複数のカスタム投稿タイプを作って細分化するために「1つのカスタム投稿タイプに対して、複数のカスタムタクソノミーを設定」している状況があって・・・

で、そのカスタムタクソノミーからさらに細分化するために、タームを作って投稿を所属させています。

複数のカスタムタクソノミーのタームに所属している投稿数の合計を取得する方法

ところで・・・複数のカスタムタクソノミーのタームに所属している投稿数を絡めて、いろいろと処理をする必要があって。

例えば、「food」「drink」と2つのカスタムタクソノミーのタームに所属している投稿数の合計を取得する場合は、下のような方法でできます。

「food」「drink」 2つのカスタムタクソノミーがあった場合

<?php
//複数のカスタムタクソノミーのタームに所属している投稿数の合計を取得
$count = ''; //初期設定 ここに投稿数の合計を格納する
$taxonomies = array('food','drink'); //配列にカスタムタクソノミーを指定
$terms = get_terms( $taxonomies ); //get_termsで取得
if ( !empty( $terms ) && !is_wp_error( $terms ) ){ //エラーがなければ以下の処理を実行
 foreach( $terms as $term ){ //取得できたタームごとに処理
  $count += $term->count; //投稿数を加算していく
 }
}
?>

上のコードがやっていること

大体コード内のコメントに書きましたが、「$count」に格納されている数字が投稿数の合計です。「get_terms」を使うと取得できますね。「get_terms」はもっといろんなことができますので、詳細はCodexをご参考ください。

私個人的にですが、冒頭に書いたように「複数のカスタム投稿タイプそれぞれに複数カスタムタクソノミーが指定されていて、さらにタームも複数存在する」っていうパターンでサイトを設計することが多くなってきました。

今後も使いそうなのでメモ書きました。

著者:bouya Imamura