register_taxonomy()
は、WordPressでカスタムタクソノミーを登録するためのテンプレートタグです。カテゴリやタグ以外の独自の分類(例:製品の種類、イベントのタイプなど)を作成・管理することができます。
機能の説明
register_taxonomy()
は、投稿タイプに紐づいたカスタムタクソノミーを登録します。これにより、特定の投稿タイプに対して独自の分類基準を追加できます。
シンプルなコード例
function create_product_taxonomy() {
register_taxonomy('product_type', 'product', array(
'label' => '製品タイプ',
'public' => true,
'hierarchical' => true,
));
}
add_action('init', 'create_product_taxonomy');
使い方の解説
register_taxonomy()
は、init
アクションにフックして呼び出されることが一般的です。これにより、WordPressが初期化されるタイミングでタクソノミーが正しく登録されます。
引数
- $taxonomy
-
登録するタクソノミーの名前。小文字とアンダースコアを使用する必要があります。
- $object_type
-
カスタムタクソノミーを紐づける投稿タイプ(例:
post
、product
など)の名前、または配列。 - $args
-
タクソノミーのオプションを含む連想配列。
戻り値
- WP_Error | null
-
成功した場合は
null
、失敗した場合はWP_Error
オブジェクトが返されます。
オプション
- label
-
管理画面に表示されるタクソノミーの名前。
- public
-
タクソノミーが公開されるかどうかを指定します(
true
またはfalse
)。 - hierarchical
-
タクソノミーが階層構造(カテゴリのような親子関係)を持つかどうかを指定します。
- rewrite
-
タクソノミーのURLのスラッグを指定します。
- show_ui
-
管理画面でタクソノミーのUIを表示するかどうか。
使用例
function register_event_taxonomy() {
register_taxonomy('event_type', 'event', array(
'labels' => array(
'name' => 'イベントタイプ',
'singular_name' => 'イベントタイプ',
),
'public' => true,
'hierarchical' => false,
'rewrite' => array('slug' => 'event-type'),
'show_ui' => true,
));
}
add_action('init', 'register_event_taxonomy');
register_taxonomy()
:event_type
というタクソノミーをevent
投稿タイプに登録します。labels
配列: 管理画面に表示される名前を指定します。public
: フロントエンドと管理画面で利用可能にします。hierarchical
: 階層構造を持たない設定(タグのような構造)。rewrite
: スラッグをevent-type
に設定。show_ui
: 管理画面にUIを表示。
一緒に使うことが多い関連タグ
get_terms()
特定のタクソノミーに属する全てのタームを取得するためのテンプレートタグです。
$terms = get_terms(array(
'taxonomy' => 'event_type',
'hide_empty' => true,
));
foreach ($terms as $term) {
echo $term->name . '<br>';
}
register_taxonomy()
と get_terms()
を組み合わせて、タクソノミーの全タームを表示します。
function display_event_types() {
$terms = get_terms(array('taxonomy' => 'event_type'));
if (!empty($terms) && !is_wp_error($terms)) {
foreach ($terms as $term) {
echo '<li>' . $term->name . '</li>';
}
}
}
追加情報を取得したい場合
タクソノミーに関連するターム情報を取得するために get_term()
を使用することができます。
get_term() で取得できるターム情報
$term = get_term(1, 'event_type');
echo 'ターム名: ' . $term->name;
出力できる情報
- name: ターム名
- slug: タームのスラッグ
- term_id: タームのID
- description: タームの説明
想定されるトラブル
タクソノミーが管理画面に表示されない
show_ui
オプションを true
に設定してください。
パーマリンクが正しく動作しない
パーマリンク設定で「保存」をクリックし、再生成してください。
Q&A
まとめ
register_taxonomy()
は、WordPressでカスタムタクソノミーを登録するための重要な関数です。
独自の分類基準を作成することで、コンテンツ管理がより柔軟になります。タクソノミーを使うことで、投稿タイプに適切な分類を適用し、管理や検索の利便性を向上させることが可能です。