【WordPress】「設定を保存できませんでした。」の対処法

この記事では、PC版「WordPress」で「options.php
」ページの設定を変更した後「設定を保存できませんでした。」と表示されて保存できない時の対処法について書きます。
色々原因があると思いますが、僕の場合はWAFとPOST送信の上限値が原因でした。
とある日以降、WordPressで「options.php
」ページの項目(例:image_default_size
)を変更して「変更を保存」をクリックしても、「設定を保存できませんでした。」と表示されて変更できなくなりました。

WAF設定をオンにしていると「閲覧できません (Forbidden access)」と表示されることは知っていました。
この場合は、契約しているサーバー(僕の場合「ConoHa WING」)のWAF設定を一時的にオフにすることで解決します。

「設定を保存できませんでした。」の場合はどうすればいいのかさっぱり分かりませんでした。調べてもそんなに情報がなくどうしたものか悩んでいました。
そんな中下記サイト様を見つけました。どうやらPOST値の制限がデフォルトでは1000になっているのが原因っぽいです。
参考:ConoHaサーバーでPOST値の制限が1000個までと気づくまで。 | 開発 | 2020年6月4日 | モノグサにお灸
「ConoHa WING」の「
php.ini
」に「max_input_vars = 10000
」を書いて制限値を増やしてみると無事に解決しました。
本記事では僕みたいな初心者が困らないように書きます。僕自身初心者なのでいまいち理解できていませんが、同じように悩んでいる方参考にしてみてください。
なお一概に本記事の方法が原因ではない可能性もあります。あくまで解決策の一つとして捉えてください。
【原因1】「php.ini」のPOST値制限
なんでこれが原因なのか推測(どうでもいい方はスルーして)
どうでもいい方はこちらに飛んでください。
WordPressではデフォルトのPOST送信の上限が1000に設定されています。
POSTというのは情報を送ることを指すようです。僕は素人なので分かりませんが、恐らくWordPressで1つの項目を変更して保存するとサーバーに1つのPOSTが送信される…的な感じだと思います。
この設定の上限値が1000になっていることで「options.php
」の情報が正常に送られないことがあるようです。
僕の場合、ある日を境に「設定を保存できませんでした。」と表示され始めました。これがポイントです。
通常「options.php
」の設定項目はPOSTが1000を超えないようになっていますが、インストールしているWordPressプラグインやテーマによって1000を超えることがあります。
確かに最初のころはプラグインもそんなに導入していなかったので、設定を変更した際送信するPOST数が1000に収まっていたんだと思います。色々カスタマイズしていくうちに送信する量も増えて1000を超えちゃったんだと思います。
つまり、「options.php
」ページに表示される設定項目が多い方ほど「設定を保存できませんでした。」と表示されると思います。
「options.php
」にアクセスしてスクロールバーの大きさを見てみましょう。かなり小さいはずです。それだけ設定項目があるということです。

POST送信の上限値を増やす手順
サーバーの管理画面にログイン
契約しているサーバー側の設定から変更できます。「ご自身のサーバー名+PHP編集」で調べます。例えば「エックスサーバー」を契約している方は「エックスサーバー PHP編集」といった感じで検索します。
僕は「ConoHa WING」を契約しているのでそちらでの解説になります。コントロールパネルにアクセスしてログインします。

「php.ini」の編集ページを開く
上部のタブが「VPS」ではなく「WING」タブになっていることを確認し、左側の「サイト管理」→「サイト設定」→「応用設定」をクリックします。

「PHP設定」をクリックして展開します。

「max_input_vars」を追加する
入力フォームが表示されるので右側にある鉛筆マーク(🖉)をクリックします。

入力できるようになるので「max_input_vars = 10000
」と入力します。既に別のコードを書いている場合は改行してから書きます。「保存」をクリックします。
max_input_vars = 10000

恐らく「max_input_vars
」がPOST送信の上限値を指しています。こちらをデフォルトの「1000」から「10000」に変更するという意味です。
1000から10000に変更するので、よっぽどのことがない限りはエラーが出なくなると思います。「options.php
」の設定項目があまりにも多い場合は10000でも足りないかもしれません。
ほとんどの方は足りないどころか余るくらいだと思います。「一気に増やすのは不安…」という場合は「max_input_vars = 5000
」といった感じでもう少し数字を減らすといいかもしれません。
僕の環境だと3000でもいけました。3000でいけたので今も「max_input_vars = 3000
」のままです。再びできなくなったら数字を増やしたいと思っています。
max_input_vars = 3000
保存すると左下に「成功しました」とポップアップが表示されます。

正常に設定保存できるか確認する
「options.php
」の設定を保存した時、「設定を保存できませんでした。」エラーがでなくなります。正常に「設定を保存しました。」と表示されて保存されます。

僕の場合はWAF設定も合わせてオフにする必要がありました。
「max_input_vars = 10000
」は書き込んだままでいいですが、WAF設定は設定を変更する時だけオフにしてそれ以外の時は必ずオンに戻します。
【原因2】WAF設定
「WAF(ウェブアプリケーションファイアウォール)」が原因の場合は、「設定を保存できませんでした。」ではなく「閲覧できません (Forbidden access)」と表示されます。

この場合は下記記事を参考にしてみてください。契約しているサーバーの設定画面から一時的にWAF設定をオフにします。
感想
以上、PC版「WordPress」の「options.php
」ページで「設定を保存できませんでした。」と表示された時の対処法でした。
本設定が不要になった場合は書き込んだコードを「php.ini
」から削除しましょう。

余談ですが、デフォルトの画像サイズを「フルサイズ」にするときに今回の問題にぶつかりました。