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

gpc*_*ola 1 wordpress

我需要在归档循环中显示所有现有帖子,以获得"车辆"的自定义帖子类型.

这是我到目前为止:

function get_all_vehicle_posts( $query ) {
    $query->set( 'posts_per_page', '-1' );
}
add_action( 'pre_get_posts', 'get_all_vehicle_posts' );
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

    if ( 'vehicle' == $query->post_type ) {
        $query->set( 'posts_per_page', '-1' );
    }
Run Code Online (Sandbox Code Playgroud)

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

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

小智 7

使用帖子类型的is_post_type_archive函数检查pre-post帖子.

您将需要检查查询是否为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' );
Run Code Online (Sandbox Code Playgroud)

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