WordPressでカスタム投稿タイプを追加する方法を解説します。

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

WordPressにはデフォルトで投稿機能が備わっています。投稿はカテゴリ分けをするなどしてそれだけでも十分使うことができます。

しかし管理するコンテンツの種類が多くなるとどうしても違った使い方をしたいコンテンツが出てきたり、管理しにくくなったりします。

そんな時は投稿機能と同じようなメニューをオリジナルで追加することができます。カスタム投稿はプラグインでも追加することができますが、無駄にプラグインを増やすとコンフリクトを起こしたり、脆弱性が増すこともあるため今回はテーマのfunctions.phpを使ってカスタム投稿を追加します。

functions.phpでカスタム投稿を設定

今回は「ニュース」という名前のカスタム投稿を追加します。まずコードをみてみましょう。

functions.php

順番にコードの中身をみていきます。

カスタム投稿の編集画面で利用する機能の設定

まず編集画面で使用するモジュールを設定します。タイトルとエディタ以外にも必要なものがあれば随時追加してください。

今回は抜粋文とアイキャッチとリビジョンを入れています。

カスタム投稿タイプの諸設定

register_post_typeを使ってカスタム投稿タイプの追加設定をします。

まずカスタム投稿名を設定します。今回はnewsにしています。

その他の設定を配列で設定します。

labelは管理画面のメニューで表示されるテキストです。

publicはtrueにしましょう。管理画面とフロントでカスタム投稿タイプが利用可能になります。

has_archiveはtrueにするとアーカイブが有効になります。アーカイブのスラッグは設定した投稿名、ここではnewsになります。

menu_positionはメニューの表示位置です。ここでは投稿の下に表示させています。

show_in_restはREST APIを有効にするかどうかです。有効化するとエディタがブロックエディタになります。REST API使いつつクラシックエディタを使用したい場合はクラシックエディタのプラグインを入れると良いです。

rest_baseはカスタム投稿タイプのREST APIのエンドポイントを設定できます。newsとするとhttps://sample-site.com/wp-json/wp/v2/newsでjson形式のデータにアクセスできます。

supportsは先ほどまとめた編集画面での使用モジュールの設定です。$newsSupportsを入れておきます。

カスタムタクソノミー の設定

次にカスタムタクソノミーの設定です。今回はカテゴリーとして使います。

タクソノミー の名前を好きなように決めてください。次にカスタム投稿タイプの名前を入れて、タクソノミー の設定をしていきます。

今回は親子関係ありでメニューにはカテゴリーと表記させています。

まとめ

以上がfunctions.phpでカスタム投稿タイプを設定する方法です。コピペして一部名称など変えるだけで簡単にカスタム投稿タイプが作れると思います。

ACF(Advanced Custom Fields)でカスタムフィールドを設定するとその投稿タイプ特有の入力欄などが設定できるので、用途が基本の投稿と分かれてしまったり、管理が大変な場合は是非使ってみてください。