※ 本記事はプロモーションを含みます

Post Snippetsは登録数に上限あり?登録・更新・削除・保存ができない場合の対処法

リンクユニット(adsense)

どうも甘パパです。

Post Snippets(ポストスニペット)という便利なWord Pressプラグインがあります。

Post Snippetsは、あらかじめ登録しておいたHTMLやPHPのコードをショートコードで呼び出すことができるプラグインです。

私はこのPost Snippetsを使って、利用頻度の高い文章やアフィリエイトタグなんかを一括で管理しています。

物凄く便利なのですが、Post Snippetsに依存し過ぎている部分が強いので、いつも「Post Snippetsが使えなくなったらどうしよう…」と日々おびえています。

まぁ最悪使えなくなってしまったら、潔く諦めて他のプラグインを利用するか自分で管理ツールを作成しますが…。幸いPost Snippetsには登録している内容をエクスポートできる機能があるので最悪どうにかなると考えています。

とまぁーそんなPost Snippetsプラグインなのですが、急に反応しなくなるという現象に遭遇しました。いつも通り新規でショートコードを登録しようとしたところ画面はリフレッシュされるものの実際には登録されなくなりました。

ちなみに更新も削除もできませんでした。通常であれば更新すれば以下のように「Snippets have been updated.」とメッセージが表示されますが、メッセージも何も表示されませんでした。とにかく無反応なイメージです。

もしかして上限あるの・・・?」と思いGoogle先生に軽く聞いてみてもこれといった答えを見つけられず…。仕方なく全文英語のPost Snippetsの公式フォーラムを一つずつ確認していったところ同じ現象に遭遇している人を発見しました。

その人は、php.iniの「max_input_vars」の値を変更することで解決できたということだったので私も同じように「max_input_vars」の値を変更しました。

正確には「max_input_vars」が定義されていなかったので新規に以下の定義をphp.iniに追加しました。その結果、無事登録・更新・削除ができるようになりました。

max_input_vars = 10000

max_input_varsとは
max_input_varsは、入力変数を最大何個まで受け付けるかを指定するオプションです。この制限は、スーパーグローバル $_GET、$_POST そして $_COOKIE にそれぞれ個別に適用されます。PHP5.3.9以降の場合、デフォルト値は「1000」に設定されています。

ちなみに「max_input_vars」の変更は、php.ini で変更する方法以外にも .htaccessで変更することもできます。.htaccessで変更する場合は以下の記述を.htaccessに追加もしくは変更してください。

php_value max_input_vars 10000

この設定で解決できるということは、Post Snippetsでは、登録・更新・削除の時に一つ一つの行をPOSTしてるんですね。ただエラーになった時点で1000行も登録してなかったんですが…。

もしかすると1行につき7つの値をPOSTしてる可能性もありますね。それだと10行で70、100行だと700、1,000行だと7,000POSTしていることになります。

一般的には10,000もPOSTすることはないと思います(業務系のシステム等なら可能性はあります)。POSTの許容数が多ければ多いほどセキュリティ的にはよろしくない感じがします。そのためmax_input_varsの設定値を常に10,000に設定しておくのはどうかと思いますが、しばらくは様子を見てみようと思います。何かあれば追記したいと思います。

もし同じような現象でPost Snippetsが無反応になっている人は、ぜひ「max_input_vars」の値を変更してみてください。おそらく解決できると思います。