概要
プラグインを使わずfunctions.phpだけでカスタムタクソノミーを追加することができる関数。
カスタムタクソノミーについては以下の記事を参照。
プラグインとの使い分け
プラグイン「Custom Post Type UI」を使えば、register_post_type
を使わなくてもカスタムタクソノミーを追加できる。
プラグインがおすすめの場面
- カスタム投稿タイプですでに「Custom Post Type UI」を使っている
- 簡単に実装したい🔰
- プラグインを増やすことに抵抗がない
register_post_typeがおすすめの場面
- ある程度WordPressに詳しい
- プラグインを増やしたくない
関数の説明
引数・戻り値
register_taxonomy( $taxonomy, $object_type, $args );
引数
Name | 型 | 説明 | 初期値 |
---|---|---|---|
$taxonomy | string | 登録したいタクソノミー名。 最大 32 文字、英小文字とアンダースコアのみ。 | なし |
$object_type | array,string | タクソノミーが属する投稿タイプ名。 (投稿ならpost、カスタム投稿タイプならその名前を指定する。) | なし |
$args(任意) | array,string | タクソノミーの設定。 | なし |
【補足】第三引数$argsの詳細
- カスタムタクソノミーの細かい設定ができる。
よく使う設定
キー | 型 | 説明 | 初期値 |
---|---|---|---|
public | bool | カスタムタクソノミーを有効にするか。trueにしないと使えない。 | true |
label | string | 管理画面などで表示するタクソノミーの名称。日本語でもOK。 ※ labels->name で上書きされる。 | labels->name |
labels | array | 「管理画面に表示される言葉」を細かく設定できる。※1 | カテゴリーまたはタグと同じ言葉になる。(hierarchicalがtrueならカテゴリーの言葉が採用される) |
description | string | カスタムタクソノミーの説明文。 | ‘’ |
hierarchical | bool | タクソノミー同士で親子関係を持たせられるようにするか。(例えばタグはfalse、カテゴリーはtrueになっている。) | false |
show_in_rest | bool | ブロックエディタで設定可能にする。(trueのときはカスタムタクソノミーをREST APIに含まれる) | false |
あまり使わない設定
キー | 型 | 説明 | 初期値 |
---|---|---|---|
show_ui | bool | 管理画面でカスタムタクソノミー管理ページを表示するか。 | publicと同じ |
show_in_nav_menus | bool | ナビゲーションメニューにカスタムタクソノミーを表示するか。 | publicと同じ |
show_tagcloud | bool | タグクラウドのウィジェットでこのタクソノミーを使うか。 | show_uiと同じ |
show_in_quick_edit | bool | クイック編集画面に表示するか。 | show_uiと同じ |
meta_box_cb | callback | 編集ページにメタボックスを追加/削除するときに使う。メタボックスを追加/削除する処理(add_meta_box/remove_meta_box)を使った処理をコールバック関数に指定する。 ※falseにすると非表示になる。 | null 階層のあるタクソノミーならカテゴリー用メタボックス。階層化しないタクソノミーならタグ用メタボックスになる。 |
show_admin_column | bool | [投稿一覧]画面にタクソノミーの列を追加する。 | false |
update_count_callback | string | 第二引数$object_typeの投稿タイプの個数が更新されたときに呼ばれる関数名。 | ‘’ |
query_var | bool,string | タクソノミーをクエリパラメータで指定できるようにする。クエリパラメータが不要な場合はfalse。 | true(example.com/カスタム投稿タイプ名/?タクソノミー名=ターム名 でアクセス可能になる) |
rewrite | bool,array | カスタムタクソノミーのパーマリンク構造を変更する。 ※変更後に[設定−パーマリンク]で変更の保存をしないと反映されない。 | true(パーマリンクは$post_type/スラッグ ) |
capabilities | array | カスタムタクソノミーを操作できる権限。 | なし |
sort | bool | 投稿にタームを設定した順序を記憶しておくかどうか。 | なし |
※1:labelsの設定内容
詳細は以下の公式ドキュメントを参照。
戻り値
なし
使用例
投稿にカスタムタクソノミー[商品]を追加する
function custom_taxonomy() {
$args = array(
'labels' => array( // 管理画面に表示される名称
'name' => '商品',
'singular_name' => '商品',
),
'public' => true, // カスタムタクソノミーを有効にする
);
// [投稿]にカスタムタクソノミーを登録
register_taxonomy( 'item', 'post', $args );
}
add_action( 'init', 'custom_taxonomy' );
解説
function custom_taxonomy()
- カスタムタクソノミーを登録する関数
register_taxonomy( '商品', 'post', $args );
で登録する。- 詳細な情報は
$args
で設定
add_action( 'init', 'custom_taxonomy' );
- アクションフック
init
にカスタムタクソノミー登録処理を追加する。
- アクションフック
関連記事
実践的な例
カスタム投稿タイプにカスタムタクソノミー[商品]を追加する
function custom_taxonomy() {
// 管理画面で表示される名称
$labels = array(
'name' => '商品', // タクソノミーの名前(複数形)
'singular_name' => '商品', // タクソノミーの名前(単数形)
'search_items' => '商品を検索', // タクソノミーを検索するときのラベル
'popular_items' => 'よく使われている商品', // 人気のタクソノミーのラベル
'all_items' => 'すべての商品', // タクソノミーの一覧画面のラベル
'parent_item' => '親の商品', // 親タクソノミーのラベル
'parent_item_colon' => '親の商品:', // 親タクソノミーのラベル(コロン付き)
'edit_item' => '商品を編集', // タクソノミーの編集画面のラベル
'update_item' => '商品を更新', // タクソノミーの更新画面のラベル
'add_new_item' => '新しい商品を追加', // タクソノミーの追加画面のラベル
'new_item_name' => '新しい商品', // 新しいタクソノミーの名前を入力するときのラベル
'menu_name' => '商品' // 管理画面のメニューに表示されるタクソノミーの名前
);
// タクソノミーの設定を定義する配列
$args = array(
'labels' => $labels, // 管理画面で表示されるラベルの配列
'public' => true, // 投稿の編集画面でタクソノミーの選択ができるようにする
'hierarchical' => true, // 親子関係のあるタクソノミーにする
'show_ui' => true, // 管理画面でタクソノミーの選択を表示する
'show_admin_column' => true, // カスタム投稿の一覧画面でタクソノミーの列を表示する
'query_var' => true, // タクソノミーをクエリに含める
'rewrite' => array( 'slug' => 'item' ) // タクソノミーのパーマリンクを設定する配列
);
register_taxonomy( 'item', 'product', $args );
}
add_action( 'init', 'custom_taxonomy', 0 );
参考サイト