2017-03-18 5 views

答えて

1

すべての属性はテキストとして保存されますが、必要なタイプにキャストできます。このコードでは

ルック:

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に私のために動作します。

関連する問題