WordPress3.0で実装されたカスタム投稿タイプ(Custom Post Types)とカスタム分類(Custom Taxonomies)は非常に強力なんですが、まだまだ情報が少なく苦労する状態。
特に取得・判別系が分からなかったので、自分用にメモしときます。
構成はこんな感じ。
■カスタム投稿タイプ(custom post)
slug : ‘event’
ラベル : イベント情報
■カスタム分類(taxonomy)
slug : ‘event-category’
ラベル : イベント情報カテゴリ
[イベント情報カテゴリ] 内
├ ワークショップ ( workshop )
├ レポート ( report )
…
└ その他 ( etc )
<?php
//カスタム投稿タイプの場合slugを取得
$post_type = get_post_type(); //取得結果: 'event'
//カスタム投稿タイプのラベルを取得
$post_type_object = get_post_type_object($post_type);
$post_type_label = $post_type_object->label; //取得結果:'イベント情報'
//クエリからtaxonomy(カスタム分類タクソノミー)のslug取得
$taxonomy_var = get_query_var('taxonomy'); //取得結果:'event-category'
//クエリからterm(カスタム分類タクソノミー内のカテゴリ)のslug取得
$term_var = get_query_var( 'term' ); //取得結果:'workshop'
//termの情報を取得
$my_term = get_term_by('slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
//termのラベルを取得
$term_name = $my_term->name; //取得結果:'ワークショップ'
?>
だいたいこれをテンプレートの先頭に書いてたりすると便利です。
header.php ではCSSの切替などで重宝します。
メモ)
もし header.php に上記のような変数を定義していても、それをget_header()で読み込んだテンプレート上では参照できない。
そんな時はheader.phpをWP関数じゃなくてPHPの関数(includeやrequire)で読み込べば参照できるようになる。
get_header(); ↓ include( TEMPLATEPATH . '/header.php');
ピンバック: WordPressカスタマイズでいろいろお世話になったリンク | 自然体
我流先生お世話になっております。
タクソノミーのラベル名を取得したくてさまよっておりました。
先生の記事を参考にさせていただき解決しました。
ありがとうございます!
>篠原くん
お役に立てたようで何より!!