post_is_in_descendant_categoryをカスタムタクソノミーにも対応させてみました

その記事がどのカテゴリーで登録されているかどうかチェック用に in_category() という関数があります。 ただ、この関数は子カテゴリーまでは対応していません。

例として以下のカテゴリー構成で考えてみます。

Cat-A
+---subCat-1
+---subCat-2
+---subCat-3
Cat-B
Cat-C
Cat-D

この構成において 「Cat-A配下に投稿されている場合は表示を変更する」 としたい場合、in_category() では以下の書き方をする必要があります

if ( in_category(array('Cat-A','subCat-1','subCat-2','subCat-3')) ){ ... }

しかし、これが意外とめんどくさい。
サブカテゴリー subCat-4 が増えたらいちいちテンプレートも修正しないといけない。

そういった手間をなくすために、in_categoryのページ内でpost_is_in_descendant_category() という関数が紹介されています。

これなら、親カテゴリー「Cat-A」のカテゴリーIDを指定すれば、サブカテゴリーの増減を意識する必要がなくなります。

ただ、この関数も若干使い勝手が悪くて、カテゴリーIDでなくてはいけないのと、親カテゴリーも含めるにはCodexにも書いてある通りin_category(親カテゴリーID)も書く必要があります。

そのあたりを自分流に改善してプラグイン化してみました。
別関数でカスタムタクソノミーにも対応させてみています。

カテゴリーなら、こんな感じで書いてもらえればうまく動くと思います。

if ( post_is_in_category_slug('Cat-A') ){ ... }

カスタムタクソノミーなら、こんな感じ。

if ( post_is_in_taxonomy_slug('Cat-A', カスタムタクソノミー名) ){ ... }

 

よかったらお試しください ^^

コメント

  1. syun128 より:

    これは便利!