expexp.jp

WordPress

【WordPress】通常の投稿とカスタム投稿でカテゴリー出力をまとめたい

WordPressで通常の投稿とカスタム投稿でカテゴリーの出力方法をまとめる例を紹介します。

関数作成

まずはfunctions.phpに出力用の関数を記述します。

通常の投稿とカスタム投稿の条件分岐には、get_query_var()関数を使い、ポストタイプの取得可否で条件分岐させます。

条件分岐後、カスタム投稿はget_the_terms()関数で、通常の投稿はget_the_category()関数を使います。

functions.php

// カテゴリーアウトプット
function get_post_category() {

  // データ取得:カスタム投稿の場合
  $post_type = get_query_var('post_type'); // カスタムポストタイプを取得 ex->product

  // カスタム投稿の場合
  if(!empty($post_type)) {

    // ポスト情報を取得
    global $post;

    // カスタム投稿のタクソノミー名(お使いのタクソノミー名に変えてください)
    $taxonomy = 'product_cat';

    // 投稿のタームを配列で取得
    $post_cat_array = get_the_terms($post->id, $taxonomy);
  }

  // カスタム投稿ではない場合
  else {

    // 投稿のカテゴリーを配列で取得
    $post_cat_array = get_the_category();
  }

  // 表示用変数
  $disp_cat = '';

  // カテゴリ区切り
  $separator = ' , ';

  // 取得したカテゴリーの配列を分解し、表示用変数へ代入
  foreach($post_cat_array as $post_cat_obj) {
    $disp_cat .= '<a href="'.get_category_link($post_cat_obj->term_id).'">'.$post_cat_obj->name.'</a>'.$separator;
  }

  return trim($disp_cat, $separator);
}

テーマに出力

次にテーマ上の出力したい場所に作成した関数を記述します。今回作成した関数はループの中でのみ使うことができます。

テーマファイル記述例

<?php echo get_post_category(); ?>