每页WordPress帖子数(存档)

spo*_*tlr 1 php wordpress custom-post-type

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

    $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 );
Run Code Online (Sandbox Code Playgroud)

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

如果我在没有页面的情况下调用该网址,则会显示3个帖子;如果在我的页面中使用“ page / 2 /”显示,则显示3个帖子,但如果我在“页面/ 3 /”的页面中显示,则找不到任何内容...

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

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

问候凯

ado*_*nom 5

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

第一个查询将使用WordPress中设置的默认值;即。每页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;
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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

选项1是我的建议-它是最有效,最合适的。