カスタム投稿タイプを自作する方法をご紹介!(※プラグインなし)

Web制作
スポンサーリンク

こんちには!
フロントエンドエンジニア・マークアップエンジニアのリクです!
※久しぶりの更新です。

カスタム投稿タイプをプラグインなしで、自分なりにカスマイズして機能を追加しようと思い、その方法を簡単にまとめてみました。

スポンサーリンク

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

WordPress内に存在する、ブログ記事などを投稿するための機能のことを指します。

「投稿」という項目があり、その機能を「投稿2」の項目として追加することも可能です。

一般的には、「News」、「Blog」などの項目で使用されている方が多いでしょう。

スポンサーリンク

カスタム投稿タイプを自作する方法

プラグインを使用しない場合は、functions.phpファイルに下記のコードをコピペします。

<?php
add_action('init', 'create_post_type');
function create_post_type()
{
    //投稿時に使用できる投稿用のパーツを指定
    $supports = array(
        'title', //タイトルフォーム
        'editor', //エディター(内容の編集)
        'thumbnail', //アイキャッチ画像
        'author', //投稿者
        'excerpt', //抜粋
        'revisions', //リビジョンを保存
    );
    register_post_type(
        'sample', // 投稿タイプ名
        [
        'labels' => [
            'name' => 'サンプル投稿', // 管理画面上で表示する投稿タイプ名
            'add_new' => '新規追加', // 新規追加のラベル
            // 'add_new_item' => 'サンプル投稿新規登録', // 編集画面ラベル(新規登録時)
            // 'edit_item' => 'サンプル投稿編集', //編集画面ラベル(既存投稿編集時)
            // 'menu_name' => 'サンプル投稿', //管理画面メニュー(親ラベル)
            // 'all_items' => 'サンプル投稿', //管理画面メニュー(一覧ラベル)
            // 'search_items' => 'サンプル投稿を検索' , //検索フォームボタンラベル
            // 'singular_name' => 'サンプル投稿識別名',    // カスタム投稿の識別名
        ],
        'public'        => true,  // カスタム投稿タイプの表示(trueにする)
        'has_archive'   => true, // カスタム投稿一覧(true:表示/false:非表示)
        'menu_position' => 5,     // 管理画面上での表示位置
        'show_in_rest'  => false,  // true:「Gutenberg」/ false:「ClassicEditor」
        'supports' => $supports
        ]
    );
}

設定する項目は下記となります。

▼カスタム投稿名

  • labels:作成するカスタム投稿の各項目のラベルの設定
  • publish:カスタム投稿タイプの表示
  • has_archive:カスタム投稿の一覧の表示
  • menu_position:管理画面上での表示位置
  • show_in_rest:エディターの種類
  • supports:カスタム投稿編集画面に表示させる項目

カテゴリーやタグは?

投稿機能に必要な「カテゴリー」や、「タグ」機能なども自由にカスタマイズすることが可能です。

functions.phpファイルに下記のコードを追記することで、「カテゴリー」や「タグ」機能を追加することができます。

register_taxonomy(
        'sample-cat',
        'sample',
        array(
          'label' => 'カテゴリー',
          'hierarchical' => true,
          'public' => true,
          'show_in_rest' => true,
        )
    );
    register_taxonomy(
        'sample-tag',
        'sample',
        array(
          'label' => 'タグ',
          'hierarchical' => false,
          'public' => true,
          'show_in_rest' => true,
          'update_count_callback' => '_update_post_term_count',
        )
    );
スポンサーリンク

更に投稿タイプを追加する方法

もう一つ投稿タイプを追加したい場合は、下記をfunctions.phpファイルにコピペします。

「register_post_type」の下に同じような形式で設定してみましょう。

register_post_type(
    'sample2', // 投稿タイプ名
    [
    'labels' => [
        'name' => 'サンプル投稿', // 管理画面上で表示する投稿タイプ名
        'add_new' => '新規追加', // 新規追加のラベル
        // 'add_new_item' => 'サンプル投稿新規登録', // 編集画面ラベル(新規登録時)
        // 'edit_item' => 'サンプル投稿編集', //編集画面ラベル(既存投稿編集時)
        // 'menu_name' => 'サンプル投稿', //管理画面メニュー(親ラベル)
        // 'all_items' => 'サンプル投稿', //管理画面メニュー(一覧ラベル)
        // 'search_items' => 'サンプル投稿を検索' , //検索フォームボタンラベル
        // 'singular_name' => 'サンプル投稿識別名',    // カスタム投稿の識別名
    ],
    'public'        => true,  // カスタム投稿タイプの表示(trueにする)
    'has_archive'   => true, // カスタム投稿一覧(true:表示/false:非表示)
    'menu_position' => 5,     // 管理画面上での表示位置
    'show_in_rest'  => false,  // true:「Gutenberg」/ false:「ClassicEditor」
    'supports' => $supports
    ]
);

各項目を変更して設定してみましょう。

最後に

カスタム投稿タイプをプラグインなしで追加する方法を解説しました。

他にもカスタマイズできる機能がたくさんあります。

functions.phpファイルに追記することで、様々な機能を使用できるようになりますので、他の記事でもご紹介していきます。

コメント

タイトルとURLをコピーしました