程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> wordpress query

wordpress query

編輯:PHP基礎知識
 

一般提取分類目錄下的文章,都會使用query_posts()函數,這就歸功於query_posts()函數的強大,但成也蕭何敗也蕭何,如果大家對query_posts()函數不甚了解的話,就會造成另一個讓人頭痛的問題:因為使用query_posts()分頁功能失效。
先看前面的代碼:
<h1 class="jiaodianbj"><?php echo single_cat_title( '', false ) ?>&重症醫學</h1>
<?php query_posts(array('category__and'=>array(get_cat_id(single_cat_title('',false)),71)));?>
<?php while (have_posts()) : the_post(); ?>
<div class="jdnews">
<ul>
<li><span class="grayz">· </span><a href="<?php the_permalink(); ?>" class="black14"><?php echo cut_str($post->post_title,56); ?></a></li>
<li class="jdnews_x"><a href="<?php the_permalink(); ?>" class="gray"><?php echo truncate_excerpt(70); ?></a></li>
</ul>
</div>
<?php endwhile;wp_reset_query(); ?>
<div class="page_navi">
<?php page_nav($query_string); ?>
</div>
如果我們使用了分頁插件或自己編寫的分頁代碼,上面的query_posts()函數寫法將會導致首頁分頁功能失效,具體表現為不管大家點擊哪一個分頁,都只會顯示第一頁的內容,沒有出現我們期待的頁面跳轉至目標頁面的效果。
原因:query_posts()放在LOOP(循環)之前起到限定查詢條件的作用,如果你向 query_posts()傳遞參數,那麼wp_query會將你傳遞的參數生成一個sql查詢語句,同時它會忽略來自url的參數,更不會以此為查詢依據了,這就造成了一個有趣的現象,但是每個分頁內容都是一樣的,這就佐證了wp_query生成的查詢語句阻止了url參數查詢,最終導致了首頁分頁功能失效。知道了原因,問題就容易解決了。

2個最簡潔的解決方法:

1.直接將url的查詢參數傳入query_posts()函數裡

這個查詢參數是paged,代碼實現如下:

“query_posts(“cat=-16,-41,-3&paged=$paged″); ”

或者

// 下面這一行代碼是必須的,不然你的首頁不能分頁
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args =array(
// 這裡以下面的方式添加query_posts參數,具體參數可以參加官方文檔
'orderby' => comment_count,
'paged' => $paged
);
query_posts($args);
2.向query_posts()函數傳參時使用$query_string,繼續接收來自url的參數。

代碼實現如下:

“query_posts($query_string.”&cat=-3″);” #記住&符號千萬不能省略

 

最後將以上代碼作了如下修改:

<h1 class="jiaodianbj"><?php echo single_cat_title( '', false ) ?>&重症醫學</h1>
<?php query_posts(array($query_string.'posts_per_page=-1','category__and'=>array(get_cat_id(single_cat_title('',false)),71)));?>
<?php while (have_posts()) : the_post(); ?>
<div class="jdnews">
<ul>
<li><span class="grayz">· </span><a href="<?php the_permalink(); ?>" class="black14"><?php echo cut_str($post->post_title,56); ?></a></li>
<li class="jdnews_x"><a href="<?php the_permalink(); ?>" class="gray"><?php echo truncate_excerpt(70); ?></a></li>
</ul>
</div>
<?php endwhile; wp_reset_query();?>
<div class="page_navi">
<?php page_nav($query_string); ?>
</div>


這樣就解決了分頁功能不起作用的問題了

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved