PAGINATE_LINKS()返回NULL而不是分页链接,但实际上正在进行分页

时间:2014-03-16 作者:Petruza

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();

1 个回复
最合适的回答,由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
) );

结束

相关推荐

从CPT页面链接到分类.php

我创建了一个CPT,允许用户向页面添加人员。我已经创建了一个显示所有人的页面模板。此页面还显示用于人员的所有类别。我的问题是:当用户单击某个类别时,如何实现这一点?只有拥有该类别的人才会显示出来?以下是相关代码摘录:function.php (注册分类法):function create_people_taxonomies() { $labels = array( \'name\' => _x( \'Categories\', \'t