こんにちは、Ryohei(@ityryohei)です!

WordPressでサイトを構築する上で欠かせない機能にカスタム投稿タイプがあります。

カスタム投稿タイプとはWordpressをインストールした際に最初から用意してある「投稿(post)」や「固定ページ(page)」のように独立した投稿する項目を指します。例えばお知らせだけを投稿するカスタム投稿タイプを作成すると、以下の画像のような項目が追加されます。

custom-post-type-001

上記例では、お知らせとなっておりますが「トピックス」や「趣味」のように好きな投稿タイプが作成可能です。投稿タイプは目的別に項目を作成することができるため、それぞれの役割を明確にすることができますし、管理も容易になります。

投稿タイプを作成する方法として、プラグインを導入して設定する方法と「functions.php」に記述する方法がありますが、カスタム投稿タイプはプラグインを利用しなくても簡単に作成することができます。プラグインを導入すればとても簡単にカスタム投稿タイプを作成することが可能ですが、プラグインは今後のアップデートに対応するかは開発者次第となりますので、長い目で見れば「functions.php」で作成する方が安全と思われます。なので、今回は「functions.php」に記述してカスタム投稿タイプを作成する方法をご紹介したいと思います!

register_post_typeでカスタム投稿タイプを作成する

WordPressにはカスタム投稿タイプを作成する関数があります。register_post_typeという関数になります。register_post_typeを利用すれば、いくつか値をしていしてあげるだけで管理画面にカスタム投稿タイプを作成してくれます。

以下、register_post_typeの記述例になります。下記の例では「お知らせ」というカスタム投稿タイプを作成しています。

//お知らせの投稿タイプを追加
add_action('init', 'create_post_type_news');
function create_post_type_news() {
  register_post_type('news',
    array(
      'label' => 'お知らせ',
      'menu_position' => 5,
      'public' => true,
      'supports' => array (
          'title',
          'editor',
          'author',
          'thumbnail',
          'comments',
          'custom-fields'
      ),
    'has_archive' => true,
    'rewrite' => array(
        'slug' => 'news',
        'with_front' => false)
    )
  );
}

上記コードを「functions.php」の任意の箇所に記述すると、お知らせのカスタム投稿タイプが作成されます。

label カスタム投稿タイプに付ける名前になります。管理画面やカスタム投稿タイプを識別する名前になります。値は文字列を指定します。
menu_position カスタム投稿タイプを管理画面のメニューに表示する位置を指定します。以下の値を指定することができます。
5 : 投稿の下に表示
10 : メディアの下に表示
15 : リンクの下に表示
20 : 固定ページの下に表示
25 : コメントの下に表示
60 : 中断の区切りスペースの下に表示
65 : プラグインの下に表示
70 : ユーザーの下に表示
75 : ツールの下に表示
80 : 設定の下に表示
100 :下段の区切りの下に表示
public カスタム投稿タイプを管理画面から操作できるようにします。trueとfalseを指定できます。falseにすると管理画面上に表示されないようになります。
supports カスタム投稿タイプに投稿する際に表示される「投稿画面」に表示する項目を指定します。以下の値を指定することができます。

'title' : 投稿のタイトル
'editor' : 投稿の内容
'author' : 投稿者
'thumbnail' : アイキャッチ画像
'excerpt' : 抜粋
'trackbacks' : トラックバック
'custom-fields' : カスタムフィールド
'comments' : コメント等の機能
'revisions' : リビジョン管理
'page-attributes' : メニューの階層化
'post-formats' : 投稿のフォーマットを追加する

has_archive 投稿タイプをアーカイブにします。trueとfalseが指定できます。
rewrite パーマリンクの構造で使用するスラッグ名を指定します。上記例の場合は「news」になります。

もっと詳しく知ってカスタマイズしまくりたい!という方は以下のリンクからWordpressのリファレンスをご覧いただければ幸いです!

register post type

register_taxonomyでカスタム投稿タイプにタクソノミー(カテゴリー)を作成する

タクソノミーとは最初からある機能の「投稿」でいうところのカテゴリーです。上記で作成したカスタム投稿タイプにタクソノミー(カテゴリー)を追加する機能を持たせることができます。

//お知らせの投稿タイプにタクソノミー(投稿のカテゴリーのようなもの)を追加
register_taxonomy(
  'news_taxonomy',
  'news',
  array(
    'label' => 'お知らせカテゴリー',
    'labels' => array(
      'all_items' => 'お知らせカテゴリー一覧',
      'add_new_item' => 'お知らせカテゴリー追加'
    ),
    'hierarchical' => true
  )
);

上記のコードを「functions.php」に記述すると、先程作成した投稿タイプに「お知らせカテゴリー」が追加され、お知らせの中で分類が可能となります。

custom-post-type-002

以上、カスタム投稿タイプの作成方法のご紹介でした!近日中にカスタム投稿タイプを実際のページに表示する方法をご紹介できればと思います!最後まで読んでいただきありがとうございました!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。