WordPress中自定义wp_query的分页占用404错误页面

时间:2014-03-12 21:31:41

标签: php wordpress pagination

我有一个带有wp_query的循环,代码如下:

<?php
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query();
    $wp_query->query("showposts=2&paged=$paged");
?>

<?php if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
    <?php the_title() ?>
<?php endwhile; ?>
<?php else: ?>
    <article>
        <h2><?php _e( 'Sorry, nothing to display.', 'theme' ); ?></h2>
    </article>
<?php endif;  my_pagination(); wp_reset_query()?>

标准分页:

<?php 
function my_pagination()
{
    global $wp_query;
    $big = 999999999;
    echo paginate_links(array(
        'base' => str_replace($big, '%#%', get_pagenum_link($big)),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'prev_text'    => __('<i class="fa fa-chevron-left"></i>'),
        'next_text'    => __('<i class="fa fa-chevron-right"></i>'),
        'total' => $wp_query->max_num_pages,
    ));
}
?>

分页在页面上正确显示,但每当我点击分页链接时,它都会转到错误页面。

现在尝试了一切,不知道是什么原因。

艾米非常赞赏

3 个答案:

答案 0 :(得分:13)

也很难用它:)当我意识到每页编号的计算错误时更容易搜索,这是一个神奇的技巧:(将添加到functions.php)

function my_post_count_queries( $query ) {
  if (!is_admin() && $query->is_main_query()){
    if(is_home()){
       $query->set('posts_per_page', 1);
    }
  }
}
add_action( 'pre_get_posts', 'my_post_count_queries' );

答案 1 :(得分:1)

自定义帖子类型有同样的问题。我在“页面模板”中有一个循环,并且分页带有404.我猜这里的主要问题是自定义帖子类型的'slug'与'page-template'url相同。例如,如果你有一个自定义帖子类型slug'组合'和一个同名页面,那个页面上的分页给出了404.所以我只是将'slug'改为'archives-portfolio'并且它帮助了

答案 2 :(得分:0)

您可以更改查询

$wp_query= null; $wp_query = new WP_Query();
$wp_query->query("showposts=2&paged=$paged");

$wp_query = new WP_Query("showposts=2");

每页显示2个帖子,您可以查看和访问您的页面2。