- サイトデザイン工事中です。ご意見をお寄せください。
- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
カスタム分類
このページ「カスタム分類」は未翻訳です。和訳や日本語情報を加筆してくださる協力者を求めています。
目次 |
分類とは ?
「カスタム分類」の英語表記は、「カスタムタクソノミー (Custom Taxonomies)」となっています。タクソノミーとは物事をグループ化する方法、つまり平たく言うと分類ということです。
例えば、いろいろな種類の動物を特徴ごとに分類して各グループに名前をつけるとしましょう。これは多くの人が生物のクラスでやるようなことですが、リンネの分類 (Linnaean Taxonomy) と呼ばれています。
WordPress では、「分類」は投稿 (またはリンク) をグループ化するための仕組みです。
デフォルト分類
WordPress には3種類の分類が組み込まれています。おそらくすでに使ったことがあるはずです。
カテゴリー
category 分類を使うと投稿をカテゴリーごとにグループ化し、/category/name と言った形式の URL で表示できます。カテゴリーは事前に定義された広範囲なものであることが多いと言えます。
タグ
post_tag 分類はカテゴリーに似ていますが、より自由な形態です。タグは投稿ごとにその場その場で入力して作成でき、/tag/name と言った形式の URL で表示できます。投稿には複数のタグがつけられることが多く、通常、投稿内容の近くまたはタグクラウドとして表示されます。
リンクカテゴリー
link_category 分類はリンクに対して使われます。構成上の理由で内部に限って使われることが多く、通常サイトに直接表示されることはありません。サイドバーなどに表示するためのリンクをグループ化するのに便利です。e.
カスタム分類
WordPress 2.3 以降では、カスタム分類が作成できるようになりましたが、ほとんど活用されていませんでした。しかし実際は、さまざまな項目をグループ化するために非常にパワフルな機能なのです。
例
例えば、Matt's Community Tags (Matt のコミュニティタグ) プラグインは、添付ファイルで "people" という分類を定義するために使われます。写真の中に写っている人をタグ付けし、person/name という URL でそれぞれの人の写真を表示します。
分類の登録
分類を登録するには、register_taxonomy 関数を使います。
"people" 分類を登録する場合の例は以下のとおりです。
function people_init() {
// 新規分類を作成
register_taxonomy(
'people',
'post',
array(
'label' => __('People'),
'sort' => true,
'args' => array('orderby' => 'term_order'),
'rewrite' => array('slug' => 'person'),
)
);
}
add_action( 'init', 'people_init' );
ここで "people" 分類が定義されています。投稿内で使い、スラッグを people ではなく person とリライトできるようになっています。
登録分類の使用
分類を追加すると、投稿編集ページに新しいメタ情報ボックスが追加されます。このボックスはタグ用のボックスとほとんど同じで、カスタム分類用のキーワードを追加できます。
カスタム分類を投稿に対して使わない場合は管理画面で表示されないかもしれません。分類は一般的なものなので、どんなオブジェクトに対してでも使うことができます。カスタム分類を使ってオブジェクトにキーワードを追加するには、wp_set_object_terms/en 関数を使います。以下は、"person" 分類のキーワード "Bob" を ID 123 の投稿に追加する例です。
wp_set_object_terms(123, 'Bob', 'person');
ご覧の通り、とてもシンプルです。2つ目のパラメータは複数キーワードの配列にすることもできます。
クラウド
The wp_tag_cloud function can also accept a "taxonomy" parameter, if you want to display a cloud of terms for your custom taxonomy.
項目一覧の表示
キーワードのカスタムリストを表示したい場合は、ループ内で分類名を get_the_term_list 関数に渡します。
echo get_the_term_list( $post->ID, 'people', 'People: ', ', ', );
こうすると各投稿に追加された "people" 分類のキーワードが表示されます。
分類によるクエリ
Creating a taxonomy generally automatically creates a special query variable as well, which you can use to retrieve posts based on. For example, if I wanted to pull a list of posts that have "Bob" as the person in them, I could now do the following:
query_posts( array( 'people' => 'bob', 'showposts' => 10 ) );