カスタム投稿タイプを作ってみよう

はじめに

カスタム投稿タイプを作成していますか?
WordPressのカスタム投稿タイプを利用することで、投稿や固定ページ以外の情報を整理・管理しやすくなり、より柔軟で拡張性の高いウェブサイトを構築することができます。例えば、「お知らせ」「商品」「事例紹介」「スタッフ紹介」など、サイトの構成に応じた独自の投稿タイプを作成することで、情報の種類ごとに適切な入力フォームや表示テンプレートを用意でき、運用が効率化されます。

また、管理画面上でも情報が分類されるため、コンテンツの登録・編集作業が直感的になり、非エンジニアのスタッフでも扱いやすくなります。カスタムタクソノミー(独自のカテゴリやタグ)と組み合わせることで、より細かな分類や検索も可能となり、ユーザーにとっても分かりやすいナビゲーションが実現できます。

さらに、WordPressのテンプレート階層に従って各投稿タイプごとの表示カスタマイズも可能になるため、サイト全体の設計やデザインをコンテンツに応じて最適化することができます。結果として、更新性・運用性・ユーザビリティのすべてを向上させることができます!

編集ファイル

require get_template_directory() . '/inc/custom-post-types.php';
// カスタム投稿タイプの登録
function my_custom_post_type() {
  register_post_type('news', [
    'labels' => [
      'name' => 'お知らせ',
      'singular_name' => 'お知らせ',
    ],
    'public' => true,
    'has_archive' => true,
    'menu_position' => 5,
    'capability_type' => 'news',
    'map_meta_cap' => true,
    'supports' => ['title', 'editor', 'thumbnail'],
    'menu_icon' => 'dashicons-bell',
    'show_in_menu' => true,
  ]);
}
add_action('init', 'my_custom_post_type');

説明

カスタム投稿タイプ用のカスタム関数の外部ファイルを読み込む
register_post_type
カスタム投稿タイプを作成します。
第一引数
カスタム投稿タイプでのスラッグを指定します。
第二引数
様々なオプションを配列で設定します。
'labels' => array(),
管理画面上のカスタム投稿タイプの名前
'description' => '',
説明文
'publicly_queryable' => true,
標準なクエリ―を有効化
'exclude_from_search' => false,
検索の対象としない
'capability_type' => 'post',
独自の権限を設定
'capabilities' => array(),
操作できる権限の割り当て
'map_meta_cap' => null,
使用できる権限タイプを指定
'hierarchical' => true,
記事の階層構造を許可
'public' => false,
管理画面、サイトに表示する
'rewrite' => true,
スラッグの書き換え
'has_archive' => true,
アーカイブページを生成する
'query_var' => true,
検索のパラメーターキーを指定
'supports' => array(),
使用できる投稿用のパーツを指定
title, editor, author, thumbnail, excerpt, trackbacks, custom-fields, comments, revisions, page-attributes, post-formats
'register_meta_box_cb' => null,
編集フォームのメタボックスを設定するコールバック関数
'taxonomies' => array(),
使用するタクソノミーを指定
'show_ui' => true,
管理画面に表示
'menu_position' => 5,
管理画面のサイドバー[投稿]の下に追加
'menu_icon' => null,
管理画面の左サイドメニューにあるアイコンを設定。詳細は以下
https://developer.wordpress.org/resource/dashicons/
'can_export' => true,
エクスポートを可能
'show_in_nav_menus' => true,
外観のメニューに表示
'show_in_menu' => true,
管理画面のサイドバーに表示
'show_in_admin_bar' => true,
ナビゲーションメニューに表示
'show_in_rest' => true,
ブロックエディタを有効化
'delete_with_user' => null,
ユーザーが削除された際に関連する投稿を削除
※上記等様々なオプションがありますが、不必要であれば設定をしなくてもデフォルトの設定で反映されますので、全て設定をしなくても問題ありません。

最後に

通常の投稿とは異なる「お知らせ」を追加することが出来ます。
投稿を分けることによって管理もしやすいですし、表示させる際にも「特定のカスタム投稿からn件表示させたい!」等の対応も可能です!

また、権限を分けることによってお知らせのカスタム投稿しか編集出来ないユーザーを設定することも可能です。
カスタム投稿を作成するプラグイン等もありますが、こちらの方がカスタムしやすいと思いますので
是非皆さんもカスタム投稿を作成し、様々な記事を記載してみてください!
※「よくある質問」もカスタム投稿にすると簡単に追加・削除が出来ますので便利です。