我遇到了一个问题,我似乎无法在最新的wordpress版本3.4.2上进行分页。我已经开发了很多wordpress网站,所以这相当混乱。我有一个自定义帖子类型的新闻,我希望每页显示8个帖子,页面网址将是'/ news'。此页面正确显示,底部有正确的分页(使用WP-pagenavi)。当我点击第二页(/ news / page / 2)时,我得到了404页面。我非常感谢你解决这个问题的任何帮助。
<?php
/*
Template Name: News
*/
?>
<?php get_header(); ?>
<div class="container_12">
<div class="grid_12 box">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'post_type' => 'news', 'posts_per_page' => 8, 'paged' => $paged);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
?>
<div class="news">
<h4><?php the_title() ?></h4></a>
<span><?php the_time('F jS, Y'); ?></span>
<p><?php limit_excerpt("30"); ?></p>
</div>
<?php endwhile; ?>
<div id="pagination">
<?php if(function_exists('wp_pagenavi')) {
wp_pagenavi( array(
'query' =>$loop
));
}
?>
</div>
</div>
</div><!-- .container_12 -->
<?php get_footer(); ?>
[更新 - 解决方案]
所以我为此编写了一个解决方案。把它放在functions.php
中//Set for cpts
function cpt_init( $cpt )
{
add_rewrite_rule(
"{$cpt}/page/([^/]+)/?",
"index.php?pagename={$cpt}&pag=$matches[1]",
'top' );
}
//Only Add Once
add_filter( 'query_vars', 'cpt_query_vars' );
function cpt_query_vars( $query_vars )
{
$query_vars[] = 'pag';
return $query_vars;
}
//Add for each type
add_action( 'init', 'cpt_init', 'news' );
在您的循环中使用get_query_var('pag')
代替get_query_var('page')
答案 0 :(得分:1)
您是否尝试使用全局变量$ paged而不是将其归为自己的值?
这就是cutom主题中使用的内容:
<?php
global $paged;
$the_query = new WP_Query();
$the_query->query('post_type=post&posts_per_page=14&post_status=publish&paged='.$paged);
?>