よく聞く【デフォルト投稿タイプ】と【カスタム投稿タイプ】について教えて欲しいな!
こういった悩みにお答えします。
【SWELL】投稿タイプは何があるの?
「デフォルト投稿タイプ」とは
WordPressをインストールした際に最初から用意されている「投稿」のことです。
「カスタム投稿タイプ」とは
カスタム投稿とは新たに別の「投稿」を作る機能のことです。
コーポレートサイトで下記の要望があったとします。
・「お客様の声」を掲載したい。
・「お知らせ」を掲載したい。
・「制作実績」を掲載したい。
下記のようにカテゴリーで分けて管理することも可能ですが、カテゴリーが混ざりかなり管理がやりにくいです。
そのためこのような要望ごとにカスタム投稿タイプを作成することで管理しやすくなります!
カスタム投稿タイプの実装2パターンある
カスタム投稿タイプの実装方法についてどの様な方法があるのかみてみましょう。
WordPressの実装方法としては2パターンになります。
①テーマの「function.php」を編集する
②プラグインを使用する
①テーマの「function.php」を編集する 〜お知らせのカスタム投稿を設定する〜
以下のコードをfunctions.phpに追加します。(日本語対応のみのコードです。)
/**
* カスタム投稿タイプ【お知らせ】
*/
function cpt_register_news(){
$args = [
'label' => 'お知らせ',
'labels' => [
'singular_name' => 'お知らせ',
'all_items' => 'お知らせ一覧',
'add_new_item' => '新規お知らせを追加',
'edit_item' => 'お知らせを編集',
'view_item' => 'お知らせを表示',
'search_items' => 'お知らせを検索'
],
'public' => true, // カスタム投稿タイプを一般に公開するかどうか
'exclude_from_search' => false, // 検索から除外するかどうか
'show_in_admin_bar' => false, // アドミンバーから使えるようにするかどうか
'show_in_rest' => true, // カスタム投稿タイプでブロックエディタを使うかどうか
'menu_position' => 5, // 管理画面に表示するメニューの位置
'hierarchical' => false, // 階層化するかどうか(階層化すると固定ページのような扱いになる)
'supports' => [
'title', 'editor', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions'
], // カスタム投稿タイプがサポートする機能
'has_archive' => true, // アーカイブページを持つかどうか
'query_var' => true, // プレビュー画面を使うかどうか
'delete_with_user' => false // ユーザーを削除した後コンテンツも削除するかどうか
];
register_post_type('news', $args);
}
add_action('init', 'cpt_register_news');
タグタイプの設定が必要無い場合はregister_taxonomy(〜);を削除します。
labelsパラメーター
管理画面に表示される名前やボタンのテキストを指定するための設定項目のことです。たとえば、管理画面で「投稿」の代わりに「イベント」と表示させたい場合や、「新規追加」ボタンを「新しいイベントを追加」とカスタマイズするのに使います。
'labels' => array(
'name' => 'イベント', // 管理画面のメニュー名やタイトル
'singular_name' => 'イベント', // 単数形の名前
'add_new' => '新規イベント追加', // 「新規追加」ボタン
'edit_item' => 'イベントを編集', // 編集画面のタイトル
'all_items' => 'すべてのイベント', // 一覧ページのタイトル
),
ブロックエディタに対応
ブロックエディタに対応させるためには‘show_in_rest’ => trueにします。
管理画面
管理画面は以下の様になります。「投稿」の下に「お知らせ」が表示されています。
また、「お知らせを追加」や「お知らせを検索」ボタンも正しく表示されています。
カスタム投稿タイプの独自テンプレートを作成する方法
お知らせカスタム投稿を通常投稿と全く同じように表示する場合は、上記のfunctions.phpの設定だけで問題無いです。
しかし、お知らせのページやアーカイブページを独自のものにしたい場合は以下のカスタムテンプレートを追加します。
テンプレート名はカスタム投稿タイプ名(news)やカスタム分類名(news-cat、news-tag)を付加して作ります。
親テーマに通常投稿のテンプレートがある場合はコピーして書き換えます。
テンプレート | 説明 |
single-news | お知らせページを作成します。 |
content-news.php | 場合によってはページ内容を変更します。 ※テーマファイルではなくテンプレートパーツです。 |
archive-news.php | お知らせのアーカイブページを作成します。 |
taxonomy-news-cat | お知らせのカテゴリーアーカイブページを作成します。 |
taxonomy-news-tag | お知らせのタグアーカイブページを作成します。 |
② プラグインを使用する場合
・Custom Post Type UIを使用する
Custom Post Type UIプラグインを使うことで、functions.phpに記載することなくカスタム投稿やカスタムタクソノミーを追加することができます。
コメント