プラグインなしでカスタム投稿追加

カスタム投稿とカスタムタクソノミーのプラグインなしの設定方法です。
使用テーマや他プラグインと相性が良くない場合や、プラグインを極力減らしたい場合にご活用ください。
更新の可能性のあるテーマ(自作ではないテーマ)の場合は子テーマを作成して、子テーマから下記に進んでください。

  1. カスタム投稿とカスタムタクソノミーの追加
  2. 複数のカスタム投稿を追加

カスタム投稿とカスタムタクソノミーの追加

下記をfunction.phpにコピペで追加します。


       add_action( 'init', 'create_post_type' );
       function create_post_type() {
        // ここからカスタム投稿追加
        register_post_type('カスタム投稿名',
            array(
                'label' => '表示名',
                'description' => '',
                'public' => true, //通常はtrueでいいかと。
                'show_ui' => true, //通常はtrueでいいかと。
                'show_in_menu' => true, //通常はtrueでいいかと。
                'show_in_rest' => false, //trueでカスタム投稿をWP REST APIから取得できる。
                'has_archive' => true, //アーカイブの要否の設定。
                'exclude_from_search' => false, //サイト内検索の対象にするかどうかの設定。
                'capability_type' => 'post', //post(「投稿」)と同等の権限にしますよ、ってこと。
                'hierarchical' => true, //階層構造を許可するかどうかの設定。
                'rewrite' => array( 'slug' => 'スラッグを指定' ), //デフォルトの代わりに使うカスタム投稿タイプのスラッグの設定。
                'query_var' => false, //trueで「https://~/?カスタム投稿タイプ名=個々のカスタム投稿のスラッグ」、falseで「https://~/?post_type=カスタム投稿タイプ名&name=個々のカスタム投稿のスラッグ」で表示
                'menu_position' => 5, //この投稿タイプが表示されるメニューの位置。
                'supports' => array( //投稿時に使用できる投稿用のパーツの設定。
                    'title',
                    'editor',
                    'revisions',
                    'thumbnail',
                    'page-attributes', //記事を新規追加した際に「属性」が表示され、「ページ順序」が利用できるようになる。
                    'comments'
                ),
            )
        );
        // ここからカスタムタクソノミー追加
        register_taxonomy(
            'カスタムタクソノミー名',
            'カスタム投稿名', //利用する投稿タイプ
            array(
                'label' => '表示名',
                'singular_label' => '管理画面での表示名',
                'show_ui' => true, //通常はtrueでいいかと。
                'hierarchical' => true, //trueでカテゴリー、falseでタグの扱いになる。
                'query_var' => true, //wp_queryに認識させるかどうかの設定。
                'rewrite' => array('slug' => 'スラッグを指定'), //デフォルトの代わりに使うカスタムタクソノミーのスラッグの設定。
                'show_admin_column' => true, //カスタム投稿一覧画面でカスタムタクソノミーを表示するかどうかの設定。
            )
        );
       }
   

複数のカスタム投稿を追加

複数のカスタム投稿やカスタムタクソノミーを作成するときは変数でまとめて記述を減らしましょう。


       function create_post_type() {
        $customSupports = [
            'title',
            'editor',
            'revisions'
            'thumbnail',
        ];

        register_post_type( 'カスタム投稿名',
            array(
                'label' => '表示名',
                'public' => true,
                'has_archive' => true,
                'menu_position' => 5,
                'supports' => $customSupports
           )
        );
       }
       add_action( 'init', 'create_post_type' );