カスタム投稿タイプは、register_post_type
という関数で設定できます。
このregister_post_type
関数には、設定項目がいっぱいあるのですが、実際に必要になる項目はごく一部になると思います。
ここでは、register_post_type
関数の使い方を、必要になりそうな項目だけをピックアップしてまとめてみます。
カスタム投稿タイプを設定するregister_post_type関数
サイトに「ニュース」というカスタム投稿タイプを設定してみます。
カスタム投稿タイプを設定するには、functions.phpに以下のようなコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
add_action( 'init', 'my_post_type' ); function my_post_type() { register_post_type( 'news', array( 'label' => 'ニュース', 'public' => true, 'hierarchical' => true, 'has_archive' => true, 'menu_position' => 5, 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes') ) ); } |
このコードについて、上から順番に解説していきます。
register_post_type関数はinitアクションで呼び出す
1 2 3 |
add_action( 'init', 'my_post_type' ); function my_post_type() { register_post_type( |
register_post_type
関数は、functions.php上で直接呼び出さずに、必ずinit
アクションフックを使って呼び出しましょう。
第1引数はカスタム投稿タイプ名を英字で
3 4 5 |
register_post_type( 'news', array( |
第1引数には、カスタム投稿タイプの名前を英字で指定します。
使える文字は小文字のアルファベットと記号です。スペースは使えないので、単語の区切りにはハイフン(-
)やアンダースコア(_
)を使いましょう。
この名前は、コード上でカスタム投稿タイプを示す一意の名前になり、またURL上の名前にもなります。
カスタム投稿記事のURL(例):
http://my-site.com/news/(記事のスラッグ)
第2引数の設定項目: ‘label’
6 |
'label' => 'ニュース', |
第2引数は連想配列で指定します。
'label'
は、ダッシュボード上で表示されるカスタム投稿タイプの名前を設定します。
英語の場合は、ここでは単語の複数形を指定するのですが、日本語の場合は気にしないでOKです。
ダッシュボード上のラベル表示については、'labels'
というキーを使用して細かい設定ができますが、通常はこの'label'
だけで十分でしょう。
第2引数の設定項目: ‘public’
7 |
'public' => true, |
'public'
は、このカスタム投稿タイプをフロントエンド上で公開するかを設定する項目です。初期値はfalse
ですが、通常はtrue
にします。
'public'
をtrue
にすると、このカスタム投稿タイプの記事が、サイト内検索の結果に含まれるようになります。
検索結果に含まれないようにしたい場合は、'exclude_from_search'
をtrue
に設定します。
7 8 |
'public' => true, 'exclude_from_search' => true, |
第2引数の設定項目: ‘hierarchical’
8 |
'hierarchical' => true, |
'hierarchical'
をtrue
にすると、このカスタム投稿タイプの記事が、固定ページのように親記事を指定できるようになります。
初期値はfalse
ですので、特に必要がなければこの設定は省略してしまって構いません。
第2引数の設定項目: ‘has_archive’
9 |
'has_archive' => true, |
'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’
10 |
'menu_position' => 5, |
'menu_position'
は、ダッシュボードのメニューでの表示位置を指定します。
「投稿」の下は5
、「メディア」の下は10
、「固定ページ」の下は20
になります。
第2引数の設定項目: ‘supports’
11 |
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes') |
'supports'
は、このカスタム投稿タイプがダッシュボードの編集画面で使用する項目を指定します。
初期値は'title', 'editor'
です。
'title'
— タイトル'editor'
— 本文のエディタ'author'
— 作成者'thumbnail'
— アイキャッチ画像'excerpt'
— 抜粋'trackbacks'
— トラックバック送信'custom-fields'
— カスタムフィールド'comments'
— ディスカッション'revisions'
— リビジョン'page-attributes'
— 属性(親・順序)
使用しない項目や、表示したくない項目だけを削る形が良いかと思います。
カスタム投稿タイプのパーマリンク
以上で、カスタム投稿タイプに必要な大半の設定ができました。
ただ、カスタム投稿タイプのパーマリンクをカスタマイズしたい場合、より多くの設定が必要になります。
場合によっては、register_post_type
関数だけでは対応できない部分もありますので、こちらについては、別記事を参照してください。
記事: カスタム投稿タイプのパーマリンク
記事:カスタム投稿タイプのパーマリンクを設定するプラグイン — Custom Post Type Permalinks