您应该检查代码,因为您有一些句子会使分页函数返回空值。例如,下一段代码将使您退出,因为您位于页面模板中,\\u singular()返回true
:
if( is_singular() )
return;
此外,您正在使用全局
$wp_query
对象,但您正在使用
get_posts()
获取页面列表,而不是主查询。所以
$wp_query->max_num_pages
是cero,因为主查询是针对单个页面的。因此,这段代码也可以帮助您:
global $wp_query;
/** Stop execution if there\'s only 1 page */
if( $wp_query->max_num_pages <= 1 )
return;
删除两个代码块是不够的,因为您再次使用全局
$wp_query
对象以获取最大页数:
$max = intval( $wp_query->max_num_pages );
此外,如果将页面模板设置为博客的首页,则
paged
var在查询中不起作用,您应该使用
page
查询变量。
我建议你再想想你想做什么。查看代码,您试图列出ID为7的页面的子页面,并对结果分页。将子页面转换为类别下的普通帖子并在标准类别模板中显示它们似乎更容易。
如果您真的需要这些项目是子页面,那么最好使用new WP_Query()
对象,而不是get_posts()
函数并获取分页函数的最大页数:
$args = array(
\'cild_of\' => \'7\',
\'meta_key\' => \'Type\',
\'post_type\' => \'page\',
\'post_status\' => \'publish\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
\'posts_per_page\' => \'20\',
\'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ),
);
$query = new WP_Query($args);
$max_num_pages = $query->max_num_pages;
wpbeginner_numeric_posts_nav($max_num_pages);
和分页功能:
function wpbeginner_numeric_posts_nav($max_num_pages = 0) {
/** Stop execution if there\'s only 1 page */
if( $max_num_pages <= 1 )
return;
$paged = get_query_var( \'paged\' ) ? absint( get_query_var( \'paged\' ) ) : 1;
/** Add current page to the array */
if ( $paged >= 1 )
$links[] = $paged;
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max_num_pages ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo \'<div class="navigation"><ul>\' . "\\n";
/** Previous Post Link */
if ( get_previous_posts_link() )
printf( \'<li>%s</li>\' . "\\n", get_previous_posts_link() );
/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? \' class="active"\' : \'\';
printf( \'<li%s><a href="%s">%s</a></li>\' . "\\n", $class, esc_url( get_pagenum_link( 1 ) ), \'1\' );
if ( ! in_array( 2, $links ) )
echo \'<li>…</li>\';
}
/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? \' class="active"\' : \'\';
printf( \'<li%s><a href="%s">%s</a></li>\' . "\\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}
/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max_num_pages, $links ) ) {
if ( ! in_array( $max_num_pages - 1, $links ) )
echo \'<li>…</li>\' . "\\n";
$class = $paged == $max_num_pages ? \' class="active"\' : \'\';
printf( \'<li%s><a href="%s">%s</a></li>\' . "\\n", $class, esc_url( get_pagenum_link( $max_num_pages ) ), $max_num_pages );
}
/** Next Post Link */
if ( get_next_posts_link() )
printf( \'<li>%s</li>\' . "\\n", get_next_posts_link() );
echo \'</ul></div>\' . "\\n";
}