カスタムタクソノミーってややこしいですよね。
何がややこしいって言葉がややこしいですよね。
このちょっと難解なカスタムタクソノミー関連の言葉の概念というか定義みたいなのを整理したいと思います。普通のブログではあまり必要ないですが、ブログ以外のwebサイトを作る時、非常に役立ちますので理解していて損はないです。
コピペでカスタム投稿タイプを作れるコードも最後に載せてます。ぜひ意味を理解した上で自分なりにカスタムしちゃって下さい。
スポンサーリンク
投稿タイプとタクソノミー
普通にWordPress使ってる人なら、投稿、固定ページ、カテゴリー、タグなどの言葉は聞き慣れてますよね。以下の表の意味するところは理解できると思います。
投稿タイプ | タクソノミー | ターム |
---|---|---|
投稿 | カテゴリー | 仕事中に思ったこと |
遊んでいて思ったこと | ||
タグ | マラソン | |
笑顔 | ||
固定ページ | × | × |
投稿記事のカテゴリーは「仕事中に思ったこと」と「遊んでいて思ったこと」に分類されています。日記みたいな気づきの防備録みたいな感じなんですかね?センスなさそうですね。
その投稿記事(何記事あるのか知りませんが)にタグとして使われているワードが「マラソン」「笑顔」の二つなんですね(あまり深く考えないでw)。
注目は、表の一番上の投稿タイプ、タクソノミー、タームという枠組みです。
投稿タイプには「投稿」と「固定ページ」があります。
タクソノミーには「カテゴリー」と「タグ」があります。
タクソノミーという言葉は分類方法あるいは分類タイプと訳すと分かりやすいです。カテゴリーもタグも言うなれば投稿記事を分類する方法と言えますよね。
タームというのは、「仕事中に思ったこと」以下、具体的な分類項目のことです。
ちなみに、固定ページはそもそも分類という仕組みがないので、タクソノミーもタームも存在しません。
この構造が理解できれば、カスタム投稿タイプやカスタムタクソノミーという言葉の意味も理解出来ます。
カスタムとは?
例えば、普通の投稿記事とは別枠で「おすすめ商品」を紹介するコーナーを、同じwebサイト内に作るとします。
そして、おすすめ商品として書く記事は「カテゴリー」と「メーカー」という括りで分類するとします。カテゴリーには「パソコン」や「デジカメ」なんかがあるとしましょう。
表にするとこういうことです。
投稿タイプ | タクソノミー | ターム | |
---|---|---|---|
元々ある | 投稿 | カテゴリー | 仕事中に思ったこと |
遊んでて思ったこと | |||
タグ | マラソン | ||
笑顔 | |||
固定ページ | × | × | |
自分で作る | おすすめ商品 | カテゴリー | パソコン |
デジカメ | |||
メーカー | ソニー | ||
パナソニック |
つまり、元々ある「投稿」、「固定ページ」以外に「おすすめ商品」という投稿タイプを新たに作って、そのおすすめ商品記事の分類方法として「カテゴリー」と「メーカー」というタクソノミーを新たに作ったわけです。
このように自分で追加した投稿タイプをカスタム投稿タイプと言います。同様に自分で追加したタクソノミーをカスタムタクソノミーと言います。それだけです。
落ち着いて考えたらそんなに難しくはないのですが、「カスタムタクソノミー」という見慣れない聞き慣れない言葉がこれらの概念を無駄に難解にしてると思います。罪深きカスタムタクソノミー・・。
ややこしかったら、「タクソノミー」を全部「分類タイプ」に脳内で変換して読むようにしたらいいと思います。
スポンサーリンク
カスタム投稿タイプをコピペで作ろう
ではカスタム投稿タイプを実際作ってみましょう。
「ソニー」や「パナソニック」などのターム自体はWordPressの管理画面から自由に追加したりできますが、その大枠であるカスタム投稿タイプ、カスタムタクソノミーを作るには、functions.phpにコードを書く必要があります。
functions.phpはミスると真っ白になるのでFTPソフトを片手に慎重にいじるようにしましょう。
カスタム投稿タイプを作る
まずは「おすすめ商品」というカスタム投稿タイプを作ります。「おすすめ商品」のslug(と呼んで良いのかな?)は「item」にします。
/* カスタム投稿タイプ */ add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'item', /* 投稿タイプのslug */ array( 'labels' => array( 'name' => __( 'おすすめ商品' ), 'singular_name' => __( 'おすすめ商品' ) ), 'public' => true, 'menu_position' => 5, 'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes') /* いろんな機能を有効化 */ ) ); }
これをfunctions.phpの適当な場所に貼り付ければOKです。これでWordPress管理画面の左のMENUの中に「おすすめ商品」っていうのが表示されているはずです。
※カスタム投稿タイプでサムネイルを使うには、add_theme_support( ‘post-thumbnails’ );も要ります。
カスタムタクソノミーを作る
続いて「おすすめ商品」のタクソノミーを設定します。まずは「カテゴリー」というタクソノミーを作りましょう。
上記のcreate_post_type()という関数の{ }の中にこれ↓を貼り付けます。
/* カスタムタクソノミー1 */ register_taxonomy( 'item-category', /* タクソノミーのslug */ 'item', /* 属する投稿タイプ */ array( 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => 'カテゴリー', 'singular_label' => 'カテゴリー', 'public' => true, 'show_ui' => true ) );
「カテゴリー」のslugはitem-categoryにしています。属する投稿タイプはitemです。上記のカスタム投稿タイプを作るコードの下に貼り付ければOKです。
もう一つ「メーカー」というタクソノミーを追加します。タクソノミーを追加したい場合、register_taxonomy()という関数を並べてもう一つ書けばOKです。
/* カスタムタクソノミー2 */ register_taxonomy( 'item-maker', /* タクソノミーのslug */ 'item', /* 属する投稿タイプ */ array( 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => 'メーカー', 'singular_label' => 'メーカー', 'public' => true, 'show_ui' => true ) );
「メーカー」のslugはitem-makerにしています。属する投稿タイプは同じくitemです。
全コードまとめ
まとめると、以下のコードでおすすめ商品という投稿タイプを作って、その分類として「カテゴリー」と「メーカー」というタクソノミーを作れます。
/* カスタム投稿タイプ */ add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'item', /* 投稿タイプのslug */ array( 'labels' => array( 'name' => __( 'おすすめ商品' ), 'singular_name' => __( 'おすすめ商品' ) ), 'public' => true, 'menu_position' => 5, 'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes') /* いろんな機能を有効化 */ ) ); /* カスタムタクソノミー1 */ register_taxonomy( 'item-category', /* タクソノミーのslug */ 'item', /* 属する投稿タイプ */ array( 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => 'カテゴリー', 'singular_label' => 'カテゴリー', 'public' => true, 'show_ui' => true ) ); /* カスタムタクソノミー2 */ register_taxonomy( 'item-maker', /* タクソノミーのslug */ 'item', /* 属する投稿タイプ */ array( 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => 'メーカー', 'singular_label' => 'メーカー', 'public' => true, 'show_ui' => true ) ); }
slugや名前の部分を適当に変えたらあなたなりのカスタムが出来ますのでやってみてください。くれぐれも慎重に。FTPソフト必須ですよ。
カスタム投稿タイプを使いこなす
作るだけなら簡単なんですが、このカスタム投稿タイプを十分に使いこなすには、いろんなテンプレートタグ(WordPressで用意されてる関数)を使いこなす必要があります。
しかし投稿タイプ、タクソノミー、タームなどの言葉の意味を構造的に理解できていれば、WordPress Codex 日本語版とか、その他ググって出てくる良心的なサイトで情報をかき集めればなんとかなると思います。
頑張って思い通りのwebサイトを作れるようになりましょう。
分からないことはteratailでプロのエンジニアに聞いてみて下さい。↓
[…] […]
by カスタム投稿タイプ、カスタムタクソノミーについて整理してみた | 初心者にもおすすめ!無料 WordPress テーマ Principle | 最新ニュース 2015/05/14 10:13
WordPressの教科本の通りにTaxonomyをすると、なぜかどうしてもcategory ではなくてtag しかつかないんです。その本にはcategoryがつくとあるのですが。でもこのコードの通り(というよりコピペ)にしたら、ちゃんとcategoryになるではないですか!!とても嬉しかったです。実はここ1年くらい、このことで奮闘していたので、このサイトに出会えて良かったです。ありがとうございました。
by kaori 2015/06/22 03:41
お役に立てて良かったです!
by Nobuo@管理人 2015/06/22 12:30
[…] カスタム投稿タイプ、カスタムタクソノミーについて整理してみた […]
by [WordPress] カスタム投稿タイプとカスタムタクソノミー(カスタム分類)とは? | ぶぶりんブログ 2015/08/17 09:44
[…] カスタム投稿タイプ毎に、独自の「カテゴリ」と「タグ」を設定できます。 これらの「カテゴリ」と「タグ」は見かけのもので、実体は「カスタム分類(=カスタムタクソノミー)」です。 カスタム分類 | WordPress Codex 日本語版 カスタム投稿タイプ、カスタムタクソノミーについて整理してみた|free Wo… […]
by WordPressカスタム投稿タイプをカテゴリ・タグ毎にアーカイブ表示させるには | パソラボ 2016/02/17 13:52
[…] 参考ページ1 参考ページ2 […]
by カスタムタクソノミーの作成 – WordPressの備忘録 2016/09/22 15:59
[…] […]
by 管理画面のカスタム投稿一覧に絞り込みできるカテゴリとタグを表示する方法 - 8beat Studio 2017/02/10 11:00