カスタム投稿でタクソノミーのタームとWPコアのタグを別々に扱う方法

みなさんこんにちは、AoiSakuyaです。
今回はWrodPressのカスタム投稿でタクソノミーのタームとWPコアのタグを別々に扱えるようにする方法を紹介していこうかと思います。
※紹介する内容は、タームとタグを同時に使用した際にタクソノミーのタームだけを取り出したい場合には使えると思います。

カスタム投稿のタクソノミーのタームとWPコアのタグについて

まず、カスタム投稿のタクソノミーのタームとWPコアのタグについてですが、基本的には同じような扱いをされるものになっています。なので、タクソノミーのタームを取り出そうとした際にはタグも一緒に取得されてしまいます。この際に注意が必要なのが、タグを付けたカスタム投稿では、「タクソノミー」ではなく「タグ」の方で取得されるという点です。
ただし、タクソノミーのタームが全く取れないというわけではないので安心してください。
※上記はあくまでも私個人の解釈なので参考程度に考えてください。

タクソノミーのタームとWPコアのタグを別々に扱う方法

今回はタクソノミーのタームとWPコアのタグを別々に扱い、タクソノミーのタームのみを取り出す方法を紹介していきます。
紹介すると言っても、長いソースコードを書くわけでもなくたった数行で終わります。ただし今回の方法はpost(投稿)をループを使って出力して、一覧などを作成する際に記事と一緒にタグではなくタクソノミーのタームを出力したい場合を前提としています。

それではソースコードを書いていきます。
タクソノミーのタームを表示させる前の部分に以下のソースコードをを入れて取得してみてください。

// 投稿のIDを取得
$post_id = get_the_ID();
// 投稿タイプを取得
$post_type = get_post_type();
// 投稿のタクソノミーを取得
$taxonomies = get_taxonomies(array('object_type' => [$post_type]));
// タクソノミーに属するタームを取得
$terms = get_terms($taxonomies);
// タクソノミーに属するタームを取得
$terms = get_the_terms($post_id, $taxonomies);
これでタグではなくその記事のタクソノミーのタームが取得できると思います。
あとは取得したものをforeachとかのループで取得し、echoとかで出力すれば表示することができます。もちろんget_term_link()でタームのリンクを取得することも可能です。

最後に

今回紹介したものはあくまでも一例ですので、もしかしたら他にいい方法があるのかもしれませんが、おそらく一番短いソースコードで取得できるので試してみてもいいと思います。