2012年8月17日 星期五

wordpress 用了wp_query但卻跟基本設定的每頁數量不同,導致分頁pagenavi出錯

wordpress 用了wp_query但卻跟基本設定的每頁數量不同,導致分頁pagenavi出錯

舉例
我新創一個$wp_query


$wp_query = null;
$wp_query = new WP_Query();
$showposts = 2;
$args = array(
'post_type' => 'news_post',
'posts_per_page' => $showposts,
'paged' => $paged
);
query_posts($args);

然後在下面執行迴圈
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//肚傷心

<?php endwhile ?>
<?php endif ?>

再來<?php native_pagenavi(); ?>//分頁導覽

但是我在基本後台管理設定 每頁出現9篇
而我這裡想要每頁出現2篇

我這個news_post只有4篇數量

開始出現bug了
第一頁會2篇 也有2分頁 很棒
但是按到第2頁時 出現404

後來搞很久才發現
wp會預設用台數量來使用
也就是第2頁時  他會2x9=18
但我並沒有18個品項我只有4個阿 於是就出現404

所以在國外找到解決辦法
http://wordpress.stackexchange.com/questions/7687/pagination-with-wp-query-is-buggy-working-for-some-pages-but-not-the-others

在function.php加入底下code


add_action( 'pre_get_posts', 'wpse7687_pre_get_posts' );
function wpse7687_pre_get_posts( &$wp_query ) {
  if ($wp_query->query_vars['category_name'] == 'latest-news'){
    $wp_query->query_vars['posts_per_page'] = 4;
  }
}

他們是這麼說的

wp會有預設的query,因此可以直接更改或替換query
所以上面的code就是
"當你下的$wp_query的category_name是'latest-news'時 就會自動替換成每頁4個"


沒有留言:

張貼留言