タクソノミーの概要
タクソノミーとは何か、タクソノミーが何をするのかについて理解するには、タクソノミー概要をお読みください。
カスタムタクソノミー
分類システムとしては、「カテゴリー」と「タグ」はあまり構造化されていないので、開発者が独自に作成することは有益かもしれません。
WordPress では、開発者が「カスタムタクソノミー」を作成できます。カスタムタクソノミーは、明確なネーミングシステムを作成し、予測可能な方法で舞台裏からアクセスできるようにしたい場合に便利です。
どうしてカスタムタクソノミーを使うのですか ?
「カテゴリーやタグで分類できるのに、なぜわざわざカスタムタクソノミーを作成するのですか ?」と疑問に思うかもしれません。
さて…例を挙げましょう。シェフであるクライアントが、オリジナルレシピを紹介する Web サイトを作ってほしいと依頼したとします。
Web サイトを編成する一つの方法として、彼女のレシピの格納にカスタム投稿タイプ「レシピ」を作成する方法があります。タクソノミー「コース」を作成して「前菜」と「デザート」を分け、タクソノミー「食材」を作成して「チキン」と「チョコレート」の料理を分けます。
これらのグループは、カテゴリーやタグを使っても定義することが「可能」です。たとえばカテゴリー「コース」にサブカテゴリー「前菜」と「デザート」を作成し、カテゴリー「食材」に各食材のサブカテゴリーを作成します。
カスタムタクソノミーを使う主な利点は、「コース」と「食材」をカテゴリーやタグとは別に参照できることです。さらに、管理エリアに独自のメニューも用意されています。
さらに、カスタムタクソノミーを作成することで、データを挿入するプロセスをクライアントのビジネスの性質に合わせて直感的に行うことができるカスタムインターフェースを構築し、クライアントの生活を楽にできます。
ここで、これらのカスタムタクソノミーとインターフェイスが1つのプラグインの中に実装されたとすると、あなたは、どの WordPress サイトでも再利用可能な独自のレシピ・プラグインを作り上げたことになります。
例: タクソノミー「コース」
以下の例では、デフォルトの投稿タイプ post
に、カスタムタクソノミー「コース」を追加するプラグインの作成方法を紹介します。カスタムタクソノミーを追加するコードは、プラグインに含める必要はないことに注意してください。必要であれば、テーマや既存のプラグインの一部に含めることができます。
独自のプラグインを作ろうとする前に、必ずプラグインの基本の章を読んでください。
ステップ1: 始める前に
投稿 > 新規投稿を追加 ページに移動します。まだカテゴリーとタグしかありません。
ステップ2: 新しいプラグインの作成
アクションフック init
を使って、タクソノミー「course」を投稿タイプ「post」に登録します。
/*
* Plugin Name: Course Taxonomy
* Description: A short example showing how to add a taxonomy called Course.
* Version: 1.0
* Author: developer.wordpress.org
* Author URI: https://codex.wordpress.org/User:Aternus
*/
function wporg_register_taxonomy_course() {
$labels = array(
'name' => _x( 'Courses', 'taxonomy general name' ),
'singular_name' => _x( 'Course', 'taxonomy singular name' ),
'search_items' => __( 'Search Courses' ),
'all_items' => __( 'All Courses' ),
'parent_item' => __( 'Parent Course' ),
'parent_item_colon' => __( 'Parent Course:' ),
'edit_item' => __( 'Edit Course' ),
'update_item' => __( 'Update Course' ),
'add_new_item' => __( 'Add New Course' ),
'new_item_name' => __( 'New Course Name' ),
'menu_name' => __( 'Course' ),
);
$args = array(
'hierarchical' => true, // make it hierarchical (like categories)
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => [ 'slug' => 'course' ],
);
register_taxonomy( 'course', [ 'post' ], $args );
}
add_action( 'init', 'wporg_register_taxonomy_course' );
ステップ3: 結果の検証
プラグインを有効にして、投稿 > 新規投稿を追加 に移動してください。タクソノミー「コース」の新しいメタボックスが表示されるはずです。
コード・ブレークダウン
以下の議論では、上記で使用したコードを分解し、関数とパラメータを説明します。
関数 wporg_register_taxonomy_course
は、カスタムタクソノミーを登録するために必要なすべてのステップを含んでいます。
配列 $labels
は、カスタムタクソノミーのラベルを保持します。
これらのラベルは、管理エリアでタクソノミーに関するさまざまな情報を表示するために使用されます。
配列 $args
は、カスタムタクソノミーを作成する際に使用する設定オプションを保持します。
関数 register_taxonomy()
は、設定用の配列 $args
を使用して、識別子 course
を持つ、投稿タイプ post
用の新しいタクソノミーを作成します。
関数 add_action()
は、関数 wporg_register_taxonomy_course
の実行をアクションフック init
に関連付けます。
$args
配列 $args は、カスタムタクソノミーの重要な設定を保持し、タクソノミーの動作を WordPress に指示します。
まとめ
使用可能なパラメータの完全なリストと各パラメータが何をするかについては、関数 register_taxonomy()
を参照してください。
タクソノミー「コース」の例では、WordPress は自動的にタクソノミー course
のアーカイブページと子ページを作成します。
アーカイブページは /course/
にあり、その下に子ページがタームのスラッグ (/course/%%term-slug%%/
) を使って生成されます。
あなたのタクソノミーの利用
WordPress には、カスタムタクソノミーとその中のタームとのインタラクションのための 多くの 関数があります。
いくつか例を挙げてみましょう:
the_terms
: タクソノミーの引数をとり、タームをリストで表示します。wp_tag_cloud
: タクソノミーの引数をとり、タームのタグクラウドを表示します。is_taxonomy
: 指定したタクソノミーが存在するかどうかを判別できます。