エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Advanced Custom Fieldsのカスタムフィールドの登録上限が max_input_varsに影響する問題の対処方法

      2017/03/09

Advanced Custom Fieldsのカスタムフィールドには登録の上限がある問題

 

PHPの設定である max_input_varsが影響し上限が発生

 
Advanced Custom Fieldsのカスタムフィールドの登録項目数には上限があります。
 
登録したはずの項目が登録されず、「あれ?この項目、追加したはずなのに??」という不具合につながります。
 
この不具合は、Advanced custom Fieldsのプログラムの処理上の問題、上限ということではなく、各サーバの PHPの設定(制限)の上限に達するためにそれ以上項目が登録できなくなるという不具合です。
 
より具体的には、php.ini の max_input_vars という項目の設定に影響されるものです。
 
この「max_input_vars」は、入力変数として受け取る数の上限を指定するもので、PHPのデフォルト設定は 1,000となっています。
 
そのため、1,000個を超える入力変数があった場合は、Warningを発生させて、1,000を超える変数は削除されて処理されます。
このため、Advanced custom Fieldsのカスタムフィールドとして入力された変数が 1,000を超えると、その部分は削除され、入力はなかったものとして処理されますので、最初に書いた「追加したはずなのに追加されていない」という不具合が発生することになります。
 
これは、Dos攻撃を防ぐ目的で PHP 5.3.9から追加された項目で、設定された項目数以上の変数が送られてきてもそれを無視するため、Dos攻撃によるサーバの負荷を軽減することができるようになっています。
 
 
そのため、Advanced custom Fieldsで、項目を登録する際にこの入力変数の数の上限に達すると、それ以上の項目を登録することができなくなります。
 
また、PHPの初期設定の変数数 1,000の場合で Advanced custom Fieldsの登録できるカスタムフィールドの項目数の上限がいくつなのかは、設定するフィールドの条件に寄ります。
 
カスタムフィールドには種類がいろいろあり、オプション設定が多いフィールドを多く選んでいる場合は、設定できるフィールド数が少なくなります。
すごくざっくりとした感じでは 60項目から 80項目くらいの間で上限になります。
 
 
ちなみに、「月極駐車場検索エース」では、住所の情報として都道府県、市区町村のリストを持っているのですが、こういうリストを持つと、これだけで 1,000の上限に迫ってしまうのです。
 
 


 

Advanced custom Fieldsの登録項目の上限の対応方法

 
Advanced custom Fieldsの登録項目の上限がある問題に対する対処方法といては、下記の 2つがあります。
 

  • php.ini の max_input_vars の設定を変更
  • フィールドグループを分割

 
 

php.ini の max_input_vars の設定を変更

 
1つは、PHPの設定である max_input_vars の上限数を増やすという方法です。
この方法を対処方法として書いてあるブログもありますが、max_input_vars の上限数を増やすという方法はおススメしません。
 
先に解説しましたが、そもそもこの max_input_varsの設定があるのは、Dos攻撃があった場合の負荷軽減のためのものですので、万一の事態を考えると、max_input_varsの設定を増やす変更は避けるべきです。
 
 

フィールドグループを分割

 
必要な max_input_varsの制限を変更せずに対応する方法としては、私は「フィールドグループを分割する方法」をお勧めします。
 
方法は簡単で、1つのフィールドグループに入りきらないフィールドを分割し、それを組み合わせるだけです。
 
 
たとえば、先にも説明した「月極駐車場検索エース」では、住所関連の項目だけで max_input_varsの上限に達してしまいます。
 
そのため、フィールドグループを
 ・駐車場情報/基本項目
 ・駐車場情報/住所項目
 ・駐車場情報/詳細項目
といったように分割します。
 
 
そして、
「基本項目」では、駐車場の管理番号、名称などの項目を
「住所項目」では、都道府県、市区町村、住所、地図情報などの項目を
「詳細項目」では、駐車場の賃料、契約条件、メッセージなどの項目を
というように項目を分割して設定します。
 
個別に設定したフィールドグループは、Advanced Custom Fields管理画面の全項目完全解説・カスタムフィールド決定版!/オプション設定で解説していますが、フィールドグループの並び順を設定する「順序番号」を利用して想定通りの順番に並べることで、多くのカスタムフィールドを必要とする画面であっても希望通りの入力設定を行うことができるようになります。
 
この方法では、Dos攻撃に対するリスクを増大することなく対処することができますね。
 
 

フィールドグループを分割するメリット

 
この方法を利用することで、さらなるメリットがありました。
 
たとえば、先ほど説明した「月極駐車場検索エース」では、駐車場の情報と、管理会社の情報と、いずれの登録情報にも都道府県・市区町村の入力項目があります。
 
普通にカスタムフィールドを設定する場合は、それぞれに同じ都道府県・市区町村を設定する必要があるのですが、このようにフィールドグループを分割する方法を利用することで、簡単に複製することができ、カスタム投稿や、ほかのサイトでも便利に流用することができるようになるのです。
 
会員登録用に、氏名や住所、電話番号といったよく使う項目をあらかじめグループとして作っておく、といった使い方ですね。
 
 
フィールドグループを複製する方法については「Advanced custom Fieldsのフィールドグループを簡単に複製する方法」を参考にしてください。
簡単に複製できますので、項目を分割する方法のメリットをより感じてもらえるでしょう。
 
 

Advanced Custom Fieldsの関連記事

 
Advanced Custom Fields管理画面の全項目完全解説・カスタムフィールド決定版!
Advanced Custom Fieldsの全項目解説・公開側表示編集編
WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法
Advanced Custom Fieldsの関数の全部の使い方を調べてみた
Advanced Custom Fields(ACF)のアドオン・ギャラリーの使い方解説
Advanced Custom Fields(ACF)のアドオン・繰り返しフィールドの使い方解説
WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーとは?
Advanced Custom Fieldsのカスタムフィールドの登録上限が max_input_varsに影響する問題の対処方法
Advanced custom Fieldsのフィールドグループを簡単に複製する方法
Advanced custom Fieldsの条件判定活用方法・フィールドグループ複製より便利

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

BackWPupでバックアップ・Jobの設定・保存する情報の設定

BackWPupその2。Jobのバックアップの基本部分と対象の設定についての解説。

WordPressの画像ファイルアップロード・メディアの使い方解説

画像ファイルをアップロードするメディアの使い方解説。アップロードしたファイルの管理や編集、ファイルのURL、アップロード先の解説。

WP jQuery LightBoxでWordPressの画像を簡単に見やすくする方法解説

画像のリンクに対して LightBox効果を簡単に追加するプラグイン。インストールして数項目にチェックを入れるだけで設定完了。属性を追加することで機能も追加できる。

WordPressの Link Managerでブックマーク(リンク)の管理を行う

ウィジェットのブックマーク(リンク)はプラグイン化された「Link Manager」を使って設定します。その使い方の解説です。

Export to Textで WordPressを csv出力

WordPressのデータを csv出力する Export to Textの使い方を解説しています。

WordPressの一覧ページのテンプレートの種類とファイルの設定

ファイル名に従って一覧ページのテンプレートは選択される。ルールに従ってファイル名を付けることで任意のカテゴリ、タクソノミーごとのテンプレートを指定可能。

wp_mail()関数でWordPressのスパム対策済のメールフォーム作成

WordPressでメール送信フォームを作成するための関数「wp_mail()」の使い方の解説。CC、BCC、添付ファイルも HTMLメールも設定可能。

BackWPupでWordPressのDBもファイルもバックアップ

BackWPupその1。BackWPupとWordPressのバックアップについての解説。

WP Customer ReviewsでWordPressにオリジナルの口コミサイトを構築

口コミサイトを構築するためのプラグイン。独自フォームによるレビュー、評価点を投稿でき、入力項目の追加もできます。

WordPressグローバルナビ・メニューの編集の方法解説

グローバルナビであるメニューの編集方法の解説です。メニューの管理画面の使い方の解説と設定のポイント、テーマによって設定する項目が違う点などを解説します。