TECH BLOG

マークリープス技術ブログ

open

[WordPress管理画面] カスタム投稿+カスタムフィールドがプレビューで表示されない?固定ページでの注意点と対処法

[WordPress管理画面] カスタム投稿+カスタムフィールドがプレビューで表示されない?固定ページでの注意点と対処法

WordPressでは、カスタム投稿タイプとカスタムフィールドの情報を、固定ページのテンプレート内で読み込む構成が実務でよく使われます。

しかし、いざ「プレビュー」機能を使って確認しようとすると、
・なぜか archive.php のテンプレートが使われている?
・中身が表示されない
といった、混乱した状況になることがあります。

本記事では、状況別に「なぜプレビューで表示されないのか?」を整理しながら、その原因と正しい対処法をわかりやすく解説します。

よくある2つのケース

ケース①:カスタム投稿タイプ単体をプレビューする場合

例:「生徒情報」などのカスタム投稿に直接アクセスしてプレビュー

この場合、投稿自体のプレビューは可能です。テンプレート階層に従い、single-{post_type}.php が使用されます。
ただし、該当テンプレートが存在しない場合、WordPressは代替テンプレート(たとえば archive.php や index.php)を使用しようとします。
その結果、投稿内容は表示されても、テンプレートが「生徒情報用」のものではなくなってしまいます。
 

▼プレビューが正常にされない例

本文は表示されるが、archive.php のレイアウトが適用されてしまう。
本文は表示されるが、archive.php のレイアウトが適用されてしまう。

本文は表示されるが、archive.php のレイアウトが適用されてしまう。

ケース②:固定ページテンプレートに、カスタム投稿+カスタムフィールド情報を読み込む場合

例:page-staff.php で、カスタム投稿「staff-data」の一覧を表示。カスタムフィールド情報も含む

この場合、一見 archive.php ベースの見た目になりますが、the_content() やカスタムフィールドの内容は表示されません。
「空白のページが出てきた?」と感じることもあるでしょう。
 

▼プレビューが正常にされない例

archive.php のレイアウトだけが適用され、本文やカスタムフィールドの情報が一切表示されない。
archive.php のレイアウトだけが適用され、本文やカスタムフィールドの情報が一切表示されない。
archive.php のレイアウトだけが適用され、本文やカスタムフィールドの情報が一切表示されない。

原因:テンプレート階層の混乱

WordPressには、表示対象に応じたテンプレート階層のルールがあります。
以下は、その一例です。

表示対象 使用されるテンプレート例
固定ページ page.php、page-{slug}.php
カスタム投稿(一覧) archive-{post_type}.php
カスタム投稿(詳細ページ) single-{post_type}.php

固定ページテンプレートは、本来その「固定ページ自体の内容」を表示するためのものであり、他の投稿タイプ(=カスタム投稿)の個別情報を直接表示することを想定していません

そのため、page-staff.php のようなテンプレートでカスタム投稿「staff-data」の情報を読み込んでも、プレビュー時には WordPress が「この投稿をどう扱えばいいか」迷ってしまい、正しく表示できないのです。

解決方法①:single-{カスタム投稿スラッグ}.php を用意する

カスタム投稿自体の表示(個別ページ)に対応したい場合は、専用のテンプレートファイル single-{post_type}.php を作成しましょう。
 

対処手順

1. 対象カスタム投稿タイプのスラッグを確認(例:staff-data)
2. テーマフォルダ内に single-staff-data.php を作成
3. このファイルに、カスタムフィールドの内容を出力するコードを記述
4. プレビューすると、正しく内容が表示されるようになる
 

この方法のメリット

・プレビュー時にも WordPress が正しいテンプレートを適用
・カスタム投稿の本文・カスタムフィールドが正しく表示される

解決方法②:固定ページではなく、アーカイブテンプレートを利用する

もし「固定ページでカスタム投稿を一覧表示したい」という意図で page-xxx.php を使っているのであれば、代わりに archive-{post_type}.php を使うほうがシンプルかつ確実です。
 

なぜアーカイブテンプレートを使うべきか?

・archive-{post_type}.php は、カスタム投稿の一覧表示のために用意された正式なテンプレート
・URL構造も /staff-data/ のように整理される
・プレビューも正しく機能する
 

補足:どうしても固定ページで一覧を出したい場合

以下のようなアプローチも検討できます。
・固定ページの本文内でショートコードを使って出力
・プラグイン(例:PODS、ACF Blocks)を活用して、ブロックとして表示

まとめ

WordPressでカスタム投稿+カスタムフィールドを扱う際、プレビュー時の挙動はテンプレート階層のルールに大きく左右されます。

思ったとおりに表示されないときは、テンプレート階層の構造に立ち返って見直してみましょう。

よく読まれている関連記事

関連最新記事