【wordpress】カスタムタクソノミーの表示関連

まずはタクソノミーとタームの整理。

通常の投稿タイプのカテゴリー

タクソノミー ターム
category いちご
みかん
りんご

カスタムタクソノミー

タクソノミー ターム
地域 北海道
東北
関東
… …

テンプレートの種類

優先順位

  1. taxonomy-‘タクソノミーの名前’.php
  2. taoxnomy.php
  3. archive.php
  4. index.php

テンプレート内で使いそうなタグ

<?php 
single_term_title(); //所属するターム名 
echo $taxonomy; //所属するタクソノミー名 
echo $term; //所属するタクソノミーターム名(termのslug)
?>

もっとややこしいのは…

<?php
///////////////////////////////
$args = array (
    'public' => true,
    '_builtin' => false
);
$taxonomies = get_taxonomies( $args, 'names' );
foreach ( $taxonomies as $taxonomy_name ) {
    echo '<p>' . $taxonomy_name . '</p>';
} 

////////////////////////////////
$args = array (
    'public' => true,
    '_builtin' => false
);
$taxonomies = get_taxonomies( $args, 'objects' );
foreach ( $taxonomies as $taxonomy ) {
    echo '<p>post_type=' . $taxonomy->object_type[0] . ': ' . $taxonomy->name . ' => ' . $taxonomy->label . '</p>';
} 

////////////////////////////////
$args = array (
    'public' => true,
    'object_type' => array ( 'events' )
);
$taxonomies = get_taxonomies( $args, 'objects' );
foreach ( $taxonomies as $taxonomy ) {
    echo '<p>' . $taxonomy->name . ' => ' . $taxonomy->label . '</p>';
}
?>

出力結果

////////

course

area

instructor

////////

post_type=events: course => 講座レベル

post_type=events: area => 地域

post_type=events: instructor => 講師名

////////

course => 講座レベル

area => 地域

instructor => 講師名

テンプレートを taxonomy.php で統一して、ページタイトルだけ

<h1><?php  
if($taxonomy == 'course'){echo '講座一覧:'; single_term_title();}
elseif($taxonomy == 'instructor'){echo '講座一覧:'; single_term_title(); echo ' 開催';}
elseif($taxonomy == 'area'){echo '講座一覧:'; single_term_title(); echo ' エリア';}
?></h1>

とすると管理が楽。

参考サイト:
【WordPress】所属しているタクソノミー名表示/他
[WordPress] タクソノミー情報を取得する

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください