• 現在、<?php $taxonomy=”タクソノミーA”;$term_slug=’タームA’;$term = get_term_by(‘slug’,$term_slug,タクソノミーA);echo $term->count;?> という書き方で件数を表示していますが、特定タームを除外してカウントするにはどうすればいいのでしょう?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • <?php $taxonomy="タクソノミーA";
    $term_slug='タームA';
    $term = get_term_by('slug',$term_slug,$taxonomy);
    echo $term->count;?>

    上のはただ改行入れて整理しただけのものですが、除外したいタームを
    タームAの部分に書かないということではダメですか?

    トピック投稿者 hellomac

    (@hellomac)

    書き方が悪くて申し訳ありません。

    上記コードでタクソノミーA のタームA の件数を現在表示しています。
    タクソノミーA のタームA の件数からタームB にも属している件数を除したい際のやり方でつまずいています。

    モデレーター jim912

    (@jim912)

    カテゴリーやタームの件数は、表示時の負荷を下げるため、記事が更新された際に集計してあります。get_terms や get_term_by などで得られるカウント数はこの数値を用いているだけなので、別のタームに属するものを除いてカウントといったことは簡単にはできません。

    やるとなれば、register_taxonomy のパラメータ update_count_callback を指定し、更新時にカウント数を計測する関数をオリジナルのものに差し替えるか、WP_Query 等を用いて、タームA,タームB双方に属する記事数を取得して、タームAのcountから引くかだろうと思われます。

    また、そもそもタームBのカウントを引かなければならないという事自体、設計として適切かどうか、他に実装方法がないかと検討もされた方が良いかもしれません。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「特定タームを除外してカウント(件数表示)したい」には新たに返信することはできません。