Change Posts per page count

时间:2011-10-11 作者:JasonDavis

在wordpress中settings => Reading => Blog pages show at most [输入字段]posts

目前我已将其设置为3个帖子。

在我的索引,日期档案,标签档案,类别档案,搜索结果等。。。所有使用循环和分页的页面,现在每页显示3篇文章。

我的目标是能够为不同的页面提供不同数量的结果。在我的索引上可能有3篇文章,但在搜索结果或档案上,每页显示的结果数不同。

有什么办法吗?

3 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

这样就可以了:(添加到主题的函数中。php)

add_action( \'pre_get_posts\',  \'set_posts_per_page\'  );
function set_posts_per_page( $query ) {

  global $wp_the_query;

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( \'posts_per_page\', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( \'posts_per_page\', 5 );
  }
  // Etc..

  return $query;
}

SO网友:Arts Fantasy

改进上述答案:挂钩pre_get_posts 通过引用获取,因此它不需要global 呼叫或areturn呼叫

add_action( \'pre_get_posts\',  \'set_posts_per_page\'  );
function set_posts_per_page( $query ) {

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( \'posts_per_page\', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( \'posts_per_page\', 5 );
  }
  // Etc..

}

SO网友:Abdulkabir Ojulari

使用$GLOBALS[\'wp\\u query\']或仅使用$wp\\u query

add_action( \'pre_get_posts\',  \'set_posts_per_page\'  );
function set_posts_per_page( $query ) {

  if ( ( ! is_admin() ) && ( $query === $GLOBALS[\'wp_query\'] ) && ( $query->is_search() ) ) {
    $query->set( \'posts_per_page\', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $GLOBALS[\'wp_the_query\'] ) && ( $query->is_archive() ) ) {
    $query->set( \'posts_per_page\', 5 );
  }

  return $query;
}

结束

相关推荐

Order posts by years

我的网站上有帖子(自定义帖子类型)。我想创建一个归档页面,显示按年份排序的归档帖子。e、 g:2010年*第3条来了*第2条来了*第1条来了2011年*第3条来了*第2条来了*第1条来了当然还有帖子的链接。我觉得很简单,但是我在网上找不到任何简单的东西。它还需要手工编码,以便我可以轻松地设置样式。非常感谢您的帮助Gil