another post a page problem

时间:2011-10-24 作者:Roelof Wobbn

我有一个很难发布页面的问题。我有以下代码:

function wpse31701_4filter_query() { 
global $wp_query; 
// Check year and month 
$wp_query->set(\'orderby\', \'date\'); $wp_query->set(\'order\', \'ASC\'); 
if ( $wp_query->get( \'year\' ) == 2005 and $wp_query->get( \'monthnum\' ) == 9 ) 
    // Check page number to apply offset 
    if ( $wp_query->get( \'paged\') == 2 ) $wp_query->set( \'offset\', 1 ); 
    else 
     if ( $wp_query->get( \'paged\') == 3 ) $wp_query->set( \'offset\', 2 ); 
    else
      if ( $wp_query->get( \'paged\') == 4 ) $wp_query->set( \'offset\', 3 ); 
    else
    if ( $wp_query->get( \'paged\') < 8  )  
       $wp_query->set( \'posts_per_page\', 1); 
}

这不起作用,因为我有500个错误。我的问题是,在前8页上只显示1篇文章。其余部分显示正常数量的物品。

谁能帮我找出我是如何做到这一点的。

鲁洛夫

2 个回复
最合适的回答,由SO网友:Nero_DCLXVI 整理而成

"The problem I have it that on the first 8 pages only 1 article is displayed."

这是由于这一行代码:

if ( $wp_query->get( \'paged\') < 8  )  {
  $wp_query->set( \'posts_per_page\', 1);
}
有关更多信息,请参见此处:codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters

编辑:

尝试添加@kaiser提到的括号。。。这是您在粘贴箱中发布的原始代码,其中添加了括号/缩进,我认为它们应该放在哪里。。。

function wpse31701_filter_query() {
  global $wp_query;
  // Check year and month
  $wp_query->set(\'orderby\', \'date\'); $wp_query->set(\'order\', \'ASC\');
  if ( $wp_query->get( \'year\' ) == 2005 and $wp_query->get( \'monthnum\' ) == 4 ) {
    // Check page number to apply offset
    if ( $wp_query->get( \'paged\') == 2 ) {
      $wp_query->set( \'offset\', 1 );
    }
    else {
      if ( $wp_query->get( \'paged\') == 3 ) {
        $wp_query->set( \'offset\', 4 );
      }
      else {
        $wp_query->set( \'posts_per_page\', 1);
      }
    }
  }
}
add_action( \'pre_get_posts\', \'wpse31701_filter_query\' ); 
您的第一个“if”语句在其应该评估的内容周围没有括号。如果编写没有括号的条件语句,那么它只计算它后面的第一行。如果评估中有多行,则需要使用括号或冒号。

现在,我不确定这是否能解决你的问题。。。但在调试任何“问题”之前,首先正确格式化代码至少是一个非常好的主意,因为格式化可能是其中之一,如果不是“问题”的话。

SO网友:kaiser

第一:查询变量命名为“page,未分页。第二:仅当您位于>1页时才设置它。否则它就是空的。

结束

相关推荐

Broken category pagination

出于某种原因,下面的代码一直工作到我到达第三页并给出404。不使用任何插件就可以修复它吗?<?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(\'cat=\'. $id .\'&posts_per_page=4&paged=\'.$paged); while ($wp_query->have_posts()) : $wp_query