WordPressの固定ページを使用し、テーマに依存しない新しいページを作成するために試行錯誤しています。
今回は、固定ページを使用してページを登録しようとしましたが
「公開に失敗しました。 返答が正しい JSON レスポンスではありません。」
というエラーが出て苦労したので、共有させてください!
オリジナルのページを作成する方法については、下記ページをご参照ください!
原因は functions.php
結論から申し上げますと、原因は functions.php にありました。
functions.php の書き方を少し間違えるだけで表示されなくなるのです。
ダメな例
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style')
);
}
?>
<!-- 採用LP用のヘッダー -->
<?php
WordPress の functions.php は「PHPファイル」なので、
?>
で一度閉じてから HTML コメント (<!-- ... -->
) を書いてしまうと、以降のPHPが正しく解釈されないのです!
なぜ問題になるか
?>
でPHPを終了した直後に HTML コメントが入っているため、その後の<?php
ブロックが「別扱い」される。- これにより「ヘッダー送信済み」エラーや予期しない動作(固定ページ公開できないなど)が出やすい。
- 特に
functions.php
では 閉じタグ?>
を書かないのがベストプラクティス です。 - コメントは
//
や/* ... */
のPHPコメントで書く
ここの修正で、固定ページを公開することができました!
エラーが続くときに試したいこと
PHPの書き方のエラーではない場合に、確認した方がいいことがあります。
1.「設定 → パーマリンク → 変更を保存」もう一度固定ページを保存
2.一般設定で URL が https になっているか確認
3.テーマをデフォルトに切り替えて公開テスト
→ 子テーマや独自テンプレートに問題がないか切り分け。
私はここで、親テーマはエラーになっていないので、子テーマの影響だとわかりました!
4.ブラウザのキャッシュ・Cookie削除 → 再ログイン
(セッション切れでエラーになることがあります)
5.プラグインをすべて停止 → 公開テスト → 問題なければ1つずつ有効化
→ 特にセキュリティ系(SiteGuard, Wordfence, WAF)やキャッシュ系(LiteSpeed, WP Super Cache)が怪しいです。
他に考えられるエラー①パーマリンクの問題
パーマリンクの問題が多いようです。
管理画面 → 設定 → パーマリンク
何も変更せずに「変更を保存」をクリック
このパーマリンクは「投稿者名」の方がエラーが起きにくいようです。試してみてください!
他に考えられるエラー②サイトURLがズレている
管理画面 → 設定 → 一般
- WordPress アドレス (URL)
- サイトアドレス (URL)
👉 この2つが正しいか確認。
(例:https://example.com
に統一。www
やhttp
が混ざっているとエラーになる)
他に考えられるエラー③プラグインの干渉
特にセキュリティ系(Wordfence, SiteGuard など)やキャッシュ系(LiteSpeed Cache, W3TCなど)が REST API をブロックすることがあります。
👉 一時的に無効化して試す。
サーバー側(WAFやmod_security)がブロックしている
REST API の疎通確認のために、ブラウザで次のURLを開いてみてください:
https://(ドメイン)/wp-json/
「アクセスできません」や403/500エラーになる場合 → サーバー側(WAFやmod_security)がブロックしている可能性大。
JSONデータが出てくればOK(例: サイト名や投稿の情報が出る)。
こんな感じで色々トライアンドエラーを繰り返したらエラー解消しました!!
他にもオリジナルのページを作成するためにやったことなど公開しますので、参考にしていただければ幸いです!