ハジメトーク最新記事

ハジメクリエイト社員による、日々の業務やトレンド、日常のアレコレについてお届けします。

もっと見る

【WordPress】特定の固定ページでカスタムフィールドの値が更新されない不具合の原因と解決策

2025.12.16

こんにちは、Morimotoです。

先日、WordPressサイトで「特定の固定ページ内のカスタムフィールドの値が更新されない」という不具合が発生しました。

原因を調べてみたり、AIに聞いてみたりして解決できましたが、初めて遭遇することだったので備忘録代わりに記事として原因と解決策を残しておこうと思います。

同じ不具合でお困りの方の助けになれば幸いです。


発生した不具合:特定の固定ページでカスタムフィールドが更新できない

あるWordPressサイトで、Custom Field Suite (CFS) というカスタムフィールドプラグインを使って、固定ページに商品情報の一覧(ループ行)を表示していました。

現象

  1. カスタムフィールドの値を変更し、「更新」ボタンを押しても、値が更新前のままに戻ってしまう。
  2. テスト環境では問題なく更新できる。
  3. 他の固定ページにあるカスタムフィールドは問題なく更新できるが、特定の一つの固定ページ(固定ページA)でのみエラーが発生する。

この「特定のページでのみ発生する」という点が、原因特定のカギとなりました。


試したこと:Gemini(AI)と協力して原因を絞り込み

まず、原因が特定できなかったため、技術パートナーである Gemini に相談しながら、可能性のある原因を一つずつ潰していきました。

AIの提案を試すも解決せず

提案された原因試したこと結果
キャッシュブラウザの強制再読み込み、WordPressキャッシュプラグインのクリア、サーバーキャッシュのクリア直らない
キー名のミスカスタムフィールドのキー名を確認問題なし
プラグイン競合Custom Field Suite以外の全てのプラグインを停止して試す直らない
データ破損問題の固定ページAを複製し、複製したページで更新を試す直らない(複製ページでも更新できない)

サーバーキャッシュのクリアやデータ破損のチェックなど、基本的な対応では解決しませんでした。

原因の特定:ループデータ量とPHP設定の上限

Geminiとのやり取りの中で、「カスタムフィールドがループ行で数が多い」という情報を伝えたところ、原因の核心にたどり着きました。

Geminiが指摘した最も可能性の高い原因は、POSTデータの上限超過です。

これは、カスタムフィールドの入力項目が多すぎると、サーバーのPHP設定で定められた「一度に受け付けられる入力変数(フォームの部品の数)」の上限を超えてしまい、更新データの一部がサーバーに無視されてしまう現象です。

実際にサーバーのエラーログを確認したところ、以下のエラーが記録されていました。

PHP message: PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.

エラーメッセージは、 「入力変数が 1000 を超えているので、php.ini の max_input_vars の値を増やしてください」 と書かれています。

このサーバーでは max_input_vars がデフォルトの 1000 に設定されており、大量のループデータを持つ固定ページAを更新した際に、入力変数の総数がこの上限を超えてしまい、更新が失敗していたのです。


解決策:php.iniのmax_input_varsを変更する

原因が特定できたため、解決策は非常にシンプルでした。

max_input_vars の値を増やす

本番環境のサーバーのPHP設定を変更し、max_input_vars の値を増やします。

設定項目変更前の値(ログから判明)変更後の値(解決値の例)
max_input_vars10004000

カスタムフィールドのループ行が多い場合は、余裕をもって 4000 や 5000 程度まで引き上げてしまうのが確実です。

PHP設定の変更方法

ご利用のサーバーによって設定方法が異なりますが、以下のいずれかの方法で変更します。

方法1:サーバー管理画面で変更する

多くのレンタルサーバー(Xserver、ConoHa WINGなど)では、管理画面に「PHP設定」や「Web設定」といった項目があり、GUI(画面操作)で max_input_vars の値を変更できます。これが最も簡単な方法です。

方法2:php.ini ファイルで直接変更する

サーバー管理画面からでなくても、直接 php.ini ファイルを編集して変更することも出来ます。
php.iniに下記の1行を追記してください。

max_input_vars = 4000

自分はphp.iniファイルでmax_input_vars の値を 4000 に変更したところ、無事に固定ページAのカスタムフィールドの値を更新できるようになり、表示も最新の情報に切り替わるようになりました。


まとめ

WordPressサイトの特定の固定ページのみカスタムフィールドが更新されない場合、 「大量の入力フィールドによる max_input_vars の超過」 を疑いましょう。

現象疑うべき原因解決策
特定のページでカスタムフィールドが更新できないmax_input_vars の上限超過php.ini(または .htaccess)で max_input_vars の値を引き上げる
全てのページで更新されないキャッシュ、プラグイン競合、データベース権限キャッシュクリア、プラグインの停止、phpinfo()で権限確認

ちなみに、max_input_vars のデフォルト値はPHPのバージョンやサーバーによって異なりますが、多くの環境で 1000 に設定されていることが多いです。

カスタムフィールドプラグインのループ機能(繰り返しフィールド)を多用する際は、この max_input_vars の設定に注意してくださいね。

この経験が、皆さんの開発・運用の一助となれば嬉しいです!

それでは。


🏢 株式会社ハジメクリエイトについて

この記事は、 株式会社ハジメクリエイト のエンジニアが執筆しました。


💻 Webシステム開発のプロフェッショナル

私たちは、ビジネスの成長をサポートするため、 PHPを用いたオーダーメイドのシステム開発 を提供しています。
お客様一人ひとりのニーズに応じたカスタムシステムを、 企画から開発・運用まで一貫してサポート
さらに、 React Nativeを活用したiOS/Android対応のアプリ開発 も得意としています。

単に「作る」だけでなく、
課題の本質に向き合い、最適な解決策を提案する のがハジメクリエイトのスタイルです。


🧑‍💻 一緒に働く仲間を探しています!

株式会社ハジメクリエイトでは、 自ら考え行動できるエンジニア を募集しています。
「私はこれがしたい!」という想いを持つあなた、一緒にモノづくりを楽しみませんか?

  • 技術で人の役に立ちたい
  • 意見が通る小さなチームで働きたい
  • フロントエンドもバックエンドも、いろいろ挑戦してみたい
  • お客さんと一緒にプロジェクトを育てたい

そんな気持ちがある方なら、きっと居心地のいい環境だと思います。
正社員はもちろん、パートタイムでの参加も歓迎中! 柔軟な関わり方で、あなたらしく働いてください。

👉 採用情報を見る
👉 お問い合わせはこちら


ちょっとでも「この会社、気になるな」と思ったら、ぜひお気軽にご連絡ください📩
最後まで読んでいただきありがとうございました!

  • PHP
  • WordPress

この記事を書いた人

Morimoto

Programmer Morimoto

Web制作をメインに、最近はWeb開発にも携わるようになってきました。新しく学んだことやつまづいたことなどを書いていきます。three.jsを使った3Dアニメーションにも興味があります。

Morimotoの書いた記事一覧へ

ハジメクリエイトでは一緒に働く仲間を募集しています!

関連記事