カスタム投稿タイプとカスタム分類の取得や条件判別

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');

カスタム投稿タイプとカスタム分類の取得や条件判別」への3件のフィードバック

  1. ピンバック: WordPressカスタマイズでいろいろお世話になったリンク | 自然体

  2. 篠原貴宏

    我流先生お世話になっております。
    タクソノミーのラベル名を取得したくてさまよっておりました。
    先生の記事を参考にさせていただき解決しました。

    ありがとうございます!

コメントを残す

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


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>