でろぐのロゴ 豚さんブーブー

WordPressのカスタムタクソノミーの使い方

2012年2月29日 (水)

個人用メモ。
重い腰を上げてWPのカスタムタクソノミーを使ってみた。
やっぱりプログラム的な事は全く得意でないのでメモしておかないと忘れちゃうw

めちゃカスタムタクソノミー初心者向けなので(僕がそうなので)もっとこうしたらいいというご意見があると助かります。
で、カスタムタクソノミー(カスタム分類ともいうそうですな)の使い方の前にどう使うか。
今回の場合は複数の検索条件から指定した条件で検索させたいなという場合。
普段ならタグですませるところやけど、せっかくなのでカスタムタクソノミーで実装してみようという事に。
プラグインで実装する方法もあるらしいけどプラグインに依存すると引越しとかの時にめんどいのでやっぱりテーマで作りたいところ。
以下が手順でございます。

1.function.phpに追記
まずは動かすための初期設定としてfunction.phpに以下をコピペしましょう。
名前とかは使う用途に合わせて変更すればおk

// カスタムタクソノミー追加
function create_custom_taxonomies() {  
    register_taxonomy(
        'image', // 内部的な分類名
        'post',  // 適用する投稿タイプ
        array(
            'label' => 'イメージ',    // 表向きの分類名
            'hierarchical' => true, // 階層構造
            'query_var' => true,
            'rewrite' => true
        )
    );
    register_taxonomy( // 二つ目の分類を追加する場合
        'sene',
        'post',
        array(
            'label' => 'シーン',
            'hierarchical' => true,
            'query_var' => true,
            'rewrite' => true
        )
    );

増やす場合は下のregister_taxonomy以下をコピペで増やしたらいくつも出来るよ。
うまくいくと下のように投稿画面と管理画面にカスタムタクソノミーの追加画面が出てきます。
投稿画面
投稿画面はこんな感じ。タグを追加するイメージで分類できますよ。

管理画面
管理画面にもこんな感じででてきます。
名前やスラッグの管理もタグと同じノリできる感じです。

2.single.phpに追記
下準備が出来たので次は実装。今回は個別ページに埋め込みたかったのでsingle.phpに以下を追記

リスト構造でパーマリンクも出す場合

ID, 'image', '
  • ', '
  • ', '
' ); ?>

リスト構造でテキストだけ出力する場合

ID, 'image') ) {
    echo '
    '; foreach ( $terms as $term ) { echo '
  • ' . esc_html($term->name) . '
  • '; } echo '
'; } ?>

注意点としてはループ内に記述しないといけないというところ。

3.taxonomy.phpを作成
テキストだけ出力する場合はここまででいいんですが、今回は検索させる事が目的なのでパーマリンク作ってあげないといけないのでパーマリンク用のファイルを作る必要があります。
ここがいまいち分かりにくいポイントなんですけど、テーマ内にtaxonomy.phpという名前のファイルを追加すれば大丈夫です。
taxonomy-image.php
taxonomy-image-consaba.php
のように各ターム、スラッグ別のファイル名にしてあげるとそれぞれでテーマを管理できるみたいですけど今回は一覧が作りたいだけなのでtaxonomy.phpでおk。
ここのネーミングルールの部分が初心者には分かりづらいです。

まとめ
以上で完成です。
意外と簡単に出来たっぽくみえるけど、検索方法がよくないのかドキュメントが足りてないのかカスタムタクソノミーに関する記述があんまり多くないor専門的過ぎる為結構時間かかってしまったのが印象。
Wordpressはphpできる少しプログラムできる人だと色々できると思うんだけど、僕みたいにデザイナー脳だとちょっとつらいな。
ということでこれからも初心者向けの情報を出して行こうと思います。自分の為にも。

シェアする