ジャンクワードの森

カスタム投稿タイプで通常の記事と同じようにタグを表示させる方法

2014-04-09[WordPress

当サイトではアフィリエイト広告を利用しています。

カスタム投稿タイプで投稿した場合、タグの設定をすることができますが「the_tags()」が使用できないため、別な記述をしないと表示させることができません。
カスタム投稿タイプで通常の記事と同じようにタグを表示させる方法
実はここを機能させるのが予想外に大変で(無知すぎるともいいます)、色々と試した結果なんとか表示させることができたので他にも困っている人がいたらと思いメモしておきます。


このエントリーをはてなブックマークに追加

細かいことはあとにして、最終的に辿り着いた記述のベースがこちら

[php]<?php echo get_the_term_list( $post->ID,’タクソノミー名’,’Tags: ‘,’,’,” ); ?>[/php]

「the_tags()」を使うかわりに「get_the_term_list()」と使ってタグを表示させるという感じですね。WordPressが得意な人はこれだけでOKだと思いますけど、ここからのハードルが高かったんですよね…

タクソノミー名って…

ここで難題なのがベースの所に表示されているタクソノミー名の所。正直ここが一番の謎でタクソノミー名を理解するのが大変でした(というか、今でも完全には把握していない)。

なので、ここの細かいところが知りたい人は「タクソノミー名 WordPress」とかで検索してもらうとして、結果だけ書くとカスタム投稿タイプでタグを表示させる時に使用するタクソノミー名はカスタム投稿タイプをセットアップした時に「register_taxonomy」で設定した名称になります。

カスタム投稿タイプのセットアップに関しては「カスタム投稿タイプの作成からトップページへの表示までの流れ」に書いているので、そちらを参考にしてください。

具体的にサンプルの例でいくと、カスタム投稿タイプ「野球」で使用しているタグを表示させるには以下のように記述をします。

[php]<?php echo get_the_term_list( $post->ID,’baseball_tag’,’Tags: ‘,’,’,” ); ?>[/php]

この考え方でいくと、タグだけではなくカテゴリーも同様に表示させることが可能です。
また、タクソノミー名を機械的に引っ張ってくるのは難しそうなので(配列を使えば可能かな)、カスタム投稿タイプが複数ある場合(サンプルのように「野球」と「バスケット」とか)はそれぞれ記述していく必要があります。

※カスタム投稿タイプのセットアップで「register_taxonomy」を設定していない場合に表示できるかのテストはしていませんが、フックがない以上表示させることはできないような気はします(試してないので多分ですが)。

「$post->ID」の呼び出しが上手く行かない場合(ループの外で使う)

「get_the_term_list」パラメータで必須項目になっているのが「$post->ID」になります。こいつは記事のループの中では素直に呼び出すことができますが、ループの外に出てしまうと上手く呼び出すことができません(WordPressの仕組み上当然の結果です)。

タグの表示をループ内にする場合は気にすることはないですが、デザインや広告の関係でループの外に出したいというケースもあると思います。WordPressの挙動を理解していない人がデザインをする時によく起きる現象かな。

そんな時にやっているのがこの方法

1、WordPressのループ内の適当な所にこんな感じのものを記述
[php]<?php $tag_postid = $post->ID ;?>[/php]

要はループの中にある「$post->ID」を「$tag_postid」に代入するということですね。こうしておけばこの記述の下では「$tag_postid」を使えば「$post->ID」が使用できるようになります。なお「$tag_postid」はなんでもいいのですが、WordPressで使われているパラメータと被らないように注意します。

2、タグを表示させたい場所にこれを記述
[php]<?php echo get_the_term_list( $tag_postid,’baseball_tag’,’Tags: ‘,’,’,” ); ?>[/php]

「$post->ID」のかわりに「$tag_postid」を使っただけですね。
これで、WordPressのループの外にあったとしても正しい「$post->ID」を呼び出して、タグを表示させることが可能になります。

ちなみに「$post->ID」の代入はタグの呼び出し以外でも色々と使うことができます。
この他で同じ方法でよく使うのが記事のパーマリンクを参照する「get_permalink()」。SNSにパーマリンクを引き分けたす場合に使います(SNSのリンクボタンがループの外になることが多いので)。

カスタム投稿タイプでタグを表示させたいというニーズはそんなに多くないと思いますが、タグを活用しているサイトはそれなりにあるので、少なからずニーズはあるのかなと思います。

Sponsored Links

同じカテゴリの最新記事

運営者情報など

運営サポート

35-45 WOMAN

35-45WOMAN(サンゴーヨンゴーウーマン)は、「カッコいいけど身近」な女性向けWEBマガジン。

デザインとかコーディングとか、WordPressの構築とか裏側の部分を一通りやらせていただいています。

ブログ更新のアイテムとかスキルとか