- WordPressサイトには、通常の投稿形式とカスタムフィールドを使用したフォーム型投稿があります。
- カスタムフィールドは一貫した情報サイトを作るのに役立ち、データベースの「
wp_postmeta
」テーブルに保存されます。 - 効率的に使うには、Custom Field Templateプラグインなどで、投稿タイプごとに入力形式・表示形式を設定するのが有効です。
1. フォーム型投稿とシンプルなWordPressの違い
設定してもらったWordPressサイトで記事を投稿しようとしたら、フォームに合わせて入力する形式で、自由に文章を入力できません。
これは、シンプルなWordPressサイトと何が違うのですか?
多くの方が最初に感じる疑問に、「WordPressサイト」と一口に言っても、サイトによって編集画面が大きく異なることです。

これは、サイト管理者が「WordPressプラグイン」をインストールして、設定メニューの項目や編集画面の機能を追加・変更できるからです。
通常のWordPressサイトでは、記事を投稿する際、主に「タイトル」と「本文」という2つの入力欄だけがあります。
この場合、本文エリアに自由に文章を書き、画像を挿入し、見出しを設定するなど、好きなように編集できます。
これがシンプルなWordPressの基本形です。
一方、投稿画面がフォームに合わせて入力するタイプのサイトでは、「カスタムフィールド」という機能を使って設定されています。
管理者があらかじめ用意した入力項目(例:「店舗名称」「電話番号」「おすすめ度」など)に沿って情報を入力するスタイルになります。

「カスタムフィールド」は、WordPressそのものに基本機能がありますが、通常は「Custom Field Template」などのプラグインを使って、作業担当者がわかりやすいように設定してあることが多いです。
1-1. WordPressのカスタムフィールド機能の仕組み(wp_postmeta)
WordPressでは、標準の投稿形式にはない情報も柔軟に追加できるようになっています。
WordPressでは、投稿記事や固定ページの基本情報(タイトル、本文など)は「wp_posts
」というテーブルに保存されます。
一方、追加情報は「wp_postmeta
」というテーブルに保存されます。
カスタムフィールドのデータはこの「wp_postmeta」テーブルに、「meta_key(項目名)」と「meta_value(値)」という組み合わせで保存されます。
データベース上では、各投稿IDに対して複数のカスタムフィールド情報が関連付けられる構造になっているのです。

例えば、あるレストラン紹介記事に「おすすめ度」というmeta_keyと「★★★★」というmeta_valueが紐づけられるイメージです。

WordPressのカスタムフィールドは、「情報の一貫性」と「入力の効率化」のために利用されます。
決まったフォームを用意しておけば、複数の担当者が漏れなく入力でき、見た目も統一されるのです。
2. 標準機能とCustom Field Templateプラグインの関係
カスタムフィールドを活用したサイトでは、よく「Custom Field Template」プラグインが有効化されています。
しかし、これは必須ではありません。
というのも、「Custom Field Template」プラグインは、WordPressの標準カスタムフィールド機能を「ラッピング」するプラグインだからです。
基本的な仕組みは、WordPress標準のデータベーステーブル(wp_postmeta)に保存されます。

標準機能とプラグインの「2階建て」構造なんですね。
2-1. 標準機能のカスタムフィールドの入力と表示(1階部分)
WordPressの標準機能にもカスタムフィールドがあります。
通常は、非表示の設定になっているので、次のようにして使用します:
- 投稿画面で「表示オプション」から「カスタムフィールド」を有効にする
- 画面下部に表示される「カスタムフィールド」セクションで「新規追加」をクリック
- 「名前」(例:おすすめ度)と「値」(例:★★★★)を入力する
カスタムフィールドに値を入力した値をWebサイト上に表示させるには、テンプレートファイルにPHPコードを追加する必要があります。
WordPressのテーマフォルダ内にある「single.php」(個別記事表示用のテンプレート)を編集し、テンプレートファイル内の表示させたい場所にPHPコードを追加します。
例えば、レストラン情報サイトで「店舗名称」「住所」「電話番号」「おすすめ度」のカスタムフィールドを設定した場合:
<div class="restaurant-info">
<h3>店舗情報</h3>
<?php
$name = get_post_meta(get_the_ID(), '店舗名称', true);
$address = get_post_meta(get_the_ID(), '住所', true);
$phone = get_post_meta(get_the_ID(), '電話番号', true);
$recommendation = get_post_meta(get_the_ID(), 'おすすめ度', true);
if($name) echo '<p>店舗名称: ' . $name . '</p>';
if($address) echo '<p>住所: ' . $address . '</p>';
if($phone) echo '<p>電話番号: ' . $phone . '</p>';
if($recommendation) echo '<p>おすすめ度: ' . $recommendation . '</p>';
?>
</div>
get_post_meta()
関数で現在の投稿ID [get_the_ID()関数]のカスタムフィールド「価格」の値を取得し、HTMLのpタグで囲んで表示しています。

標準機能のカスタムフィールドは入力インターフェースが分かりにくく、記事の編集画面の下部に小さく表示されるため使いづらい面があります。
3. Custom Field Templateプラグインの機能(2階部分)
ここで役立つのが「Custom Field Template」というプラグインです。
標準機能ではシンプルなテキスト入力が基本ですが、このプラグインを使うと、チェックボックスや日付選択など、見やすい入力形式を利用できます。
「投稿タイプ」ごとに異なるカスタムフィールドのセットを切り替えることもできます。
レストラン情報サイトを運営する場合、次のようなカスタムフィールドテンプレートを作成できます:
- 店舗名称(一行テキスト)
- 住所(一行テキスト)
- 電話番号(一行テキスト)
- おすすめ度(選択リスト:★〜★★★★★)

カスタムフィールドの入力と表示が格段に便利になります。
3-1. カスタム投稿タイプとテンプレートを結びつける
WordPressには「投稿」と「固定ページ」以外に、「カスタム投稿タイプ」という機能があります。
例えば:
- 「restaurant」(レストラン情報用)
- 「product」(商品情報用)
- 「event」(イベント情報用)
などの投稿タイプを独自に作成できます。
Custom Field Templateで特定の投稿タイプと紐付けるには:
[Restaurant]
post_type = restaurant
[店舗名称]
type = text
size = 35
label = 店舗名称を入力してください
[住所]
type = text
size = 35
label = 住所を入力してください
[電話番号]
type = text
size = 20
label = 電話番号を入力してください
[おすすめ度]
type = select
value = ★★★★★ # ★★★★☆ # ★★★☆☆ # ★★☆☆☆ # ★☆☆☆☆
label = 星の数を選んでください

このように設定すると、投稿編集画面で入力フォームが追加されます。
3-2. テンプレートフォーマットを作る
入力した内容を表示させるためには、まず表示形式を決めます。
例えば、「FORMAT #0」に以下のHTMLを入力します。
<div class="restaurant-info">
<h3>店舗情報</h3>
<table>
<tr><th>店舗名称</th><td>[店舗名称]</td></tr>
<tr><th>住所</th><td>[住所]</td></tr>
<tr><th>電話番号</th><td>[電話番号]</td></tr>
<tr><th>おすすめ度</th><td>[おすすめ度]</td></tr>
</table>
</div>
そして、テーマエディターのテーマファイルリストから「single.php」などを選択して、表示位置にカスタムフィールドを表示するコードを追加します。
<?php
// カスタムフィールドテンプレートの自動表示
if(function_exists('custom_field_template_replace_content')) {
echo custom_field_template_replace_content('[cft format=0]');
}
?>
[店舗名称][住所]などの部分に、実際にカスタムフィールドに入力した値が埋め込まれて表示されます。
<?php get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
</header>
<?php if ( has_post_thumbnail() ) : ?>
<div class="post-thumbnail">
<?php the_post_thumbnail('large'); ?>
</div>
<?php endif; ?>
<div class="entry-content">
<?php the_content(); ?>
<?php
// カスタムフィールドテンプレートの自動表示
if(function_exists('custom_field_template_replace_content')) {
echo custom_field_template_replace_content('[cft format=0]');
}
?>
</div>
</article>
<?php endwhile; ?>
</main>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Custom Field Templateのようなプラグインを使えば、専門的な知識がなくても、フォーム型の入力システムを簡単に構築できます。
情報の一貫性を保ちながら、入力作業も効率化できるのは大きなメリットです。
カスタムフィールドは、WordPressをより高度な情報管理システムへと進化させる鍵なのです。
3-3. 標準のデータ構造に記録される(wp_postmeta)
ただし、Custom Field TemplateはあくまでもWordPressの標準カスタムフィールド機能の「使い方」を改善しているだけ。
データの保存方法や基本的な仕組みはそのまま活用されています。
- データはどちらも「wp_postmeta」テーブルに「meta_key」と「meta_value」のペアとして保存される
- PHP関数でデータを取得できる(get_post_meta関数など)

そのため、プラグインを無効化しても、表示方法が変わるだけでデータ自体は失われません。


![[WordPress] サイトのデータベースが接続できなかったけど修正できた(MySQLデータベースの確認)](https://chiilabo.com/wp-content/uploads/2023/04/image-21-14-1024x576.jpg)