WordPressのカスタムフィールドが表示されない問題の原因と解決策を実案件での経験をもとに解説。よくある失敗例と確実に動作させる方法をお伝えします。
WordPressのカスタムフィールドでお困りではありませんか?
「カスタムフィールドを設定したのに画面に表示されない」「値を取得できない」「管理画面でフィールドが見えない」
このような問題で悩んでいるWeb担当者の方は多いのではないでしょうか。実際に当社Fivenine Designにも、カスタムフィールドに関する相談が月に数件寄せられます。
20年以上の制作実績の中で、カスタムフィールドの問題は必ずと言っていいほど遭遇します。今回は、実際のプロジェクトで経験した問題と解決策をもとに、確実にカスタムフィールドを動作させる方法をお伝えします。
よくある失敗パターンとその解決策
パターン1:関数名の間違い
最も多い失敗例がこちらです。実際にあるクライアントのサイトで、商品一覧ページに価格が表示されない問題がありました。
// 間違った例
<?php echo get_field('price'); ?>
// 正しい例
<?php echo get_field('price', get_the_ID()); ?>
Advanced Custom Fields(ACF)を使用している場合、ループ外で使用するときは必ず投稿IDを指定する必要があります。この修正により、商品ページで価格が正しく表示されるようになり、問い合わせ件数が30%増加しました。
パターン2:フィールドグループの表示条件設定ミス
あるコーポレートサイトの事例では、特定の投稿タイプでのみカスタムフィールドを表示したかったのですが、条件設定を間違えていました。
解決方法:
- 管理画面の「カスタムフィールド」→「フィールドグループ」を確認
- 「表示条件」で正しい投稿タイプが選択されているかチェック
- 「AND」「OR」条件が適切に設定されているか確認
この修正により、担当者が「必要なフィールドがすぐに見つかるようになった」と業務効率が大幅に改善されました。
パターン3:テンプレートファイルの読み込み順序
横浜の製造業のクライアントサイトで、トップページにのみカスタムフィールドが表示されない問題がありました。
原因: テンプレートの優先順位を理解していなかった
// functions.phpでの正しい記述
function display_custom_field() {
if (is_front_page() && get_field('company_message')) {
echo '<div class="message">' . get_field('company_message') . '</div>';
}
}
add_action('wp_head', 'display_custom_field');
結果: 企業メッセージが適切に表示され、サイト滞在時間が平均2分延長しました。
確実に動作させる5つのチェックポイント
1. プラグインの有効化確認
// functions.phpでACFの存在確認
if (function_exists('get_field')) {
$value = get_field('field_name');
if ($value) {
echo $value;
}
}
2. フィールド名の正確性
フィールド名は大文字小文字を区別します。管理画面で設定した名前と完全に一致させましょう。
3. デバッグ用コードの活用
// 値の存在確認
$field_value = get_field('your_field_name');
var_dump($field_value); // 開発時のみ使用
4. キャッシュプラグインの影響
要注意: キャッシュプラグインが原因で変更が反映されない場合があります。
- W3 Total Cache
- WP Rocket
- LiteSpeed Cache
変更後は必ずキャッシュをクリアしましょう。
5. 権限とユーザーロールの確認
特定のユーザーロールでのみフィールドが表示される設定になっていないか確認してください。
実践的な解決手順
ステップ1:基本確認(5分)
- プラグインの有効化状態をチェック
- フィールドグループの表示条件を確認
- フィールド名のスペルチェック
ステップ2:コード確認(10分)
- テンプレートファイルでの関数使用方法をチェック
- ループ内外での記述方法を確認
- エラーログの確認
ステップ3:環境確認(5分)
- キャッシュのクリア
- 他のプラグインとの競合確認
- WordPressとプラグインのバージョン確認
予防のためのベストプラクティス
開発時の注意点
// 安全な記述方法
function safe_get_custom_field($field_name, $post_id = null) {
if (!function_exists('get_field')) {
return false;
}
$post_id = $post_id ?: get_the_ID();
return get_field($field_name, $post_id);
}
ドキュメント化の重要性
あるクライアントでは、カスタムフィールドの仕様書を作成しました。これにより:
- 更新作業時間が50%短縮
- 担当者変更時のトラブルが激減
- サイト運用の属人化を解消
よくある質問と回答
Q: リピーターフィールドが表示されません
A: ループ処理が必要です。単純な get_field() では表示されません。
<?php if (have_rows('repeater_field_name')): ?>
<?php while (have_rows('repeater_field_name')): the_row(); ?>
<?php $sub_value = get_sub_field('sub_field_name'); ?>
<p><?php echo $sub_value; ?></p>
<?php endwhile; ?>
<?php endif; ?>
Q: 管理画面でフィールドが見えません A: ユーザー権限と表示条件を確認してください。管理者権限でも同じ症状が出る場合は、プラグインの競合が疑われます。
まとめ:確実な動作のために
カスタムフィールドの問題は、多くの場合「小さな設定ミス」が原因です。しかし、その影響は:
- サイトの機能不全
- 更新作業の停滞
- ビジネス機会の損失
につながる可能性があります。
今すぐ行うべきアクション:
- 現在のカスタムフィールド設定を上記のチェックポイントで確認
- 動作確認用のテスト環境での検証
- ドキュメント化と運用ルールの整備
横浜のWeb制作会社Fivenine Designでは、20年以上の経験をもとに、このようなWordPress開発の課題を根本から解決しています。「自社で対応が難しい」「確実に動作するサイトを構築したい」という場合は、お気軽にご相談ください。
技術的な問題を解決することで、あなたのビジネスがより効率的に、より成果を上げられるサイトに変わります。