麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > Wordpress > 正文

wordpress中query_posts()與WP_Query()分頁不正確

2024-09-07 00:51:00
字體:
來源:轉載
供稿:網友

query_posts()與WP_Query()分頁不正確的問題困擾了我大半天,百度+谷歌數小時也無果,大多數解決方案都沒有注意到posts_per_page值過小不能覆蓋后臺閱讀中的設置,正當要放棄的時候找到了解決辦法.

首先應該清楚,query_posts()應用于主循環,而WP_Query()用于生成次級循環.

不理解?比如,我有一個特殊的分類頁面需要指定顯示一定數量的文章,這個顯示數量與其他分類不同,不能用后臺的“設置→閱讀→博客頁面至多顯示”來統一設置,那么就需要給這個特殊分類寫一個模板,例如:category-wordpress-themes.php,此時需要用到query_posts()函數,通過參數:posts_per_page來實現控制顯示的文章數量.

如果只是想在邊欄等列出某分類文章列表或最新文章之類的文章列表,那么應該使用WP_Query()函數而不是query_posts(),一個頁面應該最多只出現一次主循環.

按照上例所述,當我們制作了這樣一個分類頁后,如果需要翻頁功能,就需要這樣一行代碼:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

這是用來獲取當前頁碼的,還需要在query_posts()中添加參數paged,代碼片段如下:

  1. $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
  2. $args = array
  3. 'posts_per_page' => 20, 
  4. 'paged' => $paged
  5. 'post_status' => 'publish'
  6. 'cat' => $cat
  7. ); 
  8. query_posts($args); 
  9. while (have_posts()) : the_post(); 
  10. echo '<li>'
  11. echo '<a href="' . get_permalink() . '">' . the_title_attribute('echo=0') . '</a>'
  12. echo '</li>'
  13. endwhile

看上去似乎沒什么問題,可以正常翻頁了,事實不然,當我們把posts_per_page的值改為5,而后臺“設置→閱讀→博客頁面至多顯示”的值默認是10,翻頁就會變得不正常。

雖然這樣的情況極難發生,但為了代碼更完美無錯,我們可以在function.php中添加如下代碼解決這個問題:

  1. function custom_posts_per_page($query){ 
  2. if( is_category('wordpress-themes')  && $query->is_main_query() ) { 
  3. $query->set('posts_per_page', 20); 
  4. add_action('pre_get_posts''custom_posts_per_page'); 

這里設置的posts_per_page值需與query_posts()函數中的相同,注意判斷部分,僅在我需要的分類模板中應用,且判斷了是否為主循環,否則會影響次級循環的輸出結果.

請注意:使用query_posts()之后必須使用wp_reset_query()重置循環,否則會影響到其他循環的輸出結果,wp_reset_query()應添加在翻頁代碼的后面.

如果你非要使用WP_Query(),同時也需要具有翻頁功能,那么就要修改你的翻頁代碼,通常翻頁代碼都封裝在一個函數內,那么就要給這個函數傳遞參數,當前對象,例如以下代碼:

  1. $args = array
  2. 'cat' => $cat
  3. 'posts_per_page' => 10, 
  4. ); 
  5. $my_query = new WP_Query($args); 
  6. while ($my_query->have_posts() ) : $my_query->the_post(); 
  7. echo '<li><a href="' . get_permalink() . '" rel="bookmark">' . the_title_attribute('echo=0') . '</a></li>'
  8. endwhile

需要將$my_query傳遞給翻頁函數,替代默認的$wp_query,使用WP_Query()之后必須使用wp_reset_postdata();重置循環.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产1区在线 | 免费黄网站在线播放 | 在线播放亚洲精品 | 国产视频在线播放 | 国产成年人网站 | 欧美毛片 | 黄色影院在线观看视频 | 神秘电影91 | 久久毛片免费观看 | 九艹在线 | 中文字幕亚洲一区二区三区 | 国产亚洲精品成人 | 国产一区视频在线观看免费 | 国产自在自线午夜精品视频在 | 蜜桃视频最新网址 | 久久网国产 | 国产精品成人一区 | 黄色影院在线看 | 久久久久久久久久综合 | 日日爱影院 | 精品国产乱码久久久久久丨区2区 | 免费网站看v片在线a | 欧美乱淫 | 久久影院免费观看 | 日本欧美一区 | 亚洲成人中文字幕在线 | 在线看91 | 美国黄色小视频 | 日产精品久久久一区二区福利 | 精品亚洲一 | 午夜视频观看 | 国产精品久久久久久久av | 亚洲精品日韩色噜噜久久五月 | 久久中文字幕在线观看 | 免费看黄色三级毛片 | 成人午夜免费看 | 成人情欲视频在线看免费 | 日韩av电影免费在线观看 | 欧美成在线视频 | 91精品国产九九九久久久亚洲 | 爱草在线 |