修复自定义查询分页,而不更改站点范围内的每页帖子设置

时间:2011-08-29 作者:supertrue

许多人报告自定义查询或自定义帖子类型存档的分页问题:url/page/2生成404,即使所有设置都正确。

许多人最终发现这是因为他们自定义循环的每页帖子数小于管理员中的每页帖子数上限设置,他们通过更改

 Settings » Reading » "Blog pages show at most: ____ posts" 
至1。

这在我的情况下是可行的,但我更倾向于只针对这个特定的自定义查询而不是整个站点进行更改。这可能吗?

相关WP\\U查询如下:

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$wp_query = new WP_Query( array(
\'post_type\' => \'publication\',
\'posts_per_page\' => 5,
\'paged\'=>$paged));

2 个回复
SO网友:Maciej Kuś

我假设您有一个自定义的帖子类型:publication

在函数中。php放置该代码:

function mk_parse_query($query) {
  if ($query->query_vars[\'post_type\'] == \'publication\')) {
        set_query_var( \'posts_per_page\', 5 );
  }
}
if( !is_admin() ) {
    add_filter(\'parse_query\',\'mk_parse_query\');
}
类似的代码也适用于我,但在我的例子中,我在自定义分类分页URL上遇到了404。

希望这有帮助。

SO网友:Robert Bokori

如果要将其全局更改为post类型发布,请使用pre_get_posts 钩住并将以下内容添加到函数中。php

add_action( \'pre_get_posts\', function ( $query ) {
  if ( \'publication\' === $query->query_vars[\'post_type\'] && ! is_admin() ) {
    $query->set( \'posts_per_page\', 5 );
  }
} );
如果仅在一个自定义查询中需要它,则以下答案将帮助您:https://stackoverflow.com/a/20905538/2043492

结束

相关推荐

pagination with sticky posts

以下代码在第1页上显示8篇文章。然而,在所有后续页面上,仅显示7篇帖子。我认为这是因为第1页也会显示粘性帖子(其他页面不会显示)。如何解决这个问题(我需要8篇帖子和所有页面)</或者,贴子应该显示在所有页面上,而不仅仅是第一页我的原始代码:$header_query = new WP_Query( \'orderby=date&posts_per_page=7&paged=\'.$page_to_load.\'&ignore_sticky_posts=0&#x