WordPress にはデフォルトでは「投稿」と「個別ページ」の二種類の投稿タイプに、「タグ」と「カテゴリー」の二種類のタクソノミーが用意されている。通常のブログではこれだけあれば十分だと思うが、より複雑な Web サイトを構築するのであれば、カスタム投稿タイプとカスタムタクソノミーを利用しよう。
カスタム投稿タイプとカスタムタクソノミーを利用すれば、より多くの投稿タイプとタクソノミーを WordPress に追加することができる。このページではカスタム投稿タイプとカスタムタクソノミーを利用する方法を紹介しよう。
WordPress でカスタム投稿タイプを利用する方法
カスタム投稿タイプを利用するには functions.php に記述するかプラグインを利用するかの二択だ。PHP がある程度分かるのであれば functions.php を編集するほうが良いと思う。
functions.php を編集してカスタム投稿タイプを利用する方法
カスタム投稿タイプを利用するには functions.php に以下のような記述を行おう。
add_action( 'init', 'create_posttype' );
function create_posttype() {
register_post_type(
'custom_posts', // 投稿タイプ, 20文字以下の英数字・ダッシュ・アンダースコア
array(
'label' => 'カスタム投稿', // カスタム投稿タイプの名前
// 'labels' => array(), // カスタム投稿で利用する各種文字列の個別設定
'description' => '', // 投稿タイプの説明
'public' => true, // カスタム投稿タイプを公開するか否か
'hierarchical' => false, // 階層構造にするか
'has_archive' => true, //アーカイブページの有無
'menu_position' => 5, // 管理画面左のメニューで表示する位置
'show_in_rest' => true, // REST API を有効にするか
'rewrite' => true, // パーマリンクを編集可能にする
'supports' => array( // 編集画面で表示する項目
'title',
'editor',
'thumbnail',
'revisions',
'custom-fields',
'excerpt',
'author',
'trackbacks',
'comments',
'page-attributes'
),
)
);
}
register_post_type メソッドでカスタム投稿タイプを登録できる。一つ目の post_type だけ必須であとはオプショナルだが、このぐらいは設定しておくと通常の投稿と同じような感じで扱える。
functions.php に記述してブラウザをリロードすればこのように管理画面に現れるはずだ。
ちなみに WordPress のブロックエディタを利用するなら show_in_rest は true にしないといけないっぽい(Gutenberg が REST API を使ってるため)
register_post_type() – Function | Developer.WordPress.org
functions.php を編集してカスタムタクソノミーを利用する方法
カスタムタクソノミーを利用するには以下のようなコードを記述する。
add_action( 'init', 'create_taxonomy' );
function create_taxonomy() {
register_taxonomy(
'custom_taxonomy', // カスタムタクソノミー名
'post', // どの投稿タイプで利用するか
array(
'label' => 'カスタムタクソノミー',
'labels' => array(), // 管理画面に表示する各種文言の指定
'public' => true, // 公開するか否か
'hierarchical' => false, // 階層構想にするか否か
'show_in_rest' => true, // REST API を有効にするか
'show_admin_column'=> true, // 管理画面に表示するか
'rest_base' => 'custom_taxonomies', // REST API でアクセスするパス
)
);
hierarchical を true にするとカテゴリーのような階層構造に、false にするとタグのような階層なしのタクソノミーとなる。
カスタム投稿タイプでカスタムタクソノミーを利用する場合は、第二引数の投稿タイプにその名前を指定しよう。
register_taxonomy() – Function | Developer.WordPress.org
カスタム投稿タイプ・カスタムタクソノミーを REST API で利用する方法
register_post_type や register_taxonomy のオプションに show_in_rest を true にすれば REST API でアクセス可能となる。その際、カスタム投稿タイプであれば posts のかわりにカスタム投稿タイプで指定した名前に、カスタムタクソノミーであれば tags や categories と指定する箇所をカスタムタクソノミーで指定した値に変えるだけでアクセス可能になる。
例えばカスタム投稿タイプ custom_posts に対してアクセスするのであれば、以下の URL が利用できる。
https://example.com/wp-json/wp/v2/custom_posts
カスタムタクソノミー custom_taxonomies に対してアクセスするのであれば、以下のようにする。
https://example.com/wp-json/wp/v2/custom_taxonomies
これらの値は register_post_type や register_taxonomy のオプションにある rest_base で指定できる。
コメント