Wordpress meta_查询筛选类型numeric不起作用
我有这样一个元查询:Wordpress meta_查询筛选类型numeric不起作用,wordpress,Wordpress,我有这样一个元查询: $meta_query_args = array( 'relation' => 'AND', array( 'key' => 'apartment-price', 'value' => array(50000, 100000), 'compare' => 'BETWEEN', 'type' => 'numeric' ), array(
$meta_query_args = array(
'relation' => 'AND',
array(
'key' => 'apartment-price',
'value' => array(50000, 100000),
'compare' => 'BETWEEN',
'type' => 'numeric'
),
array(
'key' => 'apartment-block',
'value' => $data['block'],
'compare' => 'IN'
),
array(
'key' => 'apartment-floor',
'value' => intval($data['floor']),
'compare' => 'IN',
'type' => 'numeric'
)
);
$meta_query = new WP_Query(
array(
'post_type' => 'apartment',
'meta_query' => $meta_query_args
)
);
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) INNER JOIN wp_postmeta AS mt2 ON ( wp_posts.ID = mt2.post_id ) WHERE 1=1 AND (
( wp_postmeta.meta_key = 'apartment-price' AND CAST(wp_postmeta.meta_value AS SIGNED) BETWEEN '50000' AND '100000' )
AND
( mt1.meta_key = 'apartment-block' AND mt1.meta_value IN ('B') )
AND
( mt2.meta_key = 'apartment-floor' AND CAST(mt2.meta_value AS SIGNED) IN ('1') )
) AND wp_posts.post_type = 'apartment' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
我想过滤50000到100000之间的公寓价格,但我得到如下查询:
$meta_query_args = array(
'relation' => 'AND',
array(
'key' => 'apartment-price',
'value' => array(50000, 100000),
'compare' => 'BETWEEN',
'type' => 'numeric'
),
array(
'key' => 'apartment-block',
'value' => $data['block'],
'compare' => 'IN'
),
array(
'key' => 'apartment-floor',
'value' => intval($data['floor']),
'compare' => 'IN',
'type' => 'numeric'
)
);
$meta_query = new WP_Query(
array(
'post_type' => 'apartment',
'meta_query' => $meta_query_args
)
);
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) INNER JOIN wp_postmeta AS mt2 ON ( wp_posts.ID = mt2.post_id ) WHERE 1=1 AND (
( wp_postmeta.meta_key = 'apartment-price' AND CAST(wp_postmeta.meta_value AS SIGNED) BETWEEN '50000' AND '100000' )
AND
( mt1.meta_key = 'apartment-block' AND mt1.meta_value IN ('B') )
AND
( mt2.meta_key = 'apartment-floor' AND CAST(mt2.meta_value AS SIGNED) IN ('1') )
) AND wp_posts.post_type = 'apartment' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
所以它不起作用,因为数字被引用了。为什么参数“type”不起作用?救命啊!
顺便说一句,公寓楼层过滤器也不工作,原因相同。我认为您的
类型
参数需要大写。请尝试使用NUMERIC
@Joe NewNine不,它不起作用。问题是type参数转换等式的左侧,而不是右侧。您知道这将非常缓慢,并且会使查询变得繁重吗?如果你正在查询大量的帖子,你甚至可能有一个没有响应的页面。。。