使用Get_Pages函数创建的自定义列表中的分页

时间:2012-01-07 作者:alonisser

我有一个调用函数的自定义页面,比如generatelist

generatelist函数调用get\\u pages(),并使用for each遍历数组,并构建一个包含来自页面元数据的各种数据的列表(是的页面,不是posts!出于某种原因)

这些函数返回列表(实际上是一个页面目录),并将其回显到自定义页面的内容区域。

由于列表越来越长(随着购买页面的增加),我想在列表中添加分页(同时保留页面的其余部分,包括列表后面的自定义页面,当然还有主题的其余部分:页脚、侧边栏等)

我看到了PageNavi插件,但没有弄清楚应该在哪里使用模板标记,以及如何在分页之前控制条目数。

这个问题和这个相似one 但这并没有真正得到答案。

很高兴能在这方面提供任何帮助(实际上我不是php爱好者,更像是python类型的人,但构建这个插件是为了帮助朋友,现在需要扩展这个插件)

1 个回复
最合适的回答,由SO网友:Ján Bočínec 整理而成

我建议使用get_posts 因为您可以在那里设置“paged”参数。

<?php

// Posts Per Page option
$ppp = 3;

// find out on which page are we
$paging =  isset( $_GET[\'list\'] ) && ! empty( $_GET[\'list\'] ) ? $_GET[\'list\'] : 1 ;
// arguments for listed pages
$args = array(
    \'posts_per_page\' => $ppp,
    \'post_type\' => \'page\',
    \'paged\' => $paging,
);

$pages = get_posts( $args );

if ( count( $pages ) > 0 ) {
    echo \'<ul>\';
    foreach ( $pages as $post ) {
        // http://codex.wordpress.org/Function_Reference/setup_postdata
        setup_postdata($post);
        echo \'<li><a href="\'.get_permalink( $post->ID ).\'">\'.$post->post_title.\'</a></li>\';
    }
    echo \'</ul>\';
} else {
    echo \'<p>No pages!</p>\';
}

$args = array(
    // set arguments for your pages here as well but be aware some parameters are different! http://codex.wordpress.org/Function_Reference/get_pages
    // or you can use http://codex.wordpress.org/Template_Tags/get_posts instead and exclude the "paged" argument
);

// how many pages do we need?
$count_pages = ceil( count( get_pages($args) ) / $ppp );

// display the navigation
if ( $count_pages > 0 ) {
    echo \'<div>\';
    for ($i = 1; $i <= $count_pages; $i++) {
        $separator = ( $i < $count_pages ) ? \' | \' : \'\';
        // http://codex.wordpress.org/Function_Reference/add_query_arg
        $url_args = add_query_arg( \'list\', $i );
        echo  "<a href=\'$url_args\'>Page $i</a>".$separator;
    }
    echo \'</div>\';
}

// http://codex.wordpress.org/Function_Reference/wp_reset_postdata
wp_reset_postdata();

?>

结束

相关推荐

pagination with sticky posts

以下代码在第1页上显示8篇文章。然而,在所有后续页面上,仅显示7篇帖子。我认为这是因为第1页也会显示粘性帖子(其他页面不会显示)。如何解决这个问题(我需要8篇帖子和所有页面)</或者,贴子应该显示在所有页面上,而不仅仅是第一页我的原始代码:$header_query = new WP_Query( \'orderby=date&posts_per_page=7&paged=\'.$page_to_load.\'&ignore_sticky_posts=0&#x