ここでは、カスタム投稿タイプをプラグインを使わずにfunction.phpにコードを追加して作成する方法についてお話させていただきます。
※補足
function.phpに直接コードを記入して追加したカスタム投稿タイプは、テーマを変更すると表示されなくなってしまいます。当サイトでは、基本的に、別ファイルで作成したphpファイルをfunction.phpにインクルード(追加)させる方法をおすすめしております。
カスタム投稿タイプの作成方法
とりあえず、一般的な設定だけに絞り、できるだけシンプルなコードで作成しました。
下記をひな形にしてそのままfunctionファイルにコピペするだけでカスタム投稿タイプの追加ができます。
PHP
/* カスタム投稿タイプの追加 */ add_action('init', 'create_post_type'); function create_post_type() { $args = array( 'label' => 'サンプル投稿', // カスタム投稿タイプ名 'public' => true, // カスタム投稿タイプの公開設定 'has_archive' => true, // アーカイブの有無 'hierarchical' => false, // 階層の有無 'menu_position' => 5, // メニューの位置 'supports' => array( 'title', // 編集ページのタイトル 'editor', // 編集ページの本文エディタ 'thumbnail', // 編集ページのアイキャッチ画像 'custom-fields', // 編集ページのカスタムフィルド ) ); register_post_type( 'example', // カスタム投稿タイプのスラッグ $args); }
以下、簡単な説明をさせていただきます。
'label' => 'サンプル投稿',
:カスタム投稿タイプ名- 「サンプル投稿」の文言を日本語で好きな名前に変更します。日本語でなくても良いですが管理画面の左のメニューに表示されるラベル名なので日本語にした方が分かりやすいと思います。
'public' => true,
:カスタム投稿タイプを公開するかどうか- この設定はそのままで大丈夫です。
'has_archive' => true,
:アーカイブの有無- カスタム投稿タイプを「固定ページ」のように使いたい場合は「false」に変更します。ブログのように記事一覧(アーカイブ)ページがほしい場合は「true」のままにします。
'hierarchical' => false,
:階層の有無- 固定ページを作成するときって「固定ページの属性」のところで「親」ページを選択できるようになっていますよね。これが階層です(ページに親子関係を作れる)。このように固定ページとしてカスタム投稿タイプを使いたい場合は「true」に変更します。ブログの記事のように使う場合はそのままで大丈夫です。
'menu_position' => 5,
:メニューの位置- ここでは「5」と入れてありますが、数字を変えて好きな位置に移動しましょう。数字が小さい方が上に行きます。
- 「投稿の編集」ページに表示させるメニュー
title
editor
thumbnail
といった項目は、記事を編集するページに表示させるメニューの設定です。ここでどのメニューを表示させたいかを設定します。一般的な項目を入れておきましたが他にも入れたいものがある場合は下記をご参照ください。title
タイトル editor
本文のエディタ author
作成者 thumbnail
アイキャッチ画像 excerpt
抜粋 trackbacks
トラックバック送信 custom-fields
カスタムフィールド comments
ディスカッション revisions
リビジョン page-attributes
属性(親・順序) - example:カスタム投稿タイプのスラッグ
- 「example」の部分を任意のスラッグに変更しましょう。アーカイブを有効にしたときのURL「http://ドメイン/スラッグ」のスラッグ部分になります。
カスタム投稿タイプは作っただけでは記事は表示されません
初めてカスタム投稿タイプを作成した方がよく陥りがちなのが、作った記事が表示されないというトラブルです。カスタム投稿タイプは作成した後に、必ず「設定」>「パーマリンク設定」へと移動して、何も変えずにそのまま「変更を保存」をします。これをしないと投稿した記事が表示されませんので気をつけてください。
カスタム投稿タイプが作成できたら今度はタクソノミー(カテゴリーのような分類)も作成してみましょう。