What I\'m trying to do:
打印主页上使用模板的分页链接index.php
, 具有分页功能,如paginate_links()
, 循环外部。
What happens instead?
不是获取分页链接,paginate_links()
只返回NULL。
如果没有分页,也就是说,查询找到的帖子少于“每页最大帖子数”设置,那么这就可以了。
但实际上发现了10个帖子(paginate_links() == 10
) 只有5个在显示($wp_query->query_vars[\'posts_per_page\'] == 5
) 所以很明显,实际上正在发生某种分页。
如果我将每页的最大帖子数设置为10,那么所有10篇帖子都会显示在主页上。
My code
没有重要的代码可发布,但就是这样:
get_header();
if( have_posts() ) {
while( have_posts() ) {
the_post();
the_title();
}
}
echo paginate_links();
get_sidebar();
get_footer();
最合适的回答,由SO网友:s_ha_dum 整理而成
paginate_links()
不是像这样的模板/循环标记the_title()
或next_posts_link()
. 它是一个通用分页函数。如果给定零参数,它不会做任何事情。如果传递的参数为零,则它不会假定来自主查询或任何其他查询的数据。它什么都不做。你可以看到if you read the source for the function.
是的,从技术上讲,所有参数都是可选的,但默认值不会输出任何内容,同样,您可以在源代码中看到这些内容。默认值total
参数为1
但是
2017 $total = (int) $total;
2018 if ( $total < 2 )
2019 return;
https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/general-template.php#L2017
如果要使用
paginate_links()
您必须向它传递一组适合您的数据/查询的参数。如果您想将其用于主查询,正如您所做的那样,《法典》中有一个例子就是这样做的:
global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
\'format\' => \'?paged=%#%\',
\'current\' => max( 1, get_query_var(\'paged\') ),
\'total\' => $wp_query->max_num_pages
) );