自定义查询的分页不会让我返回到第1页

时间:2014-01-26 作者:mathiregister

我有一个自定义查询…

<?php
/**
 * The loop that displays the posts.
 */
?>

<ul class="post-items">
<?php

    $args = array(
        \'post_type\' => array(\'post\', \'wr_raffle\'),
        \'posts_per_page\' => 4,
        \'order\' => \'DESC\',
        \'paged\' => (get_query_var(\'page\')) ? get_query_var(\'page\') : 1,
    );

    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post(); ?>
在这个文件的底部我有这个…

?>      
</ul>

<div class="pagination wrapper clear">
    <?php
        $endsize = $midsize = 1;
        $type = \'plain\';
        $loop->query_vars[\'paged\'] > 1 ? $current = $loop->query_vars[\'paged\'] : $current = 1;

        // Sanitize input argument values
        if ( ! in_array( $type, array( \'plain\', \'list\', \'array\' ) ) ) $type = \'plain\';
        $endsize = (int) $endsize;
        $midsize = (int) $midsize;

        // Setup argument array for paginate_links()
        $pagination = array(
            //\'base\'          => @add_query_arg(\'paged\',\'%#%\'),
            \'format\'       => \'?page=%#%#blog\',
            \'total\'         => $loop->max_num_pages,
            \'current\'       => $current,
            \'show_all\'      => false,
            \'end_size\'      => $endsize,
            \'mid_size\'      => $midsize,
            \'type\'          => $type,
            \'prev_next\'     => false,
            //\'paged\'         => $loop->query_vars[\'paged\']
        );

        echo paginate_links( $pagination );
    ?>
</div>
嗯,我已经读了很多关于这方面的文章,但不明白为什么我的分页“几乎”有效。

我的分页在每个页面上都有效,只要我导航回第1页,分页链接就不起作用。

–在我点击第二页之前:http://cl.ly/TNHx

–单击第二页后:http://cl.ly/TN3o (因此第1页显然没有href)

你知道为什么我的第一页链接不起作用吗?

你好Matt

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

paginate_links 如果使用默认设置,则在某些(许多)情况下无法正常工作base. 如果您查看生成的源代码,您可以看到正在发生的情况:如果您位于除第一页以外的任何页面上,使用默认基--%_%-- paginate_links 将打印空href=\'\' 返回到第一页的链接。当然,浏览器会将其解释为“此页面”,因此指向第一页的链接不起作用。我认为这很像一个bug。

要绕过它,请通过base 参数如下:\'base\' => site_url(\'%_%\'),, 或\'base\' => get_permalink().\'%_%\',. 上下文关系到你选择哪个,所以要小心。

结束