我有一个二手车网站。在查看特定车辆时,存在用于类似车辆的部分。目前,类似的车辆基于具有相同车身风格的车辆($ vehicletype)。
我想改变它以同样的价格展示相同车身风格的车辆。到目前为止,我已经使用了这段代码:
$vehicletype = get_post_meta($post->ID, 'Vehicle Type', true);
$id = get_the_ID();
$baseprice = get_post_meta($post->ID, 'Retail Price', true);
$minprice = $baseprice - 10000;
$maxprice = $baseprice + 10000;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => array('vehicle'),
'post__not_in' => array($id),
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'date',
'posts_per_page' => 5,
'paged' => $paged,
'meta_key' => 'Vehicle Type',
'meta_value' => $vehicletype,
'meta_key' => 'Retail Price',
'meta_value' => $baseprice,
);
这显然显示了具有相同体型和完全相同价格的车辆。我想改变它,以便它不仅显示相同价格的车辆,而且显示类似价格范围内的车辆(在$ minprice和$ maxprice之间)。
我怀疑它看起来像这样:
'meta_query' => array(
array(
'key' => 'Retail Price',
'value' => array( $minprice, $maxprice ),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
),
我已经尝试了几种不同的方法来实现这一点,但是所有这些方法都导致了一个"这个页面不起作用"错误页面。
任何帮助都将不胜感激。
提前致谢
威廉
答案 0 :(得分:1)
试试这个
$vehicletype = get_post_meta($post->ID, 'Vehicle Type', true);
$id = get_the_ID();
$baseprice = get_post_meta($post->ID, 'Retail Price', true);
$minprice = $baseprice - 10000;
$maxprice = $baseprice + 10000;
$query = array();
$queryPrice = array();
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if( "" != $vehicletype )
$query[] = ['key'=>'Vehicle Type','value' => $vehicletype, 'compare' => '='];
if( "" != $baseprice ){
$queryPrice[] = ['key'=>'Retail Price','value' => $minprice, 'compare' => '>'];
$queryPrice[] = ['key'=>'Retail Price','value' => $maxprice, 'compare' => '<'];
}
$args = array(
'post_type' => 'vehicle',
'post__not_in' => array($id),
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'date',
'posts_per_page' => 5,
'paged' => $paged,
'meta_query' => array( 'relation' => 'OR ',$query )
'meta_query' => array( 'relation' => 'AND ',$queryPrice )
);
$wp_query = new WP_Query($args);
此外,您的查询有
'meta_key' => 'Vehicle Type',
'meta_key' => 'Retail Price',
请确保您提供的密钥是数据库中的内容
答案 1 :(得分:1)
尝试这样的事情是介于两者之间不起作用:
'meta_query' => array(
'relation' => 'AND',
array
(
'key' => 'Vehicle Type',
'value' => $vehicletype,
'compare' => '='
),
array
(
'key' => 'Retail Price',
'value' => $minprice,
'type' => 'numeric',
'compare' => '>=',
),
array
(
'key' => 'Retail Price',
'value' => $maxprice,
'type' => 'numeric',
'compare' => '<=',
)
)