即使没有条目,自定义WP_QUERY也始终以200状态响应

时间:2017-07-01 作者:Faisal Khurshid

我正在使用自定义WP_Query. 代码如下所示:

$portfolio_args = array(
    \'post_type\'           => \'portfolio\',
    \'posts_per_page\'      => 5,
    \'paged\'               => get_query_var( \'page\' )
);

$portfolio_query = new WP_Query($portfolio_args);
现在,我的公文包帖子类型有15个条目(因此适合3页)。我可以导航到所有这些页面,但问题甚至是没有任何投资组合条目的页面(例如。/page/4/, /page/5, ...) 加载刚刚好(即在响应头中抛出200),然而,如果页面没有任何条目,我希望它抛出404错误。

这是自定义查询分页的预期行为吗?如果是这样,我是否需要以某种方式强制执行404响应头?

1 个回复
SO网友:Milo

响应基于主查询的结果。该决策是在加载模板之前做出的,这就是在404的情况下,WP如何能够为404模板提供服务。

如您所知page post type允许在两种格式中无休止地分页pagename/page/n/, 还有奇异的图案pagename/n/. 要为不同的查询生成404,您需要挂接以下内容template_redirect 检查自定义查询是否包含帖子,以便在输出开始之前强制执行404。

首选的解决方案是设置has_archive 参数,该参数用于启用存档页。然后,主查询将是您的公文包帖子集合,分页将按预期工作。

结束

相关推荐

Pagination custom query

我正在尝试制作一个自定义页面模板,以显示浏览次数最多的帖子。我可以回复帖子,但我很难弄清楚如何分页。以下是我所拥有的:$args = array(\'orderby\' => \'meta_value_num\', \'meta_key\' => \'post_views_count\', \'posts_per_page\' => 36 ); $loop = new WP_Query( $args ); while ( $