カスタム投稿タイプを作成する時に必ず出てくる、タクソノミーとタームという専門用語。それらの意味や違いについてを解説。
タクソノミーとタームの概念
結論から述べると、タクソノミーとは主カテゴリ名のことでタームとはその中の分類のこと。
例えば、プログラミング言語という主カテゴリがあった場合に、その中にPHP, Ruby, Python, JavaScript, Vueという分類を作った場合以下のようになる。
- プログラミング言語 = タクソノミー
- PHP, Ruby, Python, JavaScript, Vue = ターム
ちなみに、それぞれの元の意味を知っておくと概念が掴みやすい。
・タクソノミー(taxonomy)
分類学という意味。階層構造でカテゴリーを分けて分類していくという概念のこと。
・ターム(term)
専門用語のという意味。
タクソノミーが分類という大きな概念を表しているのに対し、タームは言葉というより細かい概念を示している。
デフォルト設定のタクソノミーとターム
デフォルトでは管理画面で「投稿」をクリックすると、「カテゴリ」と「タグ」が表示される。これがそれぞれタクソノミになる。
そして、どちらかを選択すれば中に、さらに細かい分類(カテゴリ名、タグ名)を作成することができる。これがターム。デフォルトは未分類のみ。
この左カラムのカテゴリやタグをクリックしたときのURLに注目するとより分かりやすい。以下のようにパラメータでtaxonomyが指定されていることがわかる。
・カテゴリ: /wp-admin/edit-tags.php?taxonomy=category
・タグ: /wp-admin/edit-tags.php?taxonomy=post_tag
デフォルトのカテゴリーというタクソノミーを変更する方法
管理画面上で使われている「カテゴリ」を「変更後のカテゴリ」に変更する。カテゴリという名称が使われている箇所が多いので設定項目が多いが、それぞれの対応箇所がわかれば恐るるに足らず。
先に完成イメージを確認。
以下コードをfunctions.phpにコピペして保存&ブラウザをリロードすればOK。
add_action( 'init', 'change_category_taxonomy');
function change_category_taxonomy()
{
global $wp_taxonomies;
$wp_taxonomies['category']->label = '変更後のカテゴリ';
$wp_taxonomies['category']->labels = (object)array(
'name' => '変更後のカテゴリ(name)',
'menu_name' => '変更後のカテゴリ(manu_name)',
'singular_name' => '変更後のカテゴリ(singular_name)',
'search_items' => '変更後のカテゴリ(serch_items)',
'popular_items' => '変更後のカテゴリ(popular_items)',
'all_items' => '変更後のカテゴリ(all_items)',
'parent_item' => null, // Tags aren't hierarchical
'parent_item_colon' => null,
'edit_item' => '変更後のカテゴリを編集(edit)',
'update_item' => '変更後のカテゴリをアップデート(update)',
'add_new_item' => '変更後のカテゴリを追加(add)',
'new_item_name' => '新しい変更後のカテゴリ名(new)',
'separate_items_with_commas' => '変更後のカテゴリ名をカンマで区切る',
'add_or_remove_items' => '変更後のカテゴリ名を追加 or 削除',
'choose_from_most_used' => '最も使われている変更後のカテゴリ名',
);
}
デフォルトのtaxonomiesに関する情報は、グローバルの$wp_taxonomiesという変数の中に格納されている。
taxonomy=categoryを変更したいので、$wp_taxonomies[‘category’]でプロパティを指定していく。
デフォルトのタグという名前を変更する方法
同様の考え方で、デフォルトで表示されているタグも変更できる。先ほどのURLで確認した時に、タグのtaxnomy名は「post_tag」だったので、$wp_taxonomies[‘post_tag’]に変更すればOK。
add_action( 'init', 'change_category_taxonomy');
function change_category_taxonomy()
{
global $wp_taxonomies;
$wp_taxonomies['post_tag']->label = '変更後のカテゴリ';
$wp_taxonomies['post_tag']->labels = (object)array(
'name' => '変更後のカテゴリ(name)',
'menu_name' => '変更後のカテゴリ(manu_name)',
'singular_name' => '変更後のカテゴリ(singular_name)',
'search_items' => '変更後のカテゴリ(serch_items)',
'popular_items' => '変更後のカテゴリ(popular_items)',
'all_items' => '変更後のカテゴリ(all_items)',
'parent_item' => null, // Tags aren't hierarchical
'parent_item_colon' => null,
'edit_item' => '変更後のカテゴリを編集(edit)',
'update_item' => '変更後のカテゴリをアップデート(update)',
'add_new_item' => '変更後のカテゴリを追加(add)',
'new_item_name' => '新しい変更後のカテゴリ名(new)',
'separate_items_with_commas' => '変更後のカテゴリ名をカンマで区切る',
'add_or_remove_items' => '変更後のカテゴリ名を追加 or 削除',
'choose_from_most_used' => '最も使われている変更後のカテゴリ名',
);
}
先ほどの、functions.phpの$wp_taxonomies[‘category’]を$wp_taxonomies[‘post_tag’]に変更したので、デフォルトのカテゴリーが復活して、タグが変更後のカテゴリに変わった。
変更した内容をデフォルト状態に戻す方法
変更したtaxnomyをもとに戻したい時は、functions.phpに追記したコードを削除(またはコメントアウト)すればデフォルトに戻る。
以上。