WordPress

Advanced Custom Fieldsの設定が保存されない時の対処法

2018年10月18日

お手軽にカスタムフィールドを作成できるWordPressプラグイン「Advanced Custom Fields」

いつも通りフィールドを追加したはずなのに、何故か追加したフィールドが反映されない…

よく見ると、そもそも保存されてない!?

このままでは非常にまずいので。設定が保存できない原因を調べてみた。

結論:原因は「max_input_vars」の上限でした

WordPressのプラグインや設定を疑いましたが、どうやらサーバー側の設定に問題があったようです。

「max_input_vars」の上限がデフォルトだと1000に設定されていましたが、

Advanced Custom FieldsがPOSTの上限を超えてしまったせいで保存されなかったようです。
※ちなみにその時のフィールド数は70くらいでした。

クライアントの要望で、あれよこれよとカスタムフィールドを増やしていたので、いつの間にか膨大な数になっていたようです。

よって、「保存」ボタンを押しても設定が全く保存されていない…という現象が発生したということですね。

対処法

方法① php.iniに設定を追加する

php.iniに設定を追加してmax_input_varsの上限をアップさせる方法です。

max_input_vars = 5000

上記のコードをphp.iniに追加することで上限が1000から5000に上がります。

ただし、極端に上限を上げてしまうとセキュリティ的に問題がありますので注意して下さい。

追加するカスタムフィールドの量にもよりますが、max_input_varsの数値は2000〜3000くらいあれば問題ないと思います。

php.iniを変更できる環境なら、このやり方が一番簡単だと思います。

方法② 新しいフィールドグループを作る

「max_input_varsの上限は変更したくない!」
「そもそもphp.iniを弄るのは怖い!」

という人は新しいフィールドグループを作って対策しましょう。

2つに分けるので、管理がちょっとめんどくさいかもしれませんが…

2つのグループを繋げて投稿画面に表示すれば、問題なく使えます。

並びの順番に関してはオプションの「順序番号」で調整できます。(0が一番上にくる)

php.iniの変更で無駄なトラブルを避けたい場合はこちらの方法がオススメです。

まとめ

Advanced Custom Fieldsで設定が保存できなくなった時は、まず最初にmax_input_varsの上限を疑いましょう。

最初にプラグインの競合を疑って怪しいプラグインを順番に停止していく作業をやりましたが時間の無駄でした…

複数のフィールドグループを作りすぎると管理が大変なので、

個人的には①の「php.iniを変更する方法」がおすすめです。

-WordPress

Copyright © Silence-log , All Rights Reserved.