如何将POSTS_PER_PAGE和PAGE PARAMS查询变量传递给定制分类存档URL?

时间:2015-12-28 作者:Luca Reghellin

所以我做了一些自定义帖子和分类法。。

http://example.com/?product_category=mytaxonomyterm&lang=it

到这里,一切都很好:我有一个“mytaxonomyterm”分类档案。顺便说一句,lang是因为我使用的是polylang插件。

如果我尝试添加&posts_per_page=15 对于url,它不起作用:它不会改变帖子的数量。

如果我加上paged=1, 它将重新加载到http://example.com/?product_category=mytaxonomyterm&lang=it (因此剥离页面参数)。

如果我加上paged=1, 它将抛出一个错误,告诉我post模板中有错误。php第279行,“尝试获取非对象的属性”。

那又怎样?我做错了什么?

1 个回复
SO网友:birgire

如果我尝试添加&posts_per_page=15 对于url,它不起作用:它不会改变帖子的数量。

我想知道您是否在寻找自定义查询变量,例如。ppp, 要更改主查询的帖子数,请执行以下操作:

add_filter( \'query_vars\', function( $vars )
{
  $vars[] = "ppp";
  return $vars;
} );

add_action( \'pre_get_posts\', function( \\WP_Query $q )
{
    if( ! is_admin() && $q->is_main_query() )
    {
        $ppp = $q->get( \'ppp\' );
        if( ! empty( $ppp ) && 20 >= (int) $ppp )
            $q->set( \'posts_per_page\', (int) $ppp );
    }
} );
我们将帖子的最大数量限制为20个。如果需要,您可以进一步限制此操作。

我做错了什么?

这个posts_per_page 是一个private 中的查询变量WP 类,因此您将无法在请求中使用它作为GET参数来修改主查询。

这个paged 是一个public 查询变量,以便您可以访问该变量。

相关推荐

Count posts for pagination

我正在为一个网站分页<;上一页(页码)下一页>很简单,已经完成。但是现在我需要添加一个选择器来直接转到页面(例如:转到第7页),要这样做,我需要知道有多少页面,为此我需要计算在查询中找到了多少帖子。问题是这个网站有太多的帖子(>13.000),查询所有帖子都会减慢页面加载速度,这就像。。。10秒后页面才能加载。显然,这是不可接受的。分页解决了这个问题,因为一次只加载50或100篇文章,但我无法将它们全部计算在内。我可以在不加载的情况下统计某个查询中的帖子吗?或者我可以通过其他方式获得页数吗