我正在手动获取woocommerce产品。
问题是我在产品上有自定义字段,即_locations。产品可以属于多个位置,因此我在wp-admin中的产品添加表单中提供了多选列表。
以下是我保存meta_value
的功能function woo_add_custom_general_fields_save( $post_id ){
// Select
$woocommerce_select = $_POST['_locations'];
if( !empty( $woocommerce_select ) )
update_post_meta( $post_id, '_locations', esc_attr(maybe_serialize($woocommerce_select )) );
}
请注意,我已将meta_value的数据序列化,以便我只有一个唯一键_locations
,其中包含与其关联的所有位置值。
现在我在提取产品时出现问题
$args = array(
'post_type' => 'product',
'product_cat' => $food_category->slug,
'meta_key' => '_locations',
'meta_value' => 'newyork'
);
$loop = new WP_Query($args);
我想只为newyork
获取产品,但在数据库中它存储为序列化数组
s:69:"a:2:{i:0;s:7:"newyork";i:1;s:13:"massachusetts";}";
如何才能使此查询仅获取newyork产品。
由于
答案 0 :(得分:2)
尝试:
$args = array(
'post_type' => 'product',
'product_cat' => $food_category->slug,
'meta_query' => array(
array(
'key' => '_location',
'value' => '%newyork%',
'compare' => 'LIKE',
),
),
);
答案 1 :(得分:0)
我有类似的问题,我使用serialize()
解决了它。以下是示例。
$args = array(
'post_type' => 'product',
'product_cat' => $food_category->slug,
'meta_query' => array(
array(
'key' => '_location',
'value' => serialize( array( 'newyork' ) ),
'compare' => 'LIKE',
),
),
);
答案 2 :(得分:-1)
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var routes = response.routes;
for (var i = 0; i < routes.length; i++) {
// Display the routes summary in a div
document.getElementById('routes').innerHTML += 'Via ' + routes[i].summary + '<br />';
}
}
});
使用引号来避免像“newyorkcity”,“newyorkcounty”......
如果您存储城市名称可能不是这种情况,但如果您存储城市的ID,则会遇到大问题。
示例:
$args = array(
'post_type' => 'product',
'product_cat' => $food_category->slug,
'meta_query' => array(
array(
'key' => '_location',
'value' => '%"newyork"%', // note the quotes
'compare' => 'LIKE',
),
),
);
如果您搜索: