投稿は必ず1つ以上のカテゴリを持っています。カテゴリを表示させましょう。
カテゴリー表示用関数はページ内容表示用ループ内で使用します。
カテゴリー表示は「投稿」に設定できる機能なので「投稿一覧」と「投稿詳細」で使用します。
リンクつきカテゴリー表示簡易版
WordPress関数にリンクつきカテゴリー表示関数が用意されています。
<?php the_category(); ?>
HTML出力結果
<ul class="post-categories"> <li> <a href="http://localhost/WordPressフォルダ/category/カテゴリースラッグ/" rel="category tag"> カテゴリー名 </a> </li> </ul>
リンクつきカテゴリー表示詳細版
<?php /** * タクソノミーリスト * * $taxonomySlug:表示対象タクソノミー */ $taxonomySlug = 'category'; $termData = wp_get_object_terms($post->ID, $taxonomySlug); ?> <?php if ($termData) : ?> <ul class="TaxonomyList"> <?php foreach ($termData as $termDataObj) : $termID = $termDataObj->term_id; $termName = $termDataObj->name; $termLink = get_category_link($termID); ?> <li class="TaxonomyList__item"> <a class="TaxonomyList__link" href="<?php echo esc_url($termLink); ?>"> <?php echo esc_html($termName); ?> </a> </li> <?php endforeach; ?> </ul> <?php endif;
リンクつきカテゴリー表示詳細版:完成版
<?php /** * タクソノミーリスト * * $taxonomySlug:表示対象タクソノミー * $displayLink:リンク表示・非表示 * $displayCount:件数表示・非表示 * $unitName:件数の単位 */ $taxonomySlug = 'category'; //表示対象タクソノミー $displayLink = true; //リンク表示・非表示 $displayCount = false; //件数表示・非表示 $unitName = '件'; //件数の単位 $termData = wp_get_object_terms($post->ID, $taxonomySlug); ?> <?php if ($termData) : ?> <ul class="TaxonomyList"> <?php foreach ($termData as $termDataObj) : $termID = $termDataObj->term_id; $termSlug = $termDataObj->slug; $termName = $termDataObj->name; $termCount = $termDataObj->count; $termCountStr = ''; if ($displayCount) { $termCountStr = '<span class="TaxonomyList__count">'; $termCountStr .= $termCount . $unitName; $termCountStr .= '</span>'; } $termLink = get_category_link($termID); ?> <li class="TaxonomyList__item -term<?php echo esc_attr($termID); ?>"> <?php if ($displayLink) : ?> <a class="TaxonomyList__link" href="<?php echo esc_url($termLink); ?>"> <span class="TaxonomyList__name"> <?php echo esc_html($termName); ?> </span> <?php echo wp_kses_post($termCountStr); ?> </a> <?php else : ?> <span class="TaxonomyList__span"> <span class="TaxonomyList__name"> <?php echo esc_html($termName); ?> </span> <?php echo wp_kses_post($termCountStr); ?> </span> <?php endif; ?> </li> <?php endforeach; ?> </ul> <?php endif;
リンクつきカテゴリー表示詳細版:モジュール版
_TaxonomyList.php
<?php /** * タクソノミーリスト * * $taxonomySlug:表示対象タクソノミー * $displayLink:リンク表示・非表示 * $displayCount:件数表示・非表示 * $unitName:件数の単位 */ $termData = wp_get_object_terms($post->ID, $taxonomySlug); ?> <?php if ($termData) : ?> <ul class="TaxonomyList"> <?php foreach ($termData as $termDataObj) : $termID = $termDataObj->term_id; $termSlug = $termDataObj->slug; $termName = $termDataObj->name; $termCount = $termDataObj->count; $termCountStr = ''; if ($displayCount) { $termCountStr = '<span class="TaxonomyList__count">'; $termCountStr .= $termCount . $unitName; $termCountStr .= '</span>'; } $termLink = get_category_link($termID); ?> <li class="TaxonomyList__item -term<?php echo esc_attr($termID); ?>"> <?php if ($displayLink) : ?> <a class="TaxonomyList__link" href="<?php echo esc_url($termLink); ?>"> <span class="TaxonomyList__name"> <?php echo esc_html($termName); ?> </span> <?php echo wp_kses_post($termCountStr); ?> </a> <?php else : ?> <span class="TaxonomyList__span"> <span class="TaxonomyList__name"> <?php echo esc_html($termName); ?> </span> <?php echo wp_kses_post($termCountStr); ?> </span> <?php endif; ?> </li> <?php endforeach; ?> </ul> <?php endif;
読み込むテンプレート.php
<?php set_query_var('taxonomySlug', 'category'); set_query_var('displayLink', false); set_query_var('displayCount', false); set_query_var('unitName', ''); get_template_part('parts/_TaxonomyList'); ?>