カフェメニュー用のカスタム投稿を作る – WordPress実践制作【WPCafe編】
- 2025/10/29
- PRACTICE
- カフェサイトを作ろう
- 0comments
- 100views
- 約26分で読めます
- 11
前回、headタグの整理とセキュリティ対策でWordPressの不要な機能を無効化し、セキュリティを強化しました。
今回は、カフェサイトの核となる「提供メニュー」を管理するためのカスタム投稿タイプを作成します。コーヒー、フード、デザートなどのメニューを効率的に管理し、柔軟に表示できるようにしましょう。
今回の記事では、カスタム投稿タイプとタクソノミーを作成し、実際にメニューデータを登録するところまでを行います。次回の記事で、登録したメニューを実際にページとして表示する方法を解説します。
目次
なぜカスタム投稿が必要なのか
固定ページでメニューを管理するデメリット
WordPressで情報を管理する方法として、固定ページを使うこともできます。しかし、固定ページには以下のような制限があります。
- 固定ページでメニューを管理すると、カテゴリー分類やタグ付けなどができません。
- メニューを「ドリンク」「デザート」「前菜」などで分類したり、「ホット」「アイス」「おすすめ」などのタグで絞り込むことができないため、メニュー数が増えると管理が煩雑になります。
標準の投稿ではダメなのか
WordPressには標準で「投稿」という機能がありますが、今回のカフェサイトでは標準の投稿はブログに使用します。
メニュー情報とブログ記事は、データの性質が異なります。メニューには価格やサイズなどの構造化されたデータが必要ですが、ブログ記事にはそれらは不要です。別々に管理することで、それぞれに適した管理画面を用意できます。
カスタム投稿でカフェメニューを管理するメリット
カスタム投稿を使うことで、以下のようなメリットがあります。
- カテゴリー分類やタグ付けができる:メニューを体系的に管理できる
- オススメや新作などカスタムタクソノミーで効率よくPRできる:独自の分類軸を持てる
- 編集者が簡単に更新できる管理画面を作れる:カスタムフィールドと組み合わせることで、専門知識がなくても更新可能な仕組みを構築できる
すべてのコンテンツをダッシュボードで管理する
このカフェサイト制作では、重要な設計思想があります。それは、すべてのコンテンツをダッシュボード(管理画面)で管理するということです。
よくある方法:本文エディタに価格を書く
ブロックエディタ(Gutenberg)の本文に、以下のように価格を書くことができます。
当店自慢のオリジナルブレンドは、厳選した豆を...
【価格】
S: 300円
M: 400円
L: 500円この方法でも管理画面から編集できますが、以下のような問題があります。
- 表記ゆれが発生する:「S:300円」「S:300円」「S 300円」など、編集者によって書き方がバラバラになる
- 表示形式の一括変更ができない:「300円」を「¥300」や「300円(税込)」に変更したい場合、全メニューを手作業で修正する必要がある
- 価格での並び替えや検索ができない:テキストとして書かれているため、「500円以下のメニュー」のような検索ができない
- 入力ミスに気づきにくい:「S: 30円」のような桁の入力ミスがあっても、システムがチェックできない
カスタムフィールドでデータとして管理
SCFを使って、サイズと価格を個別のフィールドとして管理します。
- サイズ:S / 価格:300
- サイズ:M / 価格:400
- サイズ:L / 価格:500
このようにデータとして管理することで、以下のメリットがあります。
- 表記が統一される:入力フォームが決まっているので、表記ゆれが起きない
- 表示形式を後から一括変更できる:テンプレート側を修正するだけで、全メニューの表示形式を変更できる
- データの並び替えや検索が可能:価格順に並べたり、特定の価格帯を検索したりできる
- 編集者が迷わず入力できる:「サイズ」「価格」と明確に分かれているので、何を入力すればいいか一目瞭然
これが、カスタム投稿とカスタムフィールドを組み合わせる大きな理由です。
他のサイト制作でも応用できる
今回学ぶカスタム投稿タイプの実装方法は、カフェサイトだけでなく、以下のような様々なサイト制作で応用できます。
- 飲食店サイト:メニュー、コース料理、店舗情報
- 不動産サイト:物件情報、エリア情報
- 採用サイト:求人情報、社員インタビュー
- ECサイト:商品情報、ブランド情報
カスタム投稿タイプは、WordPressでオリジナルサイトを作る上で必須のスキルです。この記事でしっかりと理解しましょう。
カフェメニューの構想
実装に入る前に、カフェメニューをどのように管理するか設計します。
管理する情報の整理
カフェメニューで管理したい情報を整理します。
基本情報
- タイトル:メニュー名(例:ブレンド・コーヒー)
- スラッグ:URL用(例:
blend-coffee) - 本文:メニューの詳細説明
- 抜粋:短い説明文(一覧表示用)
- アイキャッチ画像:メニューの写真
分類情報
メニューを以下の3つの軸で分類します。
1. メニューカテゴリー(menu_category)
カスタムタクソノミー(カテゴリー型)で「ドリンク」「デザート」など分類する。基本的に1メニュー1カテゴリー。
- タクソノミー名:「メニューカテゴリー(
menu_category)」 - URLスラッグ:
menu/category - 階層構造:あり(カテゴリー型)
2. メニュータグ(menu_tag)
カスタムタクソノミー(タグ型)で「ホット」「アイス」「アルコール」などタグ付けする。1メニュー複数タグ可。
- タクソノミー名:「メニュータグ(
menu_tag)」 - URLスラッグ:
menu/tag - 階層構造:なし(タグ型)
3. おすすめメニュー(menu_recommend)
カスタムタクソノミー(カテゴリー型)で「おすすめ」を管理する。「おすすめ」には「新作」「今月のおすすめ」「店長のおすすめ」など複数パターン用意する。1メニュー複数カテゴリー可。
- タクソノミー名:「おすすめメニュー(
menu_recommend)」 - URLスラッグ:
menu/recommend - 階層構造:あり(カテゴリー型)
価格情報
- サイズ別の価格(カスタムフィールド)
- 例:S 300円、M 400円、L 500円
Smart Custom Fields(SCF)を使って、1つのメニューに対して複数の価格を設定できるようにし、主にサイズ別の価格として使う
固定ページの構成
固定ページとしてmenuを用意。menuの下階層にmenu_category、menu_tag、menu_recommendの固定ページがある。
固定ページとしてmenu
- メニューカテゴリーの一覧、メニュータグの一覧、おすすめメニューの一覧を表示
menu_category
- メニューカテゴリーの一覧のみ表示
menu_tag
- メニュータグの一覧のみ表示
menu_recommend
- おすすめメニューの一覧のみ表示
URL構造
具体的なURL構造は以下のようになります。
| URL | 説明 |
|---|---|
| https://wpcafe.local/ | トップページ |
| https://wpcafe.local/menu/ | カテゴリー一覧、タグ一覧、おすすめ一覧 |
| https://wpcafe.local/menu/メニュースラッグ/ | 個別メニュー |
| https://wpcafe.local/menu/category/ | カテゴリーの一覧 |
| https://wpcafe.local/menu/category/カテゴリースラッグ/ | 特定カテゴリーに属するメニューの一覧 |
| https://wpcafe.local/menu/tag/ | タグの一覧 |
| https://wpcafe.local/menu/tag/タグスラッグ/ | 特定タグに属するメニューの一覧 |
| https://wpcafe.local/menu/recommend/ | おすすめの一覧 |
| https://wpcafe.local/menu/recommend/おすすめスラッグ/ | 特定のおすすめに属するメニューの一覧 |
具体例
例えば、以下のようなURLでアクセスできます。
- https://wpcafe.local/menu/blend-coffee/ ブレンド・コーヒーの詳細ページ
- https://wpcafe.local/menu/category/drink/ 飲料カテゴリーのメニュー一覧
- https://wpcafe.local/menu/tag/hot/ ホットのメニュー一覧
- https://wpcafe.local/menu/recommend/recommend-new/ 新商品のメニュー一覧
カスタム投稿を作る
ファイルの作成
前回作成したfunctions-theme-reset.phpやfunctions-theme-security.phpと同様に、カスタム投稿タイプ用のファイルを作成します。
テーマディレクトリにfunctions-theme-custom.phpを作成してください。
functions.phpで読み込み
functions.phpに以下を追加して、作成したファイルを読み込みます。
<?php
// headタグの整理
require_once 'functions-theme-reset.php';
// セキュリティ対策
require_once 'functions-theme-security.php';
// 初期化
require_once 'functions-theme-init.php';
// JS/CSS読み込み
require_once 'functions-theme-load.php';
// カスタム投稿タイプ
require_once 'functions-theme-custom.php';
// コンテンツ関連
require_once 'functions-theme-contents.php';PHPカスタム投稿タイプは、コンテンツ関連の前に読み込むようにします。
functions-theme-custom.phpの内容
後に他のカスタム投稿も作るのでfunction化します。
functions-theme-custom.phpに以下のコードを記述します。
<?php
/******************************
カスタム投稿
******************************/
add_action('init',function() {
// カスタム投稿「メニュー」
set_register_post_type('menu_post', 'メニュー', 'menu','dashicons-food', true);
});
/******************************
タクソノミー
******************************/
add_action('init',function() {
// メニューのタクソノミー(カテゴリー)
set_register_taxonomy('tax_menu_category', 'menu_post', 'カテゴリー','menu/category', true);
// メニューのタクソノミー(タグ)
set_register_taxonomy('tax_menu_tag', 'menu_post', 'タグ','menu/tag', false);
// メニューのタクソノミー(おすすめ)
set_register_taxonomy('tax_menu_recommend', 'menu_post', 'おすすめ','menu/recommend', true);
});
/******************************
register_post_type の共通化
******************************/
function set_register_post_type($post_type, $post_label, $post_slug, $post_icon,$post_public ){
register_post_type(
$post_type,
array(
'labels' => array(
'name' => __($post_label),
'all_items'=> __($post_label.'一覧'),
'add_new' => __($post_label.'を追加する'),
'add_new_item' => __($post_label.'の追加'),
'edit_item' => __($post_label.'の編集'),
'singular_name' => __($post_label.'タイプ'),
'new_item' => __('新しい'.$post_label),
'view_item' => __($post_label.'を見る'),
'search_items' => __($post_label.'を探す'),
'not_found' => __($post_label.'はありません'),
'not_found_in_trash' => __('ゴミ箱に'.$post_label.'はありません'),
'parent_item_colon' => ''
),
'public' => $post_public,
'publicly_queryable' => true,
'hierarchical' => false,
'has_archive' => false,
'menu_position' => 4,
'menu_icon' => $post_icon,
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields',
'thumbnail',
'page-attributes'
),
'rewrite' => array('slug' => $post_slug, 'with_front' => false),
'show_in_rest' => true,
'description' => $post_label.'の一覧ページです。',
'show_ui' => true,
'query_var' => true,
'capability_type' => 'post',
)
);
}
/******************************
set_register_taxonomy の共通化
******************************/
function set_register_taxonomy($tax_slug, $post_type, $tax_label,$url_slug, $is_hierarchical) {
register_taxonomy(
$tax_slug,
$post_type,
array(
'labels' => array(
'name' => $tax_label,
'add_new_item' => $tax_label.'を追加',
'edit_item' => $tax_label.'の編集',
),
'public' => true,
'hierarchical' => $is_hierarchical,
'show_admin_column' => true,
'show_in_rest' => true,
'rewrite' => array(
'slug' => $url_slug,
'with_front' => false,
),
)
);
}PHPコードの解説
カスタム投稿の登録部分
add_action('init', function() {
set_register_post_type('menu_post', 'メニュー', 'menu', 'dashicons-food', true);
});PHPinitフックのタイミングで、カスタム投稿タイプを登録します。set_register_post_typeは後述する共通化された関数です。()
引数の説明
'menu_post':投稿タイプのスラッグ(内部で使用される識別子)'メニュー':管理画面で表示されるラベル'menu':URLに使用されるスラッグ'dashicons-food':管理画面のアイコン(Dashiconsから選択)true:公開するかどうか(trueで一般公開、falseで管理画面のみ)
タクソノミーの登録部分
add_action('init', function() {
// メニューのタクソノミー(カテゴリー)
set_register_taxonomy('tax_menu_category', 'menu_post', 'カテゴリー', 'menu/category', true);
// メニューのタクソノミー(タグ)
set_register_taxonomy('tax_menu_tag', 'menu_post', 'タグ', 'menu/tag', false);
// メニューのタクソノミー(おすすめ)
set_register_taxonomy('tax_menu_recommend', 'menu_post', 'おすすめ', 'menu/recommend', true);
});PHP3つのタクソノミーを登録します。set_register_taxonomy()は共通化された関数です。
引数の説明
- 第1引数:タクソノミーのスラッグ
- 第2引数:紐づける投稿タイプ(
'menu_post') - 第3引数:管理画面で表示されるラベル
- 第4引数:URLに使用されるスラッグ
- 第5引数:階層構造の有無(
trueでカテゴリー型、falseでタグ型)
register_post_type()の共通化
function set_register_post_type($post_type, $post_label, $post_slug, $post_icon, $post_public) {
register_post_type(
$post_type,
array(
'labels' => array(
'name' => __($post_label),
'all_items' => __($post_label.'一覧'),
// ... 省略 ...
),
'public' => $post_public,
'menu_position' => 4,
'menu_icon' => $post_icon,
// ... 省略 ...
)
);
}PHPWordPressのregister_post_type()関数をラップして、共通化しています。
register_post_type()とは
register_post_type()は、WordPressにカスタム投稿タイプを登録するための関数です。WordPressには標準で「投稿」と「固定ページ」という2つの投稿タイプがありますが、この関数を使うことで独自の投稿タイプを追加できます。
第1引数:投稿タイプのスラッグ
register_post_type('menu_post', array(...));PHP投稿タイプを識別するためのスラッグを指定します。この例ではmenu_postとしています。このスラッグは以下の場所で使用されます。
- データベース内での識別子
- テンプレートファイルの命名(single-menu_post.phpなど)
- WordPressの内部処理
第2引数:設定配列
投稿タイプの詳細な設定を配列で指定します。
labels(ラベル設定)
'labels' => array(
'name' => __('メニュー'),
'all_items' => __('メニュー一覧'),
'add_new' => __('メニューを追加する'),
'add_new_item' => __('メニューの追加'),
'edit_item' => __('メニューの編集'),
'singular_name' => __('メニュータイプ'),
'new_item' => __('新しいメニュー'),
'view_item' => __('メニューを見る'),
'search_items' => __('メニューを探す'),
'not_found' => __('メニューはありません'),
'not_found_in_trash' => __('ゴミ箱にメニューはありません'),
'parent_item_colon' => ''
),PHP管理画面で表示される各種ラベルを設定します。ここで設定した文字列が、管理画面のメニューやボタンに表示されます。
public(公開設定)
'public' => true,PHPこの投稿タイプを一般公開するかどうかを指定します。
true:フロントエンドで表示可能(通常はこちら)false:管理画面のみで使用(フロントエンドでは表示しない)
hierarchical(階層構造)
'hierarchical' => false,PHP投稿に親子関係を持たせるかどうかを指定します。
true:固定ページのように階層構造を持つfalse:投稿のようにフラットな構造(今回はこちら)
メニューは階層構造を持たないため、falseにしています。
has_archive(アーカイブページ)
'has_archive' => false,PHP投稿タイプのアーカイブページを持つかどうかを指定します。
true:/menu_post/のようなアーカイブページを生成false:アーカイブページを生成しない(今回はこちら)
今回は固定ページでメニュー一覧を表示するため、falseにしています。
menu_position(メニューの位置)
'menu_position' => 4,PHP管理画面の左メニューに表示される位置を数値で指定します。
- 5:投稿の下
- 10:メディアの下
- 15:リンクの下
- 20:固定ページの下
今回は4を指定し、投稿の上に表示されるようにしています。
menu_icon(メニューアイコン)
'menu_icon' => 'dashicons-food',PHP管理画面のメニューに表示されるアイコンを指定します。Dashiconsから選択できます。
supports(サポート機能)
'supports' => array(
'title', // タイトル
'editor', // 本文エディタ
'excerpt', // 抜粋
'custom-fields', // カスタムフィールド
'thumbnail', // アイキャッチ画像
'page-attributes' // ページ属性(順序など)
),PHPこの投稿タイプで使用する機能を配列で指定します。必要な機能だけを指定することで、編集画面をシンプルに保てます。
rewrite(URL書き換え)
'rewrite' => array('slug' => 'menu', 'with_front' => false),PHPURLの構造を指定します。
slug:URLに使用するスラッグ(/menu/blend-coffee/のように表示される)with_front:パーマリンク設定のプレフィックスを使うかどうか
show_in_rest(REST API)
'show_in_rest' => true,PHPREST APIで使用可能にするかどうかを指定します。ブロックエディタ(Gutenberg)を使用する場合はtrueにする必要があります。
共通化のメリット
この関数を作成することで、以下のメリットがあります。
- コードの重複を削減:同じようなコードを何度も書かなくて済む
- 保守性の向上:修正が必要な場合、1箇所を変更すれば全体に反映される
- 可読性の向上:パラメータが明確で分かりやすい
今後、他のカスタム投稿タイプ(例:お知らせ、スタッフ紹介など)を作る際も、この関数を使えば簡単に追加できます。
register_taxonomy()の共通化
function set_register_taxonomy($tax_slug, $post_type, $tax_label, $url_slug, $is_hierarchical) {
register_taxonomy(
$tax_slug,
$post_type,
array(
'labels' => array(
'name' => $tax_label,
'add_new_item' => $tax_label.'を追加',
'edit_item' => $tax_label.'の編集',
),
'public' => true,
'hierarchical' => $is_hierarchical,
'show_admin_column' => true,
'show_in_rest' => true,
// ... 省略 ...
)
);
}PHPWordPressのregister_taxonomy関数も共通化しています。()
register_taxonomy()とは
register_taxonomy()は、WordPressにカスタムタクソノミーを登録するための関数です。タクソノミーとは、投稿を分類するための仕組みです。WordPressには標準で「カテゴリー」と「タグ」という2つのタクソノミーがありますが、この関数を使うことで独自のタクソノミーを追加できます。
第1引数:タクソノミーのスラッグ
register_taxonomy('tax_menu_category', 'menu_post', array(...));PHPタクソノミーを識別するためのスラッグを指定します。この例ではtax_menu_categoryとしています。
第2引数:紐づける投稿タイプ
register_taxonomy('tax_menu_category', 'menu_post', array(...));PHPこのタクソノミーをどの投稿タイプに紐づけるかを指定します。配列で複数の投稿タイプを指定することもできます。
第3引数:設定配列
タクソノミーの詳細な設定を配列で指定します。
hierarchical(階層構造)
'hierarchical' => true, // または falsePHPタクソノミーの種類を指定します。
true:カテゴリー型(親子関係を持つ階層構造)false:タグ型(フラットな構造)
今回の例では、以下のように使い分けています。
- メニューカテゴリー:
true(階層構造が必要な場合に備えて) - メニュータグ:
false(タグ型) - おすすめメニュー:
true(複数選択可能なカテゴリー型)
show_admin_column(管理画面のカラム表示)
'show_admin_column' => true,PHP管理画面の投稿一覧ページに、このタクソノミーのカラムを表示するかどうかを指定します。trueにすることで、一覧画面でどのカテゴリーやタグに属しているか一目で分かります。
show_in_rest(REST API)
'show_in_rest' => true,PHPREST APIで使用可能にするかどうかを指定します。ブロックエディタで使用する場合はtrueにする必要があります。
rewrite(URL書き換え)
'rewrite' => array(
'slug' => 'menu/category',
'with_front' => false,
),PHPタクソノミーアーカイブのURLを指定します。
slug:URLに使用するスラッグ(/menu/category/drink/のように表示される)with_front:パーマリンク設定のプレフィックスを使うかどうか
パーマリンクの更新
カスタム投稿タイプとタクソノミーを追加した後は、必ずパーマリンクの更新が必要です。
- WordPress管理画面にログイン
- 設定 > パーマリンク を開く
- 何も変更せず、変更を保存 ボタンをクリック
これにより、WordPressがURL書き換えルールを再生成します。この操作を忘れると、カスタム投稿タイプのページが404エラーになるので注意してください。
管理画面の確認
管理画面を確認してみましょう。左メニューに「メニュー」という項目が追加されているはずです。
カスタムフィールドの追加
メニューにサイズ別の価格を登録できるように、カスタムフィールドを追加します。
SCFでメニュー価格フィールドを作成
SCFを使って、サイズ別の価格を登録できるフィールドを作成します。
- 管理画面で Smart Custom Fields → 新規追加 をクリック
- 以下のように設定します
これで、メニューの編集画面に「メニューの価格」フィールドが表示されるようになります。
ACFでメニューカテゴリーにアイキャッチを追加
メニューカテゴリー一覧を表示する際に、各カテゴリーに画像を表示したいと考えています。しかし、WordPressの標準機能では、タクソノミーに画像を設定することができません。
そこで、ACFを使ってメニューカテゴリーにアイキャッチ画像を追加します。
なぜACFを使うのか
SCFはタクソノミーへのフィールド追加に対応していないため、ACFを使用します。
カテゴリーアイキャッチフィールドの作成
- 管理画面で ACF → フィールドグループ をクリック
- +新規追加をクリック
- 以下のように設定します
メニューカテゴリーを登録する
管理画面で メニュー → カテゴリー を開き、以下のカテゴリーを登録します。
アイキャッチ画像の設定
各カテゴリーに適した画像を設定します。無料素材サイトからダウンロードするか、自分で撮影した画像を使用しましょう。
アイキャッチに任意の画像を設定します。
私は素材サイト(https://www.photo-ac.com/)からカテゴリーに合った画像を設定しました。
おすすめの無料素材サイト:
画像を選んだら、各カテゴリーの編集画面で「アイキャッチ」フィールドにアップロードします。
おすすめメニューを登録する
管理画面で メニュー → おすすめ を開き、以下を登録します。
これらは好みに応じて追加・変更できます。
メニューを登録する(お好きなように)
それでは、実際にメニューを登録してみましょう。
メニューの登録方法
管理画面で メニュー → 新規追加 をクリックします。
サンプル:ブレンド・コーヒー
以下の内容で登録してみましょう。
基本情報
- タイトル:ブレンド・コーヒー
- スラッグ:
blend-coffee - 本文:当店自慢のオリジナルブレンドは、厳選した豆を絶妙にブレンドし、深みのあるコクと豊かな香りを実現しました。バランスの良い味わいで、毎日の一杯にふさわしい特別なコーヒーです。ぜひ、香り高い一杯でリラックスした時間をお楽しみください。
- 抜粋:厳選した豆を絶妙にブレンドし、深みのあるコクと豊かな香りを実現しました。バランスの良い味わいで、毎日の一杯にふさわしい特別なコーヒーです。
分類
- カテゴリー:飲料
- タグ:コーヒー、ホット、ノンアルコール
- おすすめ:今月のおすすめ
価格設定(メニューの価格フィールド)
「メニューの価格」フィールドで「+」ボタンをクリックして、以下を追加します。
- 1行目:サイズ:S / 価格:300
- 2行目:サイズ:M / 価格:400
- 3行目:サイズ:L / 価格:500
アイキャッチ画像
コーヒーの写真をアップロードして設定します。
設定したら、公開 ボタンをクリックします。
さらにメニューを追加
同様の方法で、いくつか登録してください。
例えば以下のようなメニューを追加してみましょう。
ドリンク系の例
- アイスコーヒー(飲料、アイス、コーヒー、ノンアルコール)
- カフェラテ(飲料、ホット、ミルク、ノンアルコール)
- 抹茶ラテ(飲料、ホット、ミルク、ノンアルコール)
フード系の例
- サンドイッチ(前菜、パン)
- サラダプレート(前菜、サラダ)
- モーニングセット(朝食、セットメニュー)
デザート系の例
- ティラミス(デザート、スイーツ)
- チーズケーキ(デザート、スイーツ)
最低でも数件程度のメニューを登録しておくと、後のページ制作で動作確認がしやすくなります。
まとめ
今回は、カフェサイトの核となる「メニュー管理機能」をカスタム投稿タイプで実装しました。
学んだこと
カスタム投稿タイプ
- 固定ページや標準の投稿では難しい、専用のデータ管理ができる
register_post_typeを使って登録する()- 共通化することで保守性が向上する
カスタムタクソノミー
- カテゴリー型とタグ型の2種類がある
register_taxonomy()を使って登録する- 1つの投稿に複数の分類軸を持たせられる
カスタムフィールド
- SCFで繰り返しフィールドを実装(価格設定)
- ACFでタクソノミーにフィールドを追加(カテゴリーアイキャッチ)
- データとして管理することで、表記統一や一括変更が可能
共通化のテクニック
- 関数化することでコードの重複を削減
- 保守性の向上:修正が必要な場合、1箇所を変更すれば全体に反映される
重要なポイント
- 固定ページではカテゴリー分類ができない
- カスタム投稿タイプを使うことで柔軟な管理が可能
- 標準の投稿はブログ用に使う
- メニューとブログを分けることで、それぞれに適した管理画面を用意できる
- タクソノミーは「分類の軸」
- カテゴリー型は階層構造、タグ型はフラット
- 1つの投稿に複数の分類軸を持たせられる
- カスタムフィールドでデータとして管理
- 本文に価格を書くのではなく、フィールドで管理
- 表記統一、一括変更、並び替えが可能
- パーマリンクの更新を忘れずに
- カスタム投稿タイプ追加後は必ず実行
- 忘れると404エラーになる
今後の展開
今回作成したメニューデータは、次回以降の記事で実際にページとして表示していきます。
- メニュー一覧ページ:全メニューを一覧表示
- カテゴリー別ページ:ドリンクのみ、デザートのみ表示
- おすすめメニュー:トップページで新作や今月のおすすめを表示
- 詳細ページ:メニュー1件の詳細情報を表示
カスタム投稿タイプは、WordPressサイト制作において最も重要な機能の一つです。この記事で学んだ内容は、今後あらゆるサイト制作で活用できます。
次回予告
次回は、今回登録したメニューを実際にページとして表示していきます。
- メニュー一覧ページの作成
- カテゴリー別メニュー一覧の表示
- タグ別メニュー一覧の表示
- おすすめメニューの表示
- 個別メニュー詳細ページの作成
カスタム投稿タイプで登録したデータを、WordPressのテンプレート階層を使って柔軟に表示する方法を学びます。引き続き、実際に手を動かしながら進めていきましょう。
この投稿をシェアする
headタグの整理とセキュリティ対策 – WordPress実践制作【WPCafe編】
PRACTICE WordPressのheadタグ整理とセキュリティ対策を実装します。デフォルトで出力される不要な情報を削除し、自分で必要なタグを適切な順序で出力できるようにします。また、バージョン情報の非表示、ユーザー列挙対策、REST API制限などのセキュリティ対策も実施。今後のサイト制作でも使える重要なノウハウを身につけます。
- 2025/10/25
- 0comments
- 146views







