【问题标题】:WordPress post per page (Archive)每页 WordPress 帖子(存档)
【发布时间】:2013-02-09 01:09:27
【问题描述】:

我有一个自定义帖子类型,并想更改每页的帖子数量。我使用以下代码来显示/限制帖子:

    $args = array(
        'post_type' => 'movie',
        'posts_per_page' => 3,
        'tax_query' => array(
            array(
              'taxonomy' => $wp_query->queried_object->taxonomy,
              'field' => 'slug',
              'terms' => $wp_query->queried_object->slug,
            )
        ),
        'paged' => get_query_var('paged') ? get_query_var('paged') : 1
    );
    query_posts( $args );

这次我有 20 篇这种帖子类型的帖子,wordpress 管理中每页的默认帖子(设置/阅读...)设置为 10。

如果我在没有页面的情况下调用 url,它会显示 3 个帖子,如果我用“page/2/”调用 url,它会显示 3 个帖子,但如果我用“page/3/”调用页面,它会显示没有找到。 ..

我不会更改管理员中帖子的默认值 - 有人知道吗?

注意:为了“调试”,我让我显示“$wp_query->post_count;”的值- 这使用每页的默认管理员帖子 - 10 ...

问候凯

【问题讨论】:

  • 如果您删除 tax_query 条件,会发生什么?然后它会找到 20 个帖子吗? (当然是分页的)

标签: php custom-post-type wordpress


【解决方案1】:

如果存档页面用于自定义分类,则批准的答案实际上不起作用。在这种情况下,您可能需要使用以下内容:

add_filter( 'pre_get_posts', 'modify_movie_query' );

function modify_movie_query( $wp_query ) {
  if(is_tax('movie-category')){
    $wp_query->query_vars['posts_per_page'] = 10;
  }
  return $wp_query
}

【讨论】:

    【解决方案2】:

    当您加载页面时,它会在调用模板文件(archive.php)之前进行查询。

    第一个查询将使用 WordPress 中设置的默认值; IE。每页 10 个帖子。听上去,您正在archive.php 中运行第二个“query_posts”调用,但听起来好像是在您运行了适当的检查之后。

    两种可能的解决方案:

    1. 使用 posts_per_page 修改第一个查询

      add_filter( 'pre_get_posts', 'modify_movie_query' );
      
      function modify_movie_query( $wp_query ) {
          if( $wp_query->query_vars['post_type'] != 'movie' ) return;
          $wp_query->query_vars['posts_per_page'] = 3;
      }
      

      因为您修改了对 $wp_query 的引用,所以不需要返回它。

    2. 在archive.php 模板顶部运行query_posts 调用

    我会推荐选项 1 - 这是最有效、最合适的。

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 2016-06-05
      • 1970-01-01
      相关资源
      最近更新 更多