ヘッダーのロゴ

すぐに仕事で使えるIT技術情報メディア

初心者必見!WordPressでカスタムタクソノミーを実装する方法

投稿日:2024年04月08日(月) 更新日:2024年04月14日(日)
初心者必見!WordPressでカスタムタクソノミーを実装する方法|WordPress MAGAZINE ワードプレスマガジン|すぐに仕事で使えるIT技術情報メディア

みなさんこんにちは!エンジニアの高澤です!

今回はWordPressのカスタムタクソノミーの実装方法ついて解説していきたいと思います。

タクソノミーとは

タクソノミーとは、コンテンツ(記事ページ等)を分類して整理するための仕組みを指します。

WordPressでは、コンテンツを分類するためのデフォルトのタクソノミーとして「カテゴリー(Category)」や「タグ(Tag)」が提供されています。

これらのタクソノミーを使用することで、投稿やページを論理的にグループ化して管理することができます。

たとえば、ブログの場合、投稿をカテゴリーごとに分類することで、読者が関心のあるトピックに基づいて記事を見つけやすくなります。

また、タグを使用することで、特定のキーワードやトピックに関連する投稿をマークすることができます。

さらに、WordPressではカスタムタクソノミーを定義することもできます。これにより、ユーザーは自分のウェブサイトに固有の分類法を設定し、コンテンツをカスタマイズすることができます。

たとえば、商品サイトであれば商品のカテゴリーやブランドなど、独自の分類体系を作成することができます。

要するに、タクソノミーはコンテンツを整理し、構造化するための方法であり、WordPressではこれを利用してコンテンツを簡単に管理できるようになっています。

カスタムタクソノミーとは

カスタムタクソノミー(Custom Taxonomy)とは、WordPressでデフォルトで用意されている「カテゴリー(Category)」や「タグ(Tag)」のような、投稿ページを分類するための分類法を、ユーザーが独自に定義できる仕組みのことをいいます。

簡単にいうと独自に作成した記事のカテゴリー分けの仕組みです。

通常、WordPressでは投稿ページをカテゴリーやタグによって分類しますが、場合によってはこれだけでは不十分な場合があります。

例えば、書籍のサイトであれば「ジャンル」や「著者」などの分類が必要になるかもしれません。

このような場合に、カスタムタクソノミーを使用することで、新しい分類法を追加できます。

カスタムタクソノミーのメリット

カスタムタクソノミーはブログサイトやメディアサイトには利便性やユーザーインターフェースを考えると必須の機能といえます。

カスタムタクソノミーにはいくつかメリットがあります。

  • 独自の分類体系の構築
  • フィルタリングや検索の改善
  • 柔軟性の向上

それぞれ解説いたします。

独自の分類体系の構築

カスタムタクソノミーを使用することで、投稿やページを独自の分類体系で整理することができます。

例えば、商品サイトであれば「ブランド」や「カラー」などの分類を追加できます。

フィルタリングや検索の改善

カスタムタクソノミーを使用すると、ユーザーが特定の分類に基づいて投稿やページをフィルタリングしたり検索したりすることができます。

これにより、ユーザーエクスペリエンスを向上させることができます。

柔軟性の向上

WordPressのカスタム投稿タイプと組み合わせて使用することで、独自のコンテンツ構造を実現できます。

例えば、映画サイトであれば「ジャンル」や「監督」などのカスタムタクソノミーを追加して、映画の情報をより詳細に管理することができます。

このように、カスタムタクソノミーはWordPressの柔軟性を活用して、さまざまな種類のウェブサイトを構築する際に非常に便利な機能です。

カスタムタクソノミーの実装方法

それでは早速カスタムタクソノミーの実装方法について解説していきたいと思います。

以下のコードをfunctions.phpにコピ&ペーストしてください。

// カスタムタクソノミーの登録
function create_custom_taxonomy() {
    $labels = array(
        'name'              => _x( 'Custom Taxonomies', 'taxonomy general name' ),
        'singular_name'     => _x( 'Custom Taxonomy', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Custom Taxonomies' ),
        'all_items'         => __( 'All Custom Taxonomies' ),
        'parent_item'       => __( 'Parent Custom Taxonomy' ),
        'parent_item_colon' => __( 'Parent Custom Taxonomy:' ),
        'edit_item'         => __( 'Edit Custom Taxonomy' ),
        'update_item'       => __( 'Update Custom Taxonomy' ),
        'add_new_item'      => __( 'Add New Custom Taxonomy' ),
        'new_item_name'     => __( 'New Custom Taxonomy Name' ),
        'menu_name'         => __( 'Custom Taxonomy' ),
    );

    $args = array(
        'hierarchical'      => true, // trueであればカテゴリー、falseであればタグのようになります
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'custom-taxonomy' ), // パーマリンクのスラッグ
    );

    // カスタムタクソノミーの登録
    register_taxonomy( 'custom_taxonomy', array( 'post' ), $args );
}

// initフックでカスタムタクソノミーの登録関数を呼び出す
add_action( 'init', 'create_custom_taxonomy', 0 );

コードをfunctions.phpにコピー&ペーストして保存が完了したら、管理画面を更新することで管理画面左メニューに記述したカスタムタクソノミーが新規追加されているのが確認できるかと思います。

上記コードはデフォルトの「投稿」に対して「custom_taxonomy」というタクソノミー名でカスタムタクソノミーを追加するコードになります。

下図のイメージで追加されているかと思います。

皆さんは無事作成できましたでしょうか?

カスタム投稿タイプと合わせて実装する方法

カスタムタクソノミーとセットでしばしば実装されるのがカスタム投稿タイプです。

カスタム投稿タイプとは、特定の複数の記事データをグループ単位で区切った独自の投稿タイプのことをいいます。

ピンとこない方は、WordPress管理画面左メニューにある「投稿」や「固定ページ」のことをイメージしていただけるとわかりやすいかと思います。

当記事ではせっかくなので、カスタム投稿タイプの新規作成も合わせて実装コードをご紹介させていただきます。

以下のコードをfunctions.phpにコピー&ペーストしてください。

// カスタム投稿タイプの登録
function create_custom_post_type() {
    // カスタム投稿タイプのラベル
    $labels = array(
        'name'               => __( 'Custom Post Types' ),
        'singular_name'      => __( 'Custom Post Type' ),
        'add_new'            => __( 'Add New' ),
        'add_new_item'       => __( 'Add New Custom Post Type' ),
        'edit_item'          => __( 'Edit Custom Post Type' ),
        'new_item'           => __( 'New Custom Post Type' ),
        'view_item'          => __( 'View Custom Post Type' ),
        'search_items'       => __( 'Search Custom Post Types' ),
        'not_found'          => __( 'No custom post types found' ),
        'not_found_in_trash' => __( 'No custom post types found in Trash' ),
        'parent_item_colon'  => __( 'Parent Custom Post Type:' ),
        'menu_name'          => __( 'Custom Post Types' ),
    );

    // カスタム投稿タイプの設定
    $args = array(
        'labels'             => $labels,
        'description'        => 'Description of Custom Post Type',
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'custom-post-type' ), // パーマリンクのスラッグ
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
    );

    // カスタム投稿タイプの登録
    register_post_type( 'custom_post_type', $args );


    $labels = array(
        'name'              => _x( 'Custom Taxonomies', 'taxonomy general name' ),
        'singular_name'     => _x( 'Custom Taxonomy', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Custom Taxonomies' ),
        'all_items'         => __( 'All Custom Taxonomies' ),
        'parent_item'       => __( 'Parent Custom Taxonomy' ),
        'parent_item_colon' => __( 'Parent Custom Taxonomy:' ),
        'edit_item'         => __( 'Edit Custom Taxonomy' ),
        'update_item'       => __( 'Update Custom Taxonomy' ),
        'add_new_item'      => __( 'Add New Custom Taxonomy' ),
        'new_item_name'     => __( 'New Custom Taxonomy Name' ),
        'menu_name'         => __( 'Custom Taxonomy' ),
    );

    $args = array(
        'hierarchical'      => true, // trueであればカテゴリー、falseであればタグのようになります
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'custom-taxonomy' ), // パーマリンクのスラッグ
    );

    // カスタムタクソノミーの登録
    register_taxonomy( 'custom_taxonomy', array( 'custom_post_type' ), $args );
}

// initフックでカスタム投稿タイプの登録関数を呼び出す
add_action( 'init', 'create_custom_post_type' );

コードをfunctions.phpにコピー&ペーストして保存が完了したら、管理画面を更新することで管理画面左メニューに記述したカスタム投稿タイプとカスタムタクソノミーが新規追加されているのが確認できるかと思います。

上記コードでは、「custom_taxonomy」というカスタムタクソノミーを新規作成し、その作成先の投稿タイプとして合わせて新規作成した「custom_post_type」もセットで新規追加した実装コードになります。

上図のイメージで作成されていれば完了です。

タクソノミーをブロックエディタに対応させる方法

カスタムタクソノミーを実装したのはいいものの、エディタ自体をブロックエディタに変更した際、もしくは元々ブロックエディタである場合は追加したカスタムタクソノミーが管理画面に表示されていない場合があります。

その場合、クラシックエディタで問題なく表示されている場合があり、これをブロックエディタで表示させるための対応が必要になります。

ブロックエディタでカスタムタクソノミーを使用したい場合はregister_taxonomy()関数のパラメーターに以下のコードを追加してください。

'show_in_rest' => true,

「show_in_rest」を「true」を指定してあげるとブロックエディタにカスタムタクソノミーが表示されて選択できるようになります。

ご参考にしていただけましたら幸いです。

まとめ

カスタムタクソノミーを実装する方法の解説は以上になります。

カスタムタクソノミーの実装はWordPressエンジニアにとっては必須のスキルといっても過言ではありません。

また、カスタムタクソノミーを実装できることはWordPressの可能性を格段に広けることができるようになるため、よろしければぜひ当記事をご活用いただけますと幸いです。

執筆者

ワードプレスマガジン編集部 高澤 翔汰

歴4年目(2024年8月以降から5年目です)のエンジニアです!
CMSでのサイト構築とWebデザイン制作を兼任して4年目になります。
自作のiOSアプリ(iPhoneアプリ)やWordPressプラグインを開発することもあり、まだまだ現在進行形で勉強中です!