1
価格ではなくカスタムの属性値をソートするための既存のWoocommerce価格スライダーを修正しようとしましたが、mod_sqlクエリではスタックしませんでした。ここで価格帯の値としてのWoocommerceカスタム属性
はSQL標準woocommerce価格クエリの一部ですが、1つのカスタム属性を取得するために変更範囲:
$sql = "SELECT min(FLOOR(post_meta.meta_value)) as min_maxcarry, max(CEILING(post_meta.meta_value)) as max_maxcarry FROM {$wpdb->posts} ";
$sql .= " LEFT JOIN {$wpdb->postmeta} as post_meta ON {$wpdb->posts}.ID = post_meta.post_id " . $meta_query_sql['join'];
$sql .= " WHERE {$wpdb->posts}.post_type IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_post_type', array('product')))) . "')
AND {$wpdb->posts}.post_status = 'publish'
AND post_meta.meta_key IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_post_type', array('_maxcarry')))) . "')
AND post_meta.meta_value > '' ";
$sql .= $meta_query_sql['where'];
var_dump($sql);
return $wpdb->get_row($sql);
誰もがそれを助けるか、このスライダーを表示する別の方法を提案することができますか?
$meta_query = new WP_Meta_Query($meta_query);
$tax_query = new WP_Tax_Query($tax_query);
$meta_query_sql = $meta_query->get_sql('post', $wpdb->posts, 'ID');
$tax_query_sql = $tax_query->get_sql($wpdb->posts, 'ID');
$sql = "SELECT min(FLOOR(post_meta.meta_value)) as min_attr, max(CEILING(post_meta.meta_value)) as max_attr FROM {$wpdb->posts} ";
$sql .= " LEFT JOIN {$wpdb->postmeta} as post_meta ON {$wpdb->posts}.ID = post_meta.post_id " . $tax_query_sql['join'] . $meta_query_sql['join'];
$sql .= " WHERE {$wpdb->posts}.post_type IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_post_type', array('product')))) . "')
AND {$wpdb->posts}.post_status = 'publish'
AND post_meta.meta_key IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_meta_keys', array('_prod_sort_wcpaaf_sort')))) . "')
AND post_meta.meta_value > '' ";
$sql .= $tax_query_sql['where'] . $meta_query_sql['where'];
return $wpdb->get_row($sql);
それが便利、誰のためにそれをここに残します:事前のおかげで