コピペで簡単カスタム投稿タイプの作り方

企業サイトをWordPressで作成していると、お知らせとコラムやその他の記事を分けて管理したいという依頼をいただく事があります。

目的は様々ですが、人気記事のランキングの中に休業日のお知らせなどが混ざらない様にしたり、部署ごとに管理できる投稿を分けたいといったものがあります。

そんな時に便利なのが、WordPressに標準で搭載されている、「カスタム投稿タイプ」という機能です。

カスタム投稿タイプを使って投稿タイプを分けることで、お知らせだけの投稿とコラムだけの投稿に分けることができ、編集できる権限もユーザーごと、投稿タイプごとに分ける事ができるようになります。

他にもこちらの記事にあるような、投稿タイプ毎に検索をかけたり、検索結果の表示方法を変えたりと言ったことも出来るようになります。

スポンサーリンク

カスタム投稿タイプを1つだけ追加する方法

カスタム投稿タイプを追加する場合にはfunction.phpに次のコードを記述します。

// カスタム投稿タイプ
function create_my_post_types()
{  //init アクションフックに登録する関数
  //blog というカスタム投稿タイプを登録
  register_post_type(
    'blog', //投稿タイプ名(識別子:半角英数字の小文字)
    array(
      'label' => 'ブログ一覧',  //カスタム投稿タイプの名前(管理画面のメニューに表示される)
      'labels' => array(  //管理画面に表示されるラベルの文字を指定
        'add_new' => '新規ブログ追加',
        'edit_item' => 'ブログの編集',
        'view_item' => 'ブログを表示',
        'search_items' => 'ブログを検索',
        'not_found' => 'ブログは見つかりませんでした。',
        'not_found_in_trash' => 'ゴミ箱にブログはありませんでした。',
      ),
      'public' => true,  // 管理画面に表示しサイト上にも表示する
      'description' => 'カスタム投稿タイプ「ブログ」の説明文です。',  //説明文
      'hierarchicla' => false,  //コンテンツを階層構造にするかどうか
      'has_archive' => true,  //trueにすると投稿した記事の一覧ページを作成することができる
      'show_in_rest' => true,  //新エディタ Gutenberg を有効化(REST API を有効化)
      'supports' => array(  //記事編集画面に表示する項目を配列で指定することができる
        'title',  //タイトル
        'editor',  //本文の編集機能
        'thumbnail',  //アイキャッチ画像(add_theme_support('post-thumbnails')が必要)
        'excerpt',  //抜粋
        'custom-fields', //カスタムフィールド
        'revisions'  //リビジョンを保存
      ),
      'menu_position' => 5, //「投稿」の下に追加
      'taxonomies' => array('blog_cat', 'blog_tag', 'category', 'post_tag')  //使用するタクソノミー
    )
  );
}
add_action('init', 'create_my_post_types');

ここでは投稿タイプ名を「blog」としていますが、管理する項目に合わせた名前に変えて大丈夫です。

また、WordPressの管理画面に表示される文字も自由に変えられるようになっているので、利用目的に合わせたものに変えて使ってください。

function.phpに記述してアップしたら、管理画面を確認して見てください。

いつもの「投稿」の下に「ブログ一覧」という項目が増えていたら成功です!

カスタム投稿タイプを2つ以上使う場合

カスタム投稿タイプを2つ以上使う場合は少しだけ、注意が必要です。

実はひとつ前のコードを2つ書いてもエラーになってしまい、カスタム投稿タイプを増やすことはできません。

カスタム投稿タイプを複数使いたい場合、5行目の「register_post_type ( 」から「 );」までを複製して使う必要があります。

2つのカスタム投稿タイプを使う場合は下記の様なコードになります。

// カスタム投稿タイプ①
function create_my_post_types()
{  //init アクションフックに登録する関数
  //blog というカスタム投稿タイプを登録
  register_post_type(
    'blog', //投稿タイプ名(識別子:半角英数字の小文字)
    array(
      'label' => 'ブログ一覧',  //カスタム投稿タイプの名前(管理画面のメニューに表示される)
      'labels' => array(  //管理画面に表示されるラベルの文字を指定
        'add_new' => '新規ブログ追加',
        'edit_item' => 'ブログの編集',
        'view_item' => 'ブログを表示',
        'search_items' => 'ブログを検索',
        'not_found' => 'ブログは見つかりませんでした。',
        'not_found_in_trash' => 'ゴミ箱にブログはありませんでした。',
      ),
      'public' => true,  // 管理画面に表示しサイト上にも表示する
      'description' => 'カスタム投稿タイプ「ブログ」の説明文です。',  //説明文
      'hierarchicla' => false,  //コンテンツを階層構造にするかどうか
      'has_archive' => true,  //trueにすると投稿した記事の一覧ページを作成することができる
      'show_in_rest' => true,  //新エディタ Gutenberg を有効化(REST API を有効化)
      'supports' => array(  //記事編集画面に表示する項目を配列で指定することができる
        'title',  //タイトル
        'editor',  //本文の編集機能
        'thumbnail',  //アイキャッチ画像(add_theme_support('post-thumbnails')が必要)
        'excerpt',  //抜粋
        'custom-fields', //カスタムフィールド
        'revisions'  //リビジョンを保存
      ),
      'menu_position' => 5, //「投稿」の下に追加
      'taxonomies' => array('blog_cat', 'blog_tag', 'category', 'post_tag')  //使用するタクソノミー
    )
  );
  //カスタム投稿タイプ②
  register_post_type(
    'fqa', //投稿タイプ名(識別子:半角英数字の小文字)
    array(
      'label' => 'FAQ一覧',  //カスタム投稿タイプの名前(管理画面のメニューに表示される)
      'labels' => array(  //管理画面に表示されるラベルの文字を指定
        'add_new' => '新規FAQ追加',
        'edit_item' => 'FAQの編集',
        'view_item' => 'FAQを表示',
        'search_items' => 'FAQを検索',
        'not_found' => 'FAQは見つかりませんでした。',
        'not_found_in_trash' => 'ゴミ箱にFAQはありませんでした。',
      ),
      'public' => true,  // 管理画面に表示しサイト上にも表示する
      'description' => 'カスタム投稿タイプ「FAQ」の説明文です。',  //説明文
      'hierarchicla' => false,  //コンテンツを階層構造にするかどうか
      'has_archive' => true,  //trueにすると投稿した記事の一覧ページを作成することができる
      'show_in_rest' => true,  //新エディタ Gutenberg を有効化(REST API を有効化)
      'supports' => array(  //記事編集画面に表示する項目を配列で指定することができる
        'title',  //タイトル
        'editor',  //本文の編集機能
        'thumbnail',  //アイキャッチ画像(add_theme_support('post-thumbnails')が必要)
        'excerpt',  //抜粋
        'custom-fields', //カスタムフィールド
        'revisions'  //リビジョンを保存
      ),
      'menu_position' => 5, //「投稿」の下に追加
      'taxonomies' => array('faq_cat', 'faq_tag', 'category', 'post_tag')  //使用するタクソノミー
    )
  );
}
add_action('init', 'create_my_post_types');

ここではブログ記事の他にFAQページを作っています。

先程と同じ様にWEBのfunction.phpを更新したら、「投稿」の下に「ブログ一覧」、「FAQ一覧」という3つの投稿タイプが出来ていませんか?

このようにしてカスタム投稿タイプを増やしていき、目的に合わせて管理運用しやすいWEBサイトを作って行きます。

さらに、投稿タイプごとに検索結果のデザインを変えたり、検索することもできるので、こちらの記事を参考に検索フォームや検索結果のページを作って見てください。

こうなってくると、最初からある「投稿」という表示が抽象的な表現なので、「お知らせ」などの表示に変えたくなってきますよね。

投稿表示の変え方はこちらの記事にある方法を試してみてください!

コピペするだけで簡単に表示変更できますよ!

コメント

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