i使用效果很好的WP_QUERY。现在,我想添加用户不通过"猫"或"城市"过滤的能力。
那么,我只能通过特殊字符来指定$类别,例如"*"或"%"到"所有值"?现在还没有找到它...我应该用另一种方式吗?谢谢
$args = array(
'post_type' => 'post',
'cat' => $category,
'meta_query' => array(
array(
'key' => 'usp-custom-rdvp_city',
'value' => $city,
'compare' => 'LIKE',
),
array(
'relation' => 'OR',
array(
'key' => 'usp-custom-rdvp_date_event_start',
'value' => array( $fromDate, $toDate),
'type' => 'DATE',
'compare' => 'BETWEEN',
),
array(
'key' => 'usp-custom-rdvp_date_event_end',
'value' => array( $fromDate, $toDate),
'type' => 'DATE',
'compare' => 'BETWEEN',
),
),
),
);
按类别过滤
那么,我只能通过特殊字符来指定$类别,例如"*"或"%"到"所有值"?
否。取而代之的是,当您想要所有类别时,您希望不包括cat
参数。好吧,请考虑一下。您将如何在一个代码中实现一个/或查询论点?
如果有指定类别。
,您会动态添加cat
参数 if ( $category ) {
$args['cat'] = $category;
}
城市怎么样?
使用与以上类别相同的方法。如果有城市,请添加该城市的元查询。
if ( $city ) {
$args['meta_query'][] = array(
'key' => 'usp-custom-rdvp_city',
'value' => $city,
'compare' => 'LIKE',
);
}
完整的参数
让我们把它们放在一起。
$args = array(
'meta_query' => array(
array(
'relation' => 'OR',
array(
'key' => 'usp-custom-rdvp_date_event_start',
'value' => array( $fromDate, $toDate ),
'type' => 'DATE',
'compare' => 'BETWEEN',
),
array(
'key' => 'usp-custom-rdvp_date_event_end',
'value' => array( $fromDate, $toDate ),
'type' => 'DATE',
'compare' => 'BETWEEN',
),
),
),
);
if ( $category ) {
$args['cat'] = $category;
}
if ( $city ) {
$args['meta_query'][] = array(
'key' => 'usp-custom-rdvp_city',
'value' => $city,
'compare' => 'LIKE',
);
}
顺便说一句,您不需要指定'post_type' => 'post'
,因为它默认设置为post
。