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(); ?>
はじめまして。参考にさせていただいております、有益な情報をありがとうございます。
カスタム投稿タイプ’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’); ?>とするとカテゴリ表示されました。
ただ、カテゴリごとにクラスを指定するようにしているため、を使いたいです。
いろいろ試してみたのですが、解決せず、教えていただければ幸いです。
よろしくお願い申し上げます。
コメントありがとうございます。
記事のコード例は基本的なループの中で使えるような記述にしていますが、どのような記述になっていますでしょうか。