0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressでプラグイン設定が保存できない原因は max_input_vars だった【FE Advanced Search】

0
Posted at

はじめに

こんにちは、CMA制作部スタッフMasudaです。

先日、「FE Advanced Search」というプラグインを使用して、絞り込み検索を実装しているサイトで、設定が保存できない現象が発生しました。
バージョンを変更したり、記述を見直したりしましたが、エラーログも出ず苦戦したので、同じように困っている人の力になれたらと思い記事にしました。

事象

Wordpress管理画面内「FE Advanced Search」の設定で、項目を追加して保存ボタンを押しても保存されない。

  • 管理画面でプラグインの設定を保存しても値が保存されない
  • 保存後、スタイルが効いていない画面に遷移する
  • URLに &noheader=true が付与される
  • WordPressのデバッグログにエラーが出力されない

本来の設定画面

image-1.png

スタイルが効いていない画面

設定内容は保存されていない。
image-2.png

原因

今回のページは入力項目数が非常に多い設定画面です。
このような場合、PHPの max_input_vars 制限が原因である可能性があります。

PHPには、リクエストで受け取る入力変数の数を制限する max_input_vars という設定があります。
デフォルト値は 1000 で、フォームの入力項目がこの数を超えると、それ以降のデータはPHP側で破棄されます。

その結果、

  • WordPressが受け取るPOSTデータが途中で欠ける
  • 設定の保存処理が正常に完了しない
  • 管理画面の表示が崩れる

といった現象が発生します。

項目を追加したことでデフォルト値以上の項目数になってしまい、データが保存されなかったようです。

対処方法

max_input_vars の値を増やすことで解決しました。

.user.ini に設定を追加

max_input_vars = 3000

.user.ini に上記設定を追加することで、POSTで受け取れる入力数の上限を引き上げることができます。

※ サーバー環境によっては php.ini.htaccess で設定する場合もあります。

まとめ

「FE Advanced Search」以外のプラグインでも、プラグイン設定が保存できない場合、PHPの入力変数制限に引っかかっている可能性があります。

特に、

  • 入力項目が多いプラグイン
  • カスタムフィールドや設定項目が大量にある画面

では max_input_vars の影響を受けやすいため、PHP設定を確認する必要があります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?