自定义页面模板上的分页

时间:2011-10-25 作者:joeljoeljoel

我已经设置了一个名为“事件”的自定义帖子类型。出于我不想进入的原因,我选择不使用archive-events.php 作为我的活动的存档模板。相反,我决定创建一个自定义页面模板,page-upcoming-events.php, 用作存档。

我在这个模板中编写了一个自定义查询来引入事件。我还将每页的posts\\u限制为4。我已使用成功添加分页链接previous_posts_link()next_posts_link() 功能。

这些函数正在生成指向预期URL的链接:/upcoming events/page/2/等。

在第1页,我得到了前4个事件和下一个事件链接。

我遇到的问题是,当我转到第2页时,我得到的是404错误,而不是事件5-8。

如何向自定义页面模板正确添加分页?

1 个回复
SO网友:mgyura

这就是我为寻呼所做的。我希望它能帮助你走上正确的道路,这可能会对你正在尝试的事情造成过度伤害。。。

首先,我设置$分页:

$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
然后构建$args数组,确保调用:

\'paged\' => $paged
运行查询,包括分页所需的函数(这是一个示例,请更改所需的内容以使其成为您的):

        //the query using arguments above
        $wp_query = new WP_Query( $args );

        //use the query for paging
        $wp_query->query_vars[ \'paged\' ] > 1 ? $current = $wp_query->query_vars[ \'paged\' ] : $current = 1;

        //set the "paginate_links" array to do what we would like it it. Check the codex for examples http://codex.wordpress.org/Function_Reference/paginate_links
        $pagination = array(
            \'base\' => @add_query_arg( \'paged\', \'%#%\' ),
            //\'format\' => \'\',
            \'showall\' => false,
            \'end_size\' => 4,
            \'mid_size\' => 4,
            \'total\' => $wp_query->max_num_pages,
            \'current\' => $current,
            \'type\' => \'plain\'
        );

        //build the paging links
        if ( $wp_rewrite->using_permalinks() )
            $pagination[ \'base\' ] = user_trailingslashit( trailingslashit( remove_query_arg( \'s\', get_pagenum_link( 1 ) ) ) . \'page/%#%/\', \'paged\' );

        //more paging links
        if ( !empty( $wp_query->query_vars[ \'s\' ] ) )
            $pagination[ \'add_args\' ] = array( \'s\' => get_query_var( \'s\' ) );

        //run the query
        if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
剩下的就是告诉页面您希望页面链接的位置:

        //print the paging links to the page
        echo \'<div class="pydPaging">\' . paginate_links($pagination) . \'</div>\';
同样,这可能有点过头了,但效果很好。

结束

相关推荐

Broken category pagination

出于某种原因,下面的代码一直工作到我到达第三页并给出404。不使用任何插件就可以修复它吗?<?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(\'cat=\'. $id .\'&posts_per_page=4&paged=\'.$paged); while ($wp_query->have_posts()) : $wp_query