我有一个调用函数的自定义页面,比如generatelist
generatelist函数调用get\\u pages(),并使用for each遍历数组,并构建一个包含来自页面元数据的各种数据的列表(是的页面,不是posts!出于某种原因)
这些函数返回列表(实际上是一个页面目录),并将其回显到自定义页面的内容区域。
由于列表越来越长(随着购买页面的增加),我想在列表中添加分页(同时保留页面的其余部分,包括列表后面的自定义页面,当然还有主题的其余部分:页脚、侧边栏等)
我看到了PageNavi插件,但没有弄清楚应该在哪里使用模板标记,以及如何在分页之前控制条目数。
这个问题和这个相似one 但这并没有真正得到答案。
很高兴能在这方面提供任何帮助(实际上我不是php爱好者,更像是python类型的人,但构建这个插件是为了帮助朋友,现在需要扩展这个插件)
最合适的回答,由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();
?>