MENU

register_taxonomy()– Function –

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

カスタムタクソノミーを紐づける投稿タイプ(例:postproduct など)の名前、または配列。

$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');
  1. register_taxonomy(): event_type というタクソノミーをevent投稿タイプに登録します。
  2. labels 配列: 管理画面に表示される名前を指定します。
  3. public: フロントエンドと管理画面で利用可能にします。
  4. hierarchical: 階層構造を持たない設定(タグのような構造)。
  5. rewrite: スラッグをevent-typeに設定。
  6. 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() のタクソノミー名にはどんな制限がありますか?

名前には20文字以内で、小文字とアンダースコアを使用する必要があります。

カスタムタクソノミーは複数の投稿タイプに登録できますか?

はい、$object_type に配列を渡すことで、複数の投稿タイプに紐づけられます。

階層構造のタクソノミーと非階層構造の違いは?

階層構造ではカテゴリのような親子関係が作れますが、非階層構造ではタグのようにフラットな関係になります。

まとめ

register_taxonomy() は、WordPressでカスタムタクソノミーを登録するための重要な関数です。

独自の分類基準を作成することで、コンテンツ管理がより柔軟になります。タクソノミーを使うことで、投稿タイプに適切な分類を適用し、管理や検索の利便性を向上させることが可能です。

カスタマイズ例

1