フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【Advanced Custom Fields】カスタムフィールドの登録上限を変更する方法

.htaccess
Advanced Custom Fields
Custom Field Suite
php.ini
Smart Custom Fields
WordPress
カスタムフィールド

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

WordPressプラグインの「Advanced Custom Fields」を使用していると、登録したはずのカスタムフィールドが消えてしまう場合があります。
プラグインの設定を見直しても問題が解決しない場合、サーバーやPHPのphp.iniの設定に問題がある可能性があります。

この記事では、そのような状況に直面した場合の原因と解決方法を詳しく説明します。

php.iniのmax_input_varsの設定が原因

max_input_varsとは

max_input_varsは、PHP5.3.9から導入された設定で、1度のリクエストで送信出来るPOST数を最大値を設定出来ます。
この設定はphp.iniファイルで設定されていて、デフォルトでは「1000」となっています。

max_input_vars設定が存在する理由は、Webアプリケーションがユーザーからの大量のデータを処理する際に、サーバーのリソースを効率的に管理するためです。
この設定により、1つのリクエストに含まれるPOST数が制限され、サーバーの負荷やパフォーマンスに影響を与える可能性が軽減されます。

現在の設定を確認

PHPのphpinfo()関数を使用すると、簡単にmax_input_varsの現在の設定値を確認出来ます。

<?php <?php phpinfo(); ?>

この画像のサーバーでは、max_input_varsの設定は「1000」であり、デフォルトの設定のままということがわかります。

カスタムフィールドの登録上限を変更する方法

ここからが本題です。

「Advanced Custom Fields」で登録したカスタムフィールドが消える場合の解決方法を紹介します。
同様に、「Smart Custom Fields」や「Custom Field Suite」など他のカスタムフィールドを管理するプラグインも、以下の方法で解決出来ます。

解決方法は非常に簡単で、max_input_varsの設定値を変更することです。

変更方法は「.htaccess」を利用する方法と、「php.ini」を利用する方法の2つがあります。
PHPのini_set()関数で変更することは出来ないので注意が必要です。

.htaccessの場合

以下のように、「.htaccess」に設定を追加します。

php_value max_input_vars 2000

この例では、上限を2000に変更しています。

php.iniの場合

以下のように、「php.ini」に設定を追加します。

max_input_vars = 2000

この例では、上限を2000に変更しています。

まとめ

いかがでしたか?
「Advanced Custom Fields」などで登録したカスタムフィールドが消える場合、プラグインの設定が原因ではなく、php.iniのmax_input_varsの設定が原因であることがあります。
この上限をアップすることはセキュリティ的に好ましくありませんが、この設定を変更する場合は本当に必要かどうか検討した上で変更するようにしましょう。