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。