エス技研

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.

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

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

  関連記事

Multi RatingでWordPressの口コミサイトを構築

口コミの評価点を投稿する機能に特化。評価点を複数設定することができ、投稿後の評価点を編集することができる数少ないプラグイン。日本語にも対応。おススメ。

Custom Field Templateで簡単にカスタムフィールドをフル活用

カスタムフィールドを簡単に設定するプラグイン。簡単にカスタムフィールドが管理で来て作業効率が数倍にアップします!

WordPressの管理画面と公開画面を別のドメインに分離して運用する方法

管理画面と公開画面のURLを違うドメインで設定・運用する方法を解説。管理画面と公開画面の場所を分離することでセキュリティ面でのメリットが大きくなります。

アクセス5倍増!FC2、seesaaからWordPressに引越結果をレポート

FC2、seesaaからWordPressに引越しでアクセス数がどう変わるかのレポート。canonical、meta refresh設定とWordPressの集客力の検証しています。

WordPressで WPtouchを入れてモバイルテーマを「OFF」にしたら元に戻れなくなった

WPtouchを入れてモバイルテーマを「OFF」にしたら元に戻れなくなった。これは「wp_footer」の設定に問題があるからだった。

WordPressで月極駐車場検索サイトを構築し無料公開・使ったプラグインの紹介も

月極駐車場を検索するシステムをWordPressで構築。そのアナウンスと構築するために利用したプラグインの紹介。構築にどれくらいの期間がかかるのかの紹介。

WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法

WordPressのカテゴリやタクソノミーに編集する項目を追加する方法の解説。Advanced Custom Fieldsを使うと簡単。テンプレートに記述する方法も解説。

get_categories、get_termsでカテゴリとタクソノミーのターム一覧の編集方法

get_categories()関数やget_terms()関数を使ってタクソノミーのタームを取得し検索処理の部品を作るプログラム作りその解説をしています。

seesaaからWordPressに引越。インストールなど必要な全てを解説

seesaaブログからWordPressへの引越し解説。他のブログにはないseesaaブログからcanonicalとリダイレクトの設定方法を実装!

WP Basic AuthなどWordPressにBasic認証を設定するプラグインのまとめ

WordPressにBasic認証を設定する方法のまとめ。プラグインを使う方法と.htaccessで設定する方法を紹介。公開側、ログインページをそれぞれ設定できます。