タクソノミー

分類とは ?

「カスタム分類」の英語表記は、「カスタムタクソノミー (Custom Taxonomies)」となっています。 聞き慣れない言葉だと思いますが、タクソノミーとは物事をグループ化する方法、つまり平たく言うと分類ということです。

例えば、いろいろな種類の動物を、特徴ごとに分類して各グループに名前をつけるようなものです。 これは多くの人が生物のクラスで経験するようなことで、リンネの分類 (Linnaean Taxonomy) と呼ばれています。

WordPress では、「分類 (タクソノミー)」は投稿 (またはリンク、カスタム投稿タイプ) をグループ化するための仕組みのことです。

分類内のさまざまなグループ名を「terms (項目)」 と呼びます。 動物のグループ化を例に取ると、あるグループを「鳥」、別のグループを「魚」と名づけるでしょう。 「鳥」や「魚」は、分類内の項目です。 WordPress の例で言うと、あるカテゴリーやタグ (次の項目を参照) が項目となります。

WordPress におけるタクソノミーとその関係の基本図

Z2Ohv.png

Pieter Goosen 氏によるダイアグラム

デフォルト分類

WordPress には 4 種類の分類が組み込まれています。おそらくすでに使ったことがあるはずです。

カテゴリー

‘category’ 分類を使うと投稿をカテゴリーごとにグループ化し、/category/name と言った形式の URL で表示できます。カテゴリーは事前に定義された広範囲なものであることが多いと言えます。

タグ

‘post_tag’ 分類はカテゴリーに似ていますが、より自由な形態です。 タグは投稿ごとにその場その場で入力して作成でき、/tag/name と言った形式の URL で表示できます。 投稿には複数のタグがつけられることが多く、通常、投稿内容の近くまたはタグクラウドとして表示されます。

リンクカテゴリー

‘link_category’ 分類はリンクに対して使われます。 構成上の理由で内部に限って使われることが多く、通常サイトに直接表示されることはありません。 サイドバーなどに表示するためのリンクをグループ化するのに便利です。

投稿フォーマット

‘post_format’ 分類は WordPress 3.1 で導入されました。テーマが投稿の表示をカスタマイズするために使用できるメタ情報です。新しく作成したりデフォルトの投稿フォーマットに追加したりすることはできません。

カスタム分類

WordPress 2.3 以降でカスタム分類が作成できるようになりましたが、バージョン 2.9 まではほとんど活用されていませんでした。 しかし実際は、色々な項目を色々な方法でグループ化するために非常にパワフルな機能なのです。

用例

例えば、Matt’s Community Tags (Matt のコミュニティタグ) プラグインは、添付ファイルに対して “people” という分類を定義するために使われます。 写真の中に写っている人をタグ付けし、person/name という URL でそれぞれの人の写真を表示できます。

分類の登録

分類を登録するには、register_taxonomy() 関数を使います。

“people” 分類を登録する場合の例は以下のとおりです。

function people_init() {
	// 新規分類を作成
	register_taxonomy(
		'people',
		'post',
		array(
			'label' => __( 'People' ),
			'rewrite' => array( 'slug' => 'person' ),
			'capabilities' => array(
				'assign_terms' => 'edit_guides',
				'edit_terms' => 'publish_guides'
			)
		)
	);
}
add_action( 'init', 'people_init' );

ここで “people” 分類が定義されています。 投稿内で使い、スラッグを people ではなく person とリライトできるようになっています。

capabilities の行はオプションです。 指定しなければデフォルトとして、WordPress は投稿と同じユーザーの権限を適用します。 上記の例では、カスタムの “edit_guides” 権限を持つユーザーがこの分類を投稿へ付けることができます。 また “publish_guides” 権限を持つユーザーは、分類に新しい項目を加えることができます。

登録した分類の使い方

分類を追加すると、投稿編集ページに新しいメタ情報ボックスが追加されます。 このボックスはタグ用のボックスとほとんど同じで、カスタム分類用のキーワードを追加できます。

カスタム分類を投稿に対して使わない場合は管理画面で表示されないかもしれません。 分類は一般的なものなので、どんなオブジェクトに対してでも使うことができます。 カスタム分類を使ってオブジェクトにキーワードを追加するには、wp_set_object_terms() 関数を使います。 以下は、”person” 分類のキーワード “Bob” を ID 123 の投稿に追加する例です。

wp_set_object_terms( 123, 'Bob', 'person' );

ご覧の通り、とてもシンプルです。 2 番目のパラメータを複数キーワードの配列にして、まとめて追加することもできます。

クラウド

カスタム分類の項目をタグクラウド形式で表示させたい場合は、wp_tag_cloud() 関数に “taxonomy” パラメータを指定することができます。

項目一覧の表示

キーワードのカスタムリストを表示したい場合は、ループ内で分類名を the_terms() 関数に渡します。

the_terms( $post->ID, 'people', 'People: ', ', ', ' ' );

こうすると各投稿に追加された “people” 分類のキーワードが表示されます。

分類によるクエリ

タクソノミーを作成すると、通常は特別なクエリ変数が WP_Query クラスを使って自動的に生成されます。 これを使って投稿を取り出すことができます。 例えば、”person” という分類で “bob” という項目が付いている投稿の一覧を取得するには以下のようにします。

$query = new WP_Query( array( 'person' => 'bob' ) );

または、以下のようにパラメータを細かく指定する形式も使えます。

$args = array(
	'tax_query' => array(
		array(
			'taxonomy' => 'person',
			'field' => 'slug',
			'terms' => 'bob'
		)
	)
);
$query = new WP_Query( $args );

404 エラー

カスタムパーマリンクを使っている場合は、分類 (タクソノミー) に変更を加えた後に、パーマリンクの内部構造を再構成する必要があります。 これを怠ると「ページが見つかりません」エラーが表示される場合があります。 WordPress ダッシュボードの 設定 > パーマリンク設定 を開いて保存の操作を行うと、パーマリンクの内部構造を再構成できます。

追加情報

日本語情報

英語情報

関連項目

カスタム分類: get_taxonomy(), taxonomy_exists(), register_taxonomy(), get_taxonomies(), the_taxonomies(), get_taxonomy_labels(), get_taxonomy_template(), is_object_in_taxonomy(), get_the_taxonomies(), get_post_taxonomies(), get_object_taxonomies(), is_taxonomy_hierarchical()

原文

この記事は役に立ちましたか ? どうすればさらに改善できますか ?