예제 #1
0
 function prdctfltr_price_filter($where, &$wp_query)
 {
     global $wpdb, $prdctfltr_global;
     $pf_activated = $prdctfltr_global['active_filters'];
     if (isset($pf_activated['sale_products']) && $pf_activated['sale_products'] == 'on') {
         $pf_sale = true;
         $pf_where_keys = array(array('_sale_price', '_min_variation_sale_price'), array('_sale_price', '_max_variation_sale_price'));
     } else {
         $pf_sale = false;
         $pf_where_keys = array(array('_price', '_min_variation_price'), array('_price', '_max_variation_price'));
     }
     if (isset($wp_query->query_vars['rng_min_price'])) {
         $_min_price = $wp_query->query_vars['rng_min_price'];
     }
     if (isset($wp_query->query_vars['min_price'])) {
         $_min_price = $wp_query->query_vars['min_price'];
     }
     if (isset($pf_activated['rng_min_price'])) {
         $_min_price = $pf_activated['rng_min_price'];
     }
     if (isset($pf_activated['min_price'])) {
         $_min_price = $pf_activated['min_price'];
     }
     if (!isset($_min_price)) {
         $prices = WC_Prdctfltr::get_filtered_price();
         $_min = floor($prices->min_price);
     }
     if (isset($wp_query->query_vars['rng_max_price'])) {
         $_max_price = $wp_query->query_vars['rng_max_price'];
     }
     if (isset($wp_query->query_vars['max_price'])) {
         $_max_price = $wp_query->query_vars['max_price'];
     }
     if (isset($pf_activated['rng_max_price'])) {
         $_max_price = $pf_activated['rng_max_price'];
     }
     if (isset($pf_activated['max_price'])) {
         $_max_price = $pf_activated['max_price'];
     }
     if (!isset($_max_price)) {
         $prices = !isset($prices) ? WC_Prdctfltr::get_filtered_price() : $prices;
         $_max = ceil($prices->max_price);
     }
     if ((isset($_min_price) || isset($_max_price)) !== false) {
         if (!isset($_min_price)) {
             $_min_price = $_min;
         }
         if (!isset($_max_price)) {
             $_max_price = $_max;
         }
         $where .= " AND ( ( pf_price.meta_key IN ('" . implode("','", array_map('esc_sql', $pf_where_keys[0])) . "') AND pf_price.meta_value >= {$_min_price} AND pf_price.meta_value <= {$_max_price} AND pf_price.meta_value != '' ) OR ( pf_price.meta_key IN ('" . implode("','", array_map('esc_sql', $pf_where_keys[1])) . "') AND pf_price.meta_value >= {$_min_price} AND pf_price.meta_value <= {$_max_price} AND pf_price.meta_value != '' ) ) ";
     } else {
         if ($pf_sale === true) {
             $where .= " AND ( pf_price.meta_key IN ('_sale_price','_min_variation_sale_price') AND pf_price.meta_value > 0 ) ";
         }
     }
     remove_filter('posts_where', 'prdctfltr_price_filter');
     return $where;
 }
예제 #2
0
         if (isset($pf_activated['rng_min_' . $attr]) && $pf_activated['rng_min_' . $attr] == $attribute->slug) {
             $prdctfltr_global['ranges'][$curr_rng_id]['from'] = $c;
         }
         if (isset($pf_activated['rng_max_' . $attr]) && $pf_activated['rng_max_' . $attr] == $attribute->slug) {
             $prdctfltr_global['ranges'][$curr_rng_id]['to'] = $c;
         }
         $prdctfltr_global['ranges'][$curr_rng_id]['values'][] = '<span class=\'pf_range_val\'>' . $attribute->slug . '</span>' . $attribute->name;
         $c++;
     }
     $prdctfltr_global['ranges'][$curr_rng_id]['decorate_both'] = false;
     $prdctfltr_global['ranges'][$curr_rng_id]['values_separator'] = ' &rarr; ';
     if ($curr_options['wc_settings_prdctfltr_range_filters']['pfr_custom'][$p] !== '') {
         $add_rng_js = $curr_options['wc_settings_prdctfltr_range_filters']['pfr_custom'][$p];
     }
 } else {
     $prices = WC_Prdctfltr::get_filtered_price($adpt_rng);
     $pf_curr_min = floor($prices->min_price);
     $pf_curr_max = ceil($prices->max_price);
     if ($pf_curr_min == $pf_curr_max) {
         $pf_curr_min = $pf_curr_min - 5;
         $pf_curr_max = $pf_curr_max + 5;
     }
     $pf_curr_min = WC_Prdctfltr::price_to_float(strip_tags(wc_price($pf_curr_min)));
     $pf_curr_max = WC_Prdctfltr::price_to_float(strip_tags(wc_price($pf_curr_max)));
     $prdctfltr_global['ranges'][$curr_rng_id]['min'] = $pf_curr_min;
     $prdctfltr_global['ranges'][$curr_rng_id]['max'] = $pf_curr_max;
     if ($curr_options['wc_settings_prdctfltr_range_filters']['pfr_custom'][$p] !== '') {
         $add_rng_js = $curr_options['wc_settings_prdctfltr_range_filters']['pfr_custom'][$p];
     }
     $currency_pos = get_option('woocommerce_currency_pos', 'left');
     $currency = get_woocommerce_currency_symbol();