カスタム投稿タイプは、register_post_typeという関数で設定できます。

このregister_post_type関数には、設定項目がいっぱいあるのですが、実際に必要になる項目はごく一部になると思います。
ここでは、register_post_type関数の使い方を、必要になりそうな項目だけをピックアップしてまとめてみます。

カスタム投稿タイプを設定するregister_post_type関数

サイトに「ニュース」というカスタム投稿タイプを設定してみます。

カスタム投稿タイプを設定するには、functions.phpに以下のようなコードを追加します。

このコードについて、上から順番に解説していきます。

register_post_type関数はinitアクションで呼び出す

register_post_type関数は、functions.php上で直接呼び出さずに、必ずinitアクションフックを使って呼び出しましょう。

第1引数はカスタム投稿タイプ名を英字で

第1引数には、カスタム投稿タイプの名前を英字で指定します。
使える文字は小文字のアルファベットと記号です。スペースは使えないので、単語の区切りにはハイフン(-)やアンダースコア(_)を使いましょう。

この名前は、コード上でカスタム投稿タイプを示す一意の名前になり、またURL上の名前にもなります。

カスタム投稿記事のURL(例):
http://my-site.com/news/(記事のスラッグ)

第2引数の設定項目: ‘label’

第2引数は連想配列で指定します。

'label'は、ダッシュボード上で表示されるカスタム投稿タイプの名前を設定します。
英語の場合は、ここでは単語の複数形を指定するのですが、日本語の場合は気にしないでOKです。

スクリーンショット 2014-03-09 8.27.56

ダッシュボード上のラベル表示については、'labels'というキーを使用して細かい設定ができますが、通常はこの'label'だけで十分でしょう。

第2引数の設定項目: ‘public’

'public'は、このカスタム投稿タイプをフロントエンド上で公開するかを設定する項目です。初期値はfalseですが、通常はtrueにします。

'public'trueにすると、このカスタム投稿タイプの記事が、サイト内検索の結果に含まれるようになります。
検索結果に含まれないようにしたい場合は、'exclude_from_search'trueに設定します。

第2引数の設定項目: ‘hierarchical’

 'hierarchical'trueにすると、このカスタム投稿タイプの記事が、固定ページのように親記事を指定できるようになります。

スクリーンショット 2014-03-09 9.23.14

初期値はfalseですので、特に必要がなければこの設定は省略してしまって構いません。

第2引数の設定項目: ‘has_archive’

'has_archive'は、以下の両方に該当する場合、trueに設定する必要があります。

  • パーマリンク設定がデフォルト以外の場合
  • このカスタム投稿タイプのアーカイブページを表示したい場合

アーカイブページのURL:
http://my-site.com/news

'has_archive'trueにした場合、テーマファイル反映後にリライトルールの更新を行う必要があります。
パーマリンク設定を、一度デフォルトに戻してから再び設定し直すか、プラグインを使用してリライトルールの更新を行ってください。

リライトルールの更新については、以下の記事を参照してください。
記事: パーマリンクの設定がうまく反映されない時の対処法

パーマリンク設定がデフォルトの場合は、'has_archive'trueでなくてもアーカイブページを表示できます。

アーカイブページのURL(パーマリンク設定がデフォルトの場合):
http://my-site.com/?post_type=news

第2引数の設定項目: ‘menu_position’

'menu_position'は、ダッシュボードのメニューでの表示位置を指定します。
「投稿」の下は5、「メディア」の下は10、「固定ページ」の下は20になります。

第2引数の設定項目: ‘supports’

'supports'は、このカスタム投稿タイプがダッシュボードの編集画面で使用する項目を指定します。
初期値は'title', 'editor'です。

  • 'title' — タイトル
  • 'editor' — 本文のエディタ
  • 'author' — 作成者
  • 'thumbnail' — アイキャッチ画像
  • 'excerpt' — 抜粋
  • 'trackbacks' — トラックバック送信
  • 'custom-fields' — カスタムフィールド
  • 'comments' — ディスカッション
  • 'revisions' — リビジョン
  • 'page-attributes' — 属性(親・順序)

使用しない項目や、表示したくない項目だけを削る形が良いかと思います。

カスタム投稿タイプのパーマリンク

以上で、カスタム投稿タイプに必要な大半の設定ができました。

ただ、カスタム投稿タイプのパーマリンクをカスタマイズしたい場合、より多くの設定が必要になります。
場合によっては、register_post_type関数だけでは対応できない部分もありますので、こちらについては、別記事を参照してください。

記事: カスタム投稿タイプのパーマリンク
記事:カスタム投稿タイプのパーマリンクを設定するプラグイン — Custom Post Type Permalinks