【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(); ?>

Comments

  1. natsu より:

    はじめまして。参考にさせていただいております、有益な情報をありがとうございます。

    カスタム投稿タイプ’koe’を作成し、カテゴリをセットしています。そこでfunctions.phpに記事にある内容をセットし、

    カスタム投稿’koe’のアーカイブページ(archive-koe.php)に下記のように記述しております。

    ‘koe’, ‘posts_per_page’ => 6, ‘paged’ => get_query_var( ‘paged’, 1 )); ?>

    <a href="”>

    <img src="” alt=”” class=”img_Res” />

    <a href="”> 様

    <a class="cp_btn_s white" href="”>詳細を見る

    archive-koe.phpではうまく表示されたのですが、同じ記述をtaxonomy-koe-cat.php、front-page.phpにセットしたところ、が効かないようで、カテゴリが表示されません。

    ちなみにid, ‘koe-cat’); ?>とするとカテゴリ表示されました。
    ただ、カテゴリごとにクラスを指定するようにしているため、を使いたいです。

    いろいろ試してみたのですが、解決せず、教えていただければ幸いです。
    よろしくお願い申し上げます。

    • webmaster より:

      コメントありがとうございます。

      記事のコード例は基本的なループの中で使えるような記述にしていますが、どのような記述になっていますでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

関連記事