カスタム投稿タイプ

WordPressの投稿タイプの1つに『カスタム投稿』があります。ここでは、『カスタム投稿』を利用する方法を紹介します。

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

WordPressの投稿タイプには、『固定ページ』『投稿』『カスタム投稿』の3種類があります。
それぞれの投稿タイプの特徴を見てましょう。

投稿タイプ 特徴
固定ページ
(post_type:page)
サイトマップ、お問い合わせページなどで利用。
他のページを親と指定して、ページ間の階層化を行うことができる。
投稿
(post_type:post)
ブログ記事など日常的に追加されていくページで利用。
記事をカテゴリーやタグで分類することができる。

カテゴリー
子カテゴリーや孫カテゴリーのように階層構造を作ることができる。

タグ
記事中で使われている「キーワード」を設定するのに利用。階層構造を持たない。
カスタム投稿
(post_type:独自に定義)
独自に定義する投稿タイプ。
ページ間の階層化をできるようすれば『固定ページ』のように利用可能。
カスタムタクソノミーを設定すれば『投稿』のように利用可能。

『固定ページ』と『投稿』は何もせずとも利用できますが、『カスタム投稿』は自分で追加する必要があります。

カスタム投稿を利用することで目的に沿ったコンテンツの分類ができ、

  • 記事の管理が楽になる
  • single-[投稿タイプ].php として投稿タイプごとにテンプレートを分けることができる。
    • つまり、コンテンツごとに表示形式をカスタマイズできる

などのメリットがあります。

カスタム投稿を利用する方法

プラグインでカスタム投稿を追加する方法もありますが、ここでは functions.php に定義を記述して “shop” という投稿タイプを追加してみます。カスタム投稿を定義するには register_post_type という関数を使います。

まずは、『固定ページ』として利用する場合の定義です。

function create_post_type() {
    register_post_type(
        'shop',                                       // 投稿タイプ
        array(
          'labels' => array(
                        'name' => '店舗情報'          // 管理画面で表示する投稿タイプ名
                      ),
          'public' => true,
          'hierarchical' => true,                     // 階層指定を可能とするか
          'menu_position' => 20,                      // 管理画面上での表示位置
                                                      //   「投稿」の下は5  
                                                      //   「固定ページ」の下は20
          'supports' => array(                        // 管理画面で使用する項目
                          'title',                    //    タイトル
                          'editor',                   //    内容の編集
                          'thumbnail',                //    アイキャッチ画像
                          'custom-fields',            //    カスタムフィールド
                          'excerpt',                  //    抜粋
                          'author',                   //    作成者
                          'comments',                 //    コメント
                          'revisions',                //    リビジョンを保存する
                          'page-attributes'           //    属性(親・順序)
                        )
        )
    );
}

この定義により、管理画面に「店舗情報」というメニューが追加されます。

次に、カスタム投稿 “shop” に “area” というタクソノミーを追加する定義を示します。これで、カテゴリーを持った『投稿』のように利用することができます。カスタムタクソノミーを追加するには register_taxonomy という関数を利用します。

add_action('init', 'create_post_type');
function create_post_type() {
    register_post_type(
        'shop',
        array(
          'labels' => array(
                        'name' => '店舗情報'
                      ),
          'public' => true,
          'menu_position' => 5,           
          'supports' => array(            
                          'title',        
                          'editor',       
                          'thumbnail',    
                          'custom-fields',
                          'excerpt',      
                          'author',       
                          'comments',     
                          'revisions',    
                        )
        )
    );
 
    register_taxonomy(
        'area',                 // タクソノミーの名前
        'shop',                 // このタクソノミーを "shop" 投稿に設定する
 
        array(
          'labels' => array(
                        'name' => '地域' // 管理画面で表示する分類名
                      ),
          'hierarchical' => true,        // true  カテゴリーのように分類に階層を持たせられる
                                         // false タグのように分類に階層を持たない
             
          'show_admin_column' => true    // 管理画面で記事を一覧表示した際に分類名を表示
        )
    );
}

この定義により、管理画面の「店舗情報」というメニューの中に「地域」が追加されます。

※パーマリンクを正しく動作させるためには、カスタム投稿タイプを追加後にパーマリンク設定を更新する必要があります。

メニューで表示

[外観]-[メニュー]にて追加したカスタム投稿やタクソノミーをメニューとして追加したい場合があります。そのときは、上部にある「表示オプション」をクリックすると、追加したカスタム投稿名のチェックボックスが表示されるのでチェックをいれてください。

652-wordpress-post_type_custompost-400x156.png