使用自定义字段ID:_diameter
woocommerce_wp_text_input(
array(
'id' => '_diameter',
'label' => __('Diameter', 'woocommerce'),
'placeholder' => __('Enter diameter...', 'woocommerce'),
'desc_tip' => 'true',
'description' => __('Enter the diameter for this product.', 'woocommerce'),
'type' => 'number',
'custom_attributes' => array(
'step' => 'any',
'min' => '0'
)
)
);
它存储了来自的车轮值.15-28
在用户 Select 他的汽车插件的YearMakeModel后,将两个值:Min_Diameter,Max_Diameter写入Cookie...
现在,我需要根据这两个值对轮子进行排序.假设用户 Select Car,值为Min:19,Max:21,则应按19-21和其他值筛选sort个轮子(不过滤).
根据文档:WP_Query这应该能起到作用.但由于某些原因不起作用.try 使用Better和In
function custom_sort_by_recommended( $sort_args ) {
if ( isset( $_GET['orderby'] ) && $_GET['orderby'] == 'recommended' ) {
// Read cookie values
$min_diameter = isset( $_COOKIE['Min_Diameter'] ) ? intval( $_COOKIE['Min_Diameter'] ) : 0;
$max_diameter = isset( $_COOKIE['Max_Diameter'] ) ? intval( $_COOKIE['Max_Diameter'] ) : PHP_FLOAT_MAX;
// Modify the query args
$sort_args['meta_query'] = array(
'relation' => 'AND',
array(
'key' => '_diameter',
'value' => array( $min_diameter, $max_diameter ),
'compare' => 'BETWEEN',
)
);
// Custom sorting order
$sort_args['orderby'] = array(
'meta_value_num' => 'ASC', // Sort by diameter ascending
);
}
return $sort_args;
}