ワードプレスの「single.php」にループ処理は不要という話
doudonn 更新日:
ワードプレスの「single.php」
長らく常識に騙されていた。
大発見をしてしまったので紹介したい。
1、ループ処理は不要
<?php
if (have_posts()) :
while (have_posts()) : the_post();
?>
<?php
endwhile;
endif;
?>
記事・固定ページには何の意味もない
完全に無駄な処理になっています。
これが必要になる場合とはいったい?
もちろん、何のクエリーも発行しません。
公式のテンプレートでは使われているので、
やはり何かしらは必要になってくるのだとは思います。
しかしそれが何かが全くわからない。
ほとんどの場合は不要だろう。自分は使っていません。
2、ループ処理を無くした場合の処理速度
ループあり | ループ無し | |
処理時間(s) | 0.0001602 | 0 |
メモリ使用量 | 10.171875KB | 0KB |
処理速度は約0.0001秒向上。
メモリは10KB削減。
体感的にはわからないレベルですが、
ループ処理をしない方が明らかに速くなります。
まとめ
記事ページと固定ページはループ処理不要。
速度にこだわる人はループ処理は無くしておこう。
ただ、そう変わらないので心配な人は入れておきたい。
補足
トップぺージでのループはDBにアクセスしてデータを取得しています。
SELECT * FROM wp_posts WHERE ID = 1681 LIMIT 1
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1681) ORDER BY meta_id ASC
これを1記事ごとにやるので遅いのである。