修改帖子过滤器以设置每页的自定义帖子数并排除子帖子

时间:2013-10-08 作者:Evster

我有一个称为“图库”的自定义帖子类型,它是分层的。

我在函数中使用了一个函数。php文件将每页显示的帖子数修改为48。这一部分很好,但我还需要它来排除所有子帖子,以便只有顶级父帖子才能构成每页拉入的48篇帖子。以下是当前代码:

    function projects_custom_number_of_posts( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_post_type_archive( \'galleries\' ) ) {
        // Display 48 posts for a custom post type called \'galleries\'
        $query->set( \'posts_per_page\', 48 );
        return;
    }
}
add_action( \'pre_get_posts\', \'projects_custom_number_of_posts\', 1 );
如何修改$query->set 组件是否还将帖子仅限于顶级父级帖子?我尝试了以下操作,但出现了一个错误:

    function projects_custom_number_of_posts( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_post_type_archive( \'galleries\' ) ) {
        // Display 48 posts for a custom post type called \'galleries\'
        $query->set( array (\'posts_per_page\'=>48, \'post_parent\'=>0) );
        return;
    }
}
add_action( \'pre_get_posts\', \'projects_custom_number_of_posts\', 1 );

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

打个电话就行了$query->set 2次:

$query->set(\'posts_per_page\', 48 );
$query->set(\'post_parent\', 0 );

结束

相关推荐

get_posts() and filters

我为添加了自定义筛选函数the_posts 在插件中筛选。add_filter(\'the_posts\', \'posts_filter\'); function posts_filter() { … } 这在主循环中运行得很好,这意味着帖子会按照我在posts_filter 作用但我正在打电话get_posts() 在ajax请求中获取一些帖子。在那里,过滤器不起作用。query_posts() 或自定义wp_query 不要工作太多。所以问题是:我如何才能在主循环旁获得按the_p