【WordPressカステムテンプレート】カスタム投稿タイプを追加する方法

こんにちは。「そら」です。

WordPressのカスタムテンプレートを作る際に必須になってくるのが、「カスタム投稿タイプの追加」だと思います。

そこで今回は、現役のWebデザイナーが実務で使っているカスタム投稿タイプを追加するコードを紹介しようと思います。

カスタムテンプレートってなんだ?と思っている人も、丁寧に解説しますので、お付き合いください!

カスタム投稿タイプを追加するコード

では、具体的にカスタム投稿タイプを追加する方法を見ていきましょう。

今回は「実績」というカスタム投稿タイプを追加し、カテゴリーとタグも設定する方法を紹介します。

以下のコードを使用します。これをテーマの functions.php ファイルに追加します。

add_action('init', 'create_post_type');

function create_post_type() {
    register_post_type(
        'works',
        array(
            'label' => '実績',
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'works', 'with_front' => false),
            'show_in_rest' => true,
            'menu_position' => 5,
            'show_in_nav_menus' => true,
            'supports' => array(
                'title',
                'editor',
                'thumbnail',
                'revisions',
            ),
        )
    );

    register_taxonomy(
        'works-cat',
        'works',
        array(
            'label' => 'カテゴリー',
            'hierarchical' => true,
            'public' => true,
            'show_in_rest' => true,
            'show_in_nav_menus' => true,
        )
    );

    register_taxonomy(
        'works-tag',
        'works',
        array(
            'label' => 'タグ',
            'hierarchical' => false,
            'public' => true,
            'show_in_rest' => true,
            'show_in_nav_menus' => true,
            'update_count_callback' => '_update_post_term_count',
        )
    );
}

難しいことを知らなくてもいいという人は、これをコピペして張り付けるだけで完成します!

それぞれがどのような記述になっているのか深く知りたい方は以下の解説を読んでください!

カスタム投稿タイプとは?

まず、カスタム投稿タイプ(Custom Post Type)とは何でしょうか?

WordPressはもともとブログプラットフォームとして設計されており、「投稿」と「固定ページ」という2種類のコンテンツタイプが標準で用意されています。

しかし、ブログ以外の用途でWordPressを使う場合、これだけでは不十分なことがあります。

例えば、ホームページを作成する際には、ブログ、お知らせのように複数の投稿ページを持ちたい場合もありますよね。

そこで登場するのがカスタム投稿タイプです。

カスタム投稿タイプを利用すると、標準の「投稿」や「固定ページ」とは別に、自分のサイトに合った独自のコンテンツタイプを追加できます。

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

カスタムタクソノミー(Custom Taxonomy)は、カスタム投稿タイプをさらに分類するための方法です。

標準の「カテゴリー」や「タグ」と同様に、カスタムタクソノミーを使用してコンテンツを整理できます。

例えば、「実績」投稿タイプに対して「カテゴリー」や「タグ」を作成することで、投稿をさらに細かく分類・整理することができます。

カスタムタクソノミーを設定しないと、その投稿タイプ内での分類ができません。

すべての投稿が一つのカテゴリにまとめられることになり、ユーザーが特定のテーマやトピックに関連する投稿を見つけるのが難しくなります。

コードの詳細解説

add_action(‘init’, ‘create_post_type’);

WordPressの初期化時に create_post_type 関数を実行するためのフックを設定します。

function create_post_type() { … }

create_post_type 関数内でカスタム投稿タイプとカスタムタクソノミー(カテゴリーとタグ)を登録します。

カスタム投稿タイプ「works」を登録

カスタム投稿タイプを登録します。

ここで登録することで、WordPressの管理画面左側に登録した名前で表示されます。

register_post_type 関数で新しいカスタム投稿タイプ「works」を登録します。

label: 管理画面で表示される投稿タイプの名前です。

public: 投稿タイプを公開するかどうかを指定します。

has_archive: アーカイブページを持つかどうかを指定します。

rewrite: パーマリンクの設定を行います。slugはURLの一部となるスラッグを指定します。

show_in_rest: REST APIで利用可能にします。

menu_position: 管理画面のメニュー位置を指定します。

show_in_nav_menus: ナビゲーションメニューに表示するかどうかを指定します。

supports: 投稿タイプがサポートする機能を指定します(タイトル、エディター、サムネイル、リビジョンなど)。

カスタムタクソノミー「works-cat」を登録

このカスタムタクソノミーはカテゴリーとして機能するよう設定しています。

・ register_taxonomy 関数で新しいカスタムタクソノミー「works-cat」を登録します。

label: 管理画面で表示されるタクソノミーの名前です。

hierarchical: 階層構造を持つかどうかを指定します(カテゴリーのように)。

public: タクソノミーを公開するかどうかを指定します。

show_in_rest: REST APIで利用可能にします。

show_in_nav_menus: ナビゲーションメニューに表示するかどうかを指定します。

カスタムタクソノミー「works-tag」を登録

このカスタムタクソノミーはタグとして機能するよう設定しています。

register_taxonomy 関数で新しいカスタムタクソノミー「works-tag」を登録します。

label: 管理画面で表示されるタクソノミーの名前です。

hierarchical: 階層構造を持たない(タグのように)設定です。

public: タクソノミーを公開するかどうかを指定します。

show_in_rest: REST APIで利用可能にします。

show_in_nav_menus: ナビゲーションメニューに表示するかどうかを指定します。

update_count_callback: タグのカウントを更新するコールバック関数です。

まとめ

いかがだったでしょうか。

今回紹介したコードで、カスタム投稿タイプを丸々もう一個増やすことができます。

カスタム投稿タイプを増やすことはカスタムテンプレートを作るうえで、必須の技術ですのでぜひ見に付けてみてください!