仅限自定义帖子类型的无限制的posts_per_page

时间:2013-09-23 21:08:27

标签: wordpress

我需要在归档循环中显示所有现有帖子,以显示“车辆”的自定义帖子类型。

这是我到目前为止所做的:

function get_all_vehicle_posts( $query ) {
    $query->set( 'posts_per_page', '-1' );
}
add_action( 'pre_get_posts', 'get_all_vehicle_posts' );

我看到了我想要的无限帖子。但是,我需要将此更改限制为我的自定义帖子类型。

我试过了:

    if ( 'vehicle' == $query->post_type ) {
        $query->set( 'posts_per_page', '-1' );
    }

但这似乎不起作用。我想我们在查询运行之前不知道帖子类型,除非它是查询的特定参数?

如何将此功能限制为特定的帖子类型?

2 个答案:

答案 0 :(得分:7)

使用帖子类型的is_post_type_archive函数检查预先获得的帖子。

您需要检查查询是否为admin,以避免影响管理区域,以及检查查询是否为主查询。

function get_all_vehicle_posts( $query ) {
    if( !is_admin() && $query->is_main_query() && is_post_type_archive( 'vehicle' ) ) {
        $query->set( 'posts_per_page', '-1' );
    }
}
add_action( 'pre_get_posts', 'get_all_vehicle_posts' );

http://codex.wordpress.org/Function_Reference/is_admin

http://codex.wordpress.org/Function_Reference/is_main_query

http://codex.wordpress.org/Function_Reference/is_post_type_archive

答案 1 :(得分:0)

必须将帖子类型设置为查询参数

$args = array(
    'post_type' => 'vehicle'
);

所以在你的函数中添加post类型,否则你只是查询标准的post对象。