0
製品にはテンポ属性があります。これは、番号を入力するためのテキストフィールドです。属性の最小値と最大値によるフィルタwoocommerce製品の仕組みは?
最小値と最大値で商品を並べ替える方法は? そのようなURLを使用する?filtering=1&filter_min-tempo=100&filter_max-tempo=150
整数型の属性を作成することはできますか?
製品にはテンポ属性があります。これは、番号を入力するためのテキストフィールドです。属性の最小値と最大値によるフィルタwoocommerce製品の仕組みは?
最小値と最大値で商品を並べ替える方法は? そのようなURLを使用する?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に私のために動作します。