はじめに
WordPressのカスタム投稿タイプの一覧ページや詳細ページをコーディングしているときに、管理画面でチェックを入れたカテゴリーを表示させたいと思うことはありませんか?
今回はそのためのソースコードをご紹介します。
カスタム投稿タイプの管理画面でチェックを入れたカテゴリーを表示するソースコード
<?php
$post_type = get_post_type();
$tax = get_object_taxonomies($post_type);
if(isset($tax[0])) {
$terms = get_the_terms(get_the_ID(), $tax[0]);
if($terms) {
echo '<div class="case-cat__list">';
foreach ($terms as $term) {
echo '<a class="case-cat__item" href="' . get_term_link($term) . '"><span>' . $term->name . '</span></a>';
}
echo '</div>';
}
}
PR
カスタム投稿タイプの管理画面でチェックを入れたカテゴリーを表示するソースコードの解説
get_post_type関数
WordPressで現在の投稿またはページの投稿タイプを取得するためのWordPressの関数です。
$post_type = ‘カスタム投稿タイプ名’;としても大丈夫ですが、
$post_type = get_post_type();としておけば、カスタム投稿タイプ名が変わっても対応ができます。
get_post_type関数のvar_dumpの出力
string(4) "カスタム投稿タイプ名"
get_object_taxonomies関数
WordPressの投稿タイプやカスタム投稿タイプに関連付けられたタクソノミー(taxonomy)を取得するためのWordPressの関数です。
get_object_taxonomies関数のvar_dumpの出力
array(1) { [0]=> string(8) "get_post_typeで取得した投稿タイプのタクソノミー名" }
if文の部分の解説
下記記事で紹介している「Notice: Undefined offset: 0 inエラー」が表示されないようにするためにif文を追加しています。
Noticeエラーはwp-config.phpでdefine( ‘WP_DEBUG’, true );の「true」の部分を「false」にしておけば表示されないエラーではありますが、「true」にしていてもエラーが表示されない方が当然良いですよね。
Notice: Undefined offset: 0 inエラーの発生原因と対処した方法について記事にしています。
get_the_terms関数
WordPressの関数で、指定された投稿に関連付けられているタームを取得するために使用されます。
似た関数で「get_terms関数」がありますが、管理画面でチェックを入れたカテゴリーは記事ごとに違うので、記事ごとで違うものを出力したい時は「get_the_terms関数」を使用するのが適切です。
「get_terms関数」と「get_the_terms関数」の違いは下記記事で解説しています。
WordPressの「get_terms関数」と「get_the_terms関数」の違いについて解説しています。
get_term_link関数
指定された(タクソノミー)タームのアーカイブページへのパーマリンクを返します。上記のget_the_terms関数で取得したタームを引数に指定することで、記事のパーマリンクを出力することができます。
まとめ
カスタム投稿タイプの一覧ページや詳細ページに、管理画面でチェックを入れたカテゴリーを表示するためのソースコードを紹介しました。コピペで使用できるものになります。cssはご自身の環境に合わせていただければと思います。