Wordpress

wordpressでget_termsを使って特定のカスタムタクソノミーに属する記事がある場合のみに表示する

wordpressで、特定のカスタムタクソノミーに属する記事がある場合のみにリンクを表示するようにしてみます。

条件のイメージとしてはこんな感じです。

get_terms

register_taxonomyとregister_post_typeでカスタム投稿タイプを作る

register_post_type:WordPress私的マニュアル

 

投稿を分類するためにカスタムタクソノミーを定義します。

関数リファレンス/register taxonomy – WordPress Codex 日本語版

カスタム投稿タイプ「trainings」に、カスタムタクソノミー「curriculums」を紐付けます。

タクソノミーを追加しておきましょう。スラッグを指定して解りやすくします。

get_terms2

「1st」、「2nd」、「3rd」の3種類ので記事を分類します。

では準備したものを利用して、HTMLをif条件分岐で表示/非表示と切り替えるよう指示していきます

 

まずは、記事があるかどうか判断するために、get_termsを使いスラッグを指定して情報を取得します。
get_terms:WordPress私的マニュアル

get_termsの第2引数は最初にまとめて定義して変数に代入することにします。

count()関数で記事があるかどうか判断し、{}内にバナーリンクを書いていきます。
ここまでの記述で、カスタムタクソノミー「カリキュラム(culliculums)」の、スラッグ「1st」にチェックして投稿した記事が1つでもある場合には{}内の処理が実行されるという意味です。

 

「1st」~「3rd」それぞれの記事の一覧が見れるように、get_term_link()でタクソノミのアーカイブページへのリンクを取得します。
get_term_link:WordPress私的マニュアル

 

get_term_linkの第1引数にはタクソノミのIDを指定します。今回の場合はスラッグがそのままIDとなるので、「1st」と書きましょう。

同じように「2nd」「3rd」のタクソノミの記事を投稿した時にバナーが表れるように記述していきます。

それぞれget_termsで記事があるか確認してから、get_term_linkでリンクを取得しています。

ここまでのコードを全部書くとこのようになります。

最初のif(count(get_terms(‘curriculums’ , $txPosts)) > 0) {}で、以降の記述をすべて内包しています。
「1st」「2nd」「3rd」と段階的に公開していくことを前提としているので、「1st」の記事がない場合にはそれにつづく他の部分も表示されず、else{}の表示となります。

get_termsでタクソノミの記事の存在を確認し、get_term_link()でアーカイブページへのリンクを作る

今回はそういう役目でしたが、この2つはかなり使用頻度が高いので今後も覚えておくと吉ですね。

 

でわ!