0
产品具有Tempo属性。这是一个输入号码的文本字段。如何通过最小值和最大值属性过滤woocommerce产品?
如何按最小和最大属性值排序产品? 使用此类网址?filtering=1&filter_min-tempo=100&filter_max-tempo=150
是否可以创建一个整数类型的属性?
产品具有Tempo属性。这是一个输入号码的文本字段。如何通过最小值和最大值属性过滤woocommerce产品?
如何按最小和最大属性值排序产品? 使用此类网址?filtering=1&filter_min-tempo=100&filter_max-tempo=150
是否可以创建一个整数类型的属性?
所有属性都以文本形式存储,但您可以将它们转换为您需要的类型。
看看这段代码:
function isequal($v1,$v2) {
return intval($v1) == intval($v2);
}
function filter_loop_shop_post_in($array) {
if (!array_key_exists('min_tempo',$_GET) && !array_key_exists('max_tempo',$_GET)) return $array;
global $wpdb;
$min = isset($_GET['min_tempo']) ? floatval($_GET['min_tempo']) : 0;
$max = isset($_GET['max_tempo']) ? floatval($_GET['max_tempo']) : 9999999999;
$query = "
SELECT DISTINCT
tr.object_id
FROM
{$wpdb->term_relationships} AS tr
LEFT JOIN
{$wpdb->term_taxonomy} AS tt
ON
tr.term_taxonomy_id = tt.term_taxonomy_id
LEFT JOIN
{$wpdb->terms} AS t
ON
tt.term_id = t.term_id
WHERE
tt.`taxonomy` = 'pa_tempo' AND CAST(t.name AS DECIMAL(10, 1)) BETWEEN $min AND $max";
$raw_results = $wpdb->get_results($query);
if (!sizeof($raw_results)) return $array;
$results = array();
foreach ($raw_results as $res) {
$results[] = intval($res->object_id);
}
if (!sizeof($array)) return $results;
return array_uintersect($results, $array, 'isequal');
};
add_filter('loop_shop_post_in', 'filter_loop_shop_post_in', 10, 1);
它为我在WooCommerce 2.6.14。