Learning site for website creation

018:カテゴリーを表示

  • 投稿日:2020年11月08日
  • 更新日:2020年11月11日

投稿は必ず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');
    ?>