我需要在归档循环中显示所有现有帖子,以显示“车辆”的自定义帖子类型。
这是我到目前为止所做的:
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' );
}
但这似乎不起作用。我想我们在查询运行之前不知道帖子类型,除非它是查询的特定参数?
如何将此功能限制为特定的帖子类型?
答案 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对象。