記事数が多すぎて画面が真っ白になる時の対処法[WordPress]
大量の記事を1つのページにループで表示しようとすると画面が真っ白になる場合の対処法を紹介します。
まえがき
WordPressで1,000個くらいの大規模な記事データをアーカイブにまとめて一気に表示しようとすると、普通のレンタルサーバーだとループ処理が完了する前に処理が止まってしまいます。
この現象はサーバーのphpの設定で使用するメモリに制限が掛かっていることが原因の場合が多いです。
なのでphp.iniの「memory_limit」の値を変更して制限を外すことが出来る環境であれば、解決できる可能性があります。
しかしながらレンタルサーバーによっては「memory_limit」の値を編集できない場合もあります。
「memory_limit」の制限を外す
php.iniで「memory_limit」の値を変更できるなら解決したようなものです。
「memory_limit」の値を「-1」にしてください。
php.iniを直接編集できる場合は下記の様に設定します。
memory_limit = -1;
サーバーのコンパネからphp.iniを編集する場合は「memory_limit」の値に「-1」と入力してください。
設定が変更されたかどうか確認する
蛇足かもしれませんが。。。
ちゃんと設定が変わったか確認したい場合は、まず下記内容のphpファイルを作成します。ファイル名は何でもいいんですがここでは「info.php」とします。
<? phpinfo();
「info.php」をサーバーにアップしてブラウザでアクセスしてください。
phpの設定内容が確認できます。表示されている項目から「memory_limit」を探し(文字列検索すると早い)値を確認します。
「-1」になってたらOKです。
まとめ
これだけのために2時間ほどハマったので誰かが同じところで躓かないように記事として残しておきます!
とりあえず3,500件くらいの記事を1ページの中に一気に表示できるのは確認したのですがサーバーのスペックにもよってくるのでしょうか。
ただ3,500件もループ回すとやっぱり重くて使い物になりません。
こんな時にMTみたいに静的ファイルを書き出せないかな~とか思うんですけどググっても「StaticPress」プラグインの情報しか出てこない。
でも「StaticPress」はこの記事執筆時で最新バージョンのWordPress4.1.1で動作しない。
しょうがないのでWordPressで特定のページを静的ファイルに書き出すプログラムを作りました。
といってもプログラム自体はコピペコピペで超簡単だったのですが。
次はWordPressで特定のページだけ静的ファイルに書き出す方法を紹介しようと思います。
本題からずいぶん話が逸れてしまいましたがこの記事が誰かのお役に立てれば幸いです。