WordPressの外観のメニューを増やしていくと、ある時件名の現象がおこります。
その場合、PHPの制限によって生じている可能性があります。
カスタムメニュー関連プラグインを使っていたので、それを眺めること5分。
プラグインじゃないなぁと思って、PHP周りで何かないかネットで調べること5分、それっぽい情報を発見。プラグインのPHPファイルが2つしかなくてコード行数も大したことがなかったのも幸いしました。
WordPressのカスタムメニューが82個以上登録できねーおらおらーって時の対処方法
うーん、なにやら見たことのあるヘッダー画像で、タイトルの癖も例の人に似てるよなぁと思ったら、WordPressプラグイン開発のバイブル執筆者の一人、@miya0001さんのページじゃないですか!前はサイドメニューがあったような気がしたのですが、、、また今度お会いしたらお礼いっておこう(なにもプレゼントしませんけど...)。
ともあれ、ここに書かれた通りの問題でした。感謝!
対処方法
PHPのmax_input_varsの値を増やす(要PHP 5.3.9以降)対処方法になり、下記の3通りあります。この値を増やせば増やすほどDoS攻撃などによる負荷が増えるのため、限定的な範囲に留まる「1」や「2」がオススメです。このmax_input_varsの設定は
をチェックすると「PHP_INI_PERDIR」に当たります。
その場合には
に記載があるとおり、Apacheの場合には、.htaccess, httpd.conf, php.iniあたりのいずれかに設定する必要があるとのことです。
1. WordPressを導入した直下の「.htaccess」への記載
※設定は、設置したディレクトリ(フォルダ)以下のみで適応されます。
どの値が適切かは、先の@miya0001さんの記事を参照してみてください。
デフォルトの1000で、カスタムメニューは82、2000にしたら165とのことです。階層構造するとさらに少なくなるらしいので、足りなくなったら500か1000ぐらい増やしていけばよいと思います。
必要条件
Apacheの場合には、AllowOverride のOptions設定が必要2. ウェブシステムの設定(httpd.conf)に記載
※ウェブシステム管理者しか設定できません。
※設定は、設置したディレクトリ(フォルダ)以下のみで適応することが出来ます。
<IfModule mod_php5.c>
php_value max_input_vars 2000
</IfModule>
php_value max_input_vars 2000
</IfModule>
を追加。PHPが動作しているかどうかチェックしてます。
これを<Directory>配下など、必要なところに設定するっていうイメージですね。
3. php.iniへの記載
※ウェブシステム管理者しか設定できません。
max_input_vars=2000
max_input_varsの項目があれば、これを書き換え。なければ追加。
※PHPを利用するプログラム全体に影響を及ぼすので注意です。
2015年4月16日 @kimipooh
0 件のコメント:
コメントを投稿