カスタム投稿をつくりたい。
自作でつくる方法が知りたいです。
こんなお悩みを解決します。
本記事の内容
- カスタム投稿とは
- カスタム投稿を自作する方法
- カスタム投稿をWordPressで表示する方法
上記の内容について解説します。
カスタム投稿はプラグイン「Custom Post Type UI」で簡単に作成できますが、制作会社によってはプラグインをしようしないでね。といわれることも考えられます。
そのときにドヤ顔で「できます!」といえるように準備しておきましょう。
コードのくわしい解説もしてるので、ぜひ最後までご覧ください。
カスタム投稿とは
カスタム投稿とは、任意で新しく作成できる投稿タイプのことをいいます。
WordPressであらかじめ用意されている「投稿」「固定ページ」とは別に、新しい投稿タイプがつくれます。
カスタム投稿はどんな時に使う?
「ブログ」や「お知らせ」など複数の投稿タイプを分けたいときに使います。
下記のようなイメージです。
- ブログ:投稿
- お知らせ:カスタム投稿
- 制作実績:カスタム投稿
デフォルトの投稿タイプは一つしかありません。
なので、カスタム投稿をつくることで内容ごとに投稿を分けることができます。
カスタム投稿を作成(自作)する方法
それでは実際にカスタム投稿を作成していきましょう。
functions.phpを編集する
まずはfunctions.phpに下記のコードを記述します。
function cpt_register_works(){
$args = [
'label' => '実績紹介',//カスタム投稿の名前
'labels' => [
'all_items' => '実績紹介一覧',//カスタム投稿一覧のラベル名
],
'public' => true, //カスタム投稿を公開する場合はtrue
'show_in_rest' => true,//ブロックエディタを利用する場合はtrue
'has_archive' => true,//アーカイブページを持つ場合はtrue
'delete_with_user' => false,//ユーザーを削除した際に、そのユーザーが投稿したコンテンツも削除するか
'exclude_from_search' => false,//検索から除外するか
'hierarchical' => false,//階層化をするか
'query_var' => true,//投稿のプレビュー画面を使う場合はtrue
'menu_position' => 5,//WordPress管理画面に表示するメニュー位置
'supports' => [
'title', 'editor', 'thumbnail', 'custom-fields'
],//カスタム投稿がサポートする機能
];
register_post_type('works', $args);
}
add_action('init', 'cpt_register_works');
コードの解説をしていきます。
カスタム投稿の解説1
add_action('init', 'cpt_register_works');
上記のコードで’cpt_register_works’という関数を実行します。関数名は任意でOKです。
カスタム投稿の解説2
function cpt_register_works(){
register_post_type('works', $args);
}
先ほど作成した’cpt_register_works’を実行し、その中にあるregister_post_type(‘works’, $args);を実行します。
register_post_typeは、カスタム投稿を作成するためのWordPress関数です。
register_post_typeの引数は、下記のとおりです。
- 第一引数:カスタム投稿のスラッグ(任意でOK)
- 第二引数:配列($args)
今回は実績紹介というカスタム投稿を作成するので、第一引数を「works」にしました。
第二引数「$args」の詳細は次に解説します。
カスタム投稿の解説3
第二引数($args)の中に、カスタム投稿の条件を指定します。
$args = [
'label' => '実績紹介',//カスタム投稿の名前
'labels' => [
'all_items' => '実績紹介一覧',//カスタム投稿一覧のラベル名
],
'public' => true, //カスタム投稿を公開する場合はtrue
'show_in_rest' => true,//ブロックエディタを利用する場合はtrue
'has_archive' => true,//アーカイブページを持つ場合はtrue
'delete_with_user' => false,//ユーザーを削除した際に、そのユーザーが投稿したコンテンツも削除するか
'exclude_from_search' => false,//検索から除外するか
'hierarchical' => false,//階層化をするか
'query_var' => true,//投稿のプレビュー画面を使う場合はtrue
'menu_position' => 5,//WordPress管理画面に表示するメニュー位置
'supports' => [
'title', 'editor', 'thumbnail', 'custom-fields'
],//カスタムと投稿がサポートする機能
];
$argsの中に、さまざまなカスタム投稿の条件をまとめているようなイメージです。
$argsの引数には、ほかにもさまざまなパラメーターがありますので、詳細はWordPressCodexを参考にしてみてください。
パラメーターの参考例1
'label' => '実績紹介',//カスタム投稿の名前
上記のパラメーターで、メニューのラベル名を指定しています。
パラメーターの参考例2
'labels' => [
'all_items' => '実績紹介一覧',//カスタム投稿一覧のラベル名
],
上記のパラメーターで、カスタム投稿一覧のラベル名を指定しています。
カスタムタクソノミーを設定する方法
つぎに、カスタムタクソノミーについて解説します。
カスタムタクソノミーとは
カスタムタクソノミーとは、「カテゴリ」や「タグ」などをつくり、記事を分類するための情報です。
コーディングを例にすると「HTML」「CSS」「JavaScript」「PHP」など、複数の分類に分けることができますよね。
これらの情報を分類できるのがタクソノミーです。
それではカスタムタクソノミーの作成方法を解説します。
functions.phpを編集する
function tax_register_works_category(){
$args = [
'label' => 'カテゴリ',//管理画面で表示されるタクソノミー名
'labels' => [
'singular_name' => 'カテゴリ',
'edit_item' => 'カテゴリを編集',
'add_new_item' => '新規カテゴリを追加'
],
'hierarchical' => true,//階層化するか(カテゴリ的に使うならtrue、タグ的に使うならfalse)
'query_var' => true,//クエリパラメーターを使う場合はtrue
'show_in_rest' => true,//ブロックエディタを利用する場合はtrue
];
register_taxonomy('works_category', 'works', $args);
}
add_action('init', 'tax_register_works_category');
コードの解説をしていきます。
タクソノミーの解説1
add_action('init', 'tax_register_works_category');
上記のコードで’tax_register_works_category’という関数を実行します。関数名は任意でOKです。
タクソノミーの解説2
function tax_register_works_category(){
register_taxonomy('works_category', 'works', $args);
}
先ほど作成した’tax_register_works_category’を実行し、その中にあるregister_taxonomy(‘works_category’, ‘works’, $args);を実行します。
register_taxonomyは、カスタムタクソノミーを作成するためのWordPress関数です。
register_taxonomyの引数は、下記のとおりです。
- 第一引数:カスタムタクソノミーのスラッグ(任意でOK)
- 第二引数:紐づけるカスタム投稿のスラッグ
- 第三引数:配列($args)
今回は実績紹介のタクソノミーを作成するので、第一引数を「works_category」にしました。
第二引数は、先ほど作成したカスタム投稿に紐づけたいので「works」にします。
第三引数「$args」の詳細は次に解説します。
タクソノミーの解説3
第三引数($args)の中に、タクソノミーの条件を指定します。
$args = [
'label' => 'カテゴリ',//管理画面で表示されるタクソノミー名
'labels' => [
'edit_item' => 'カテゴリを編集',
'add_new_item' => '新規カテゴリを追加'
],
'hierarchical' => true,//階層化するか(カテゴリ的に使うならtrue、タグ的に使うならfalse)
'query_var' => true,//クエリパラメーターを使う場合はtrue
'show_in_rest' => true,//ブロックエディタを利用する場合はtrue
];
$argsの中に、さまざまなタクソノミーの条件をまとめているようなイメージです。
$argsの引数には、ほかにもさまざまなパラメーターがありますので、詳細はWordPressCodexを参考にしてみてください。
WordPressでカスタム投稿を表示する方法
カスタム投稿の作成が完了したら、実際に表示させてみましょう。
必要なファイルは以下の2つです。
- カスタム投稿の一覧ページ:archive-〇〇.php
- カスタム投稿の詳細ページ:single-〇〇.php
順にみていきましょう。
カスタム投稿の一覧ページをarchive-〇〇.phpで表示
カスタム投稿一覧ページを表示するにはarchive-〇〇.phpファイルを作成しましょう。
〇〇の部分には、カスタム投稿のスラッグが入ります。本記事では、「works」というスラッグでカスタム投稿を作成したので「archive-works.php」というファイルを作成すると表示されます。
カスタム投稿の詳細ページをsingle-〇〇.phpで表示
カスタム投稿詳細ページを表示するにはsingle-〇〇.phpファイルを作成しましょう。
こちらも一覧ページと同様に、〇〇の部分にはカスタム投稿のスラッグが入ります。
カスタム投稿は自作とプラグインどちらで作成するべきか
プラグインは効率的に実装できるメリットがあります。
とはいえ、実案件ではプラグインを使わずに、カスタム投稿の作成することも考えられるので、覚えておいて損はないかと思います。
また、個人的にはWordPressのアップデートによるエラーを回避できるので、自身の事業サイトでは自作でカスタム投稿を作成してます。
まとめ:カスタム投稿を自作する方法
カスタム投稿を自作する方法について解説しました。
はじめは理解できないかもしれませんが、本記事やWordPressCodexを参考にしながら挑戦してみてください。
最後までご覧いただきありがとうございました!
コメント