怎麼優化下面的wordpress 程式碼,目前它是分別查詢,導致資料庫查詢次數過多,其實就是想實現 一次取得資料後,循環輸出 分類名稱,分類下的文章篇數。
<code><?php $loop_cate_id=array(1,3,8); //指定要输出的分类id $num=10;//指定每次循环输出的文章篇数 ?> <?php foreach($loop_cate_id as $key=>$value){ ?> <?php $posts = query_posts($query_string . "&cat={$value}&orderby=date&showposts={$num}" ); ?> <h2><a href="<?php echo get_category_link($value); ?>"><?php single_cat_title(); ?></a></h2> <ul> <?php while(have_posts()) : the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> <?php }?> </div> </code>
怎麼優化下面的wordpress 程式碼,目前它是分別查詢,導致資料庫查詢次數過多,其實就是想實現 一次取得資料後,循環輸出 分類名稱,分類下的文章篇數。
<code><?php $loop_cate_id=array(1,3,8); //指定要输出的分类id $num=10;//指定每次循环输出的文章篇数 ?> <?php foreach($loop_cate_id as $key=>$value){ ?> <?php $posts = query_posts($query_string . "&cat={$value}&orderby=date&showposts={$num}" ); ?> <h2><a href="<?php echo get_category_link($value); ?>"><?php single_cat_title(); ?></a></h2> <ul> <?php while(have_posts()) : the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> <?php }?> </div> </code>
開啟快取不就解決了?
1.現在問題就在分類太多,每次分類要查詢一次,那是否可以先查找該頁分類的所有數據,因為是查詢所有而且你有排序跟文章數要求,這裡可以與group by合用獲取要求數據。 (這樣首頁分類資料這塊應該是只有一次查詢)
2.然後在根據程式碼邏輯為其組成一個數組,數組可以參考我下面給你的格式。
<code>$postList[cate_id]['title']; $postList[cate_id]['article'][];//将文章按分类id当成键值存入数组 foreach($postList as $post) { foreach($post['article'] as $value){ } } </code>
自己頂下吧,期待有熟悉wp的朋友看看。
對wp不熟 也沒怎麼看你的程式碼。你可以用鍵值對 那樣就只用寫一個循環了。
先查所有分類組成鍵值對數組。