function widget($args, $instance) { extract($args, EXTR_SKIP); $curr_pf = array('preset' => $instance['preset'], 'template' => $instance['template']); global $prdctfltr_global; if ((isset($prdctfltr_global['active']) && $prdctfltr_global['active'] == 'true') !== true) { global $wp; echo $before_widget; $prdctfltr_global['active'] = 'true'; $curr_overrides = get_option('prdctfltr_overrides', array()); if (is_product_category()) { $_GET['product_cat'] = get_query_var('product_cat'); if (isset($curr_overrides) && is_array($curr_overrides) && isset($curr_overrides['product_cat'])) { if (array_key_exists($_GET['product_cat'], $curr_overrides['product_cat'])) { $get_options = $curr_overrides['product_cat'][$_GET['product_cat']]; } } } else { if (is_product_tag()) { $_GET['product_tag'] = get_query_var('product_tag'); if (isset($curr_overrides) && is_array($curr_overrides) && isset($curr_overrides['product_cat'])) { if (array_key_exists($_GET['product_tag'], $curr_overrides['product_tag'])) { $get_options = $curr_overrides['product_tag'][$_GET['product_tag']]; } } } else { if (is_product_taxonomy()) { $_GET[get_query_var('taxonomy')] = get_query_var('term'); } } } if (!isset($get_options)) { if (isset($curr_pf['template'])) { $get_options = $curr_pf['template']; } } if (isset($prdctfltr_global['active_filters'])) { $_GET = array(); foreach ($prdctfltr_global['active_filters'] as $k => $v) { $_GET[$k] = $v; } } if (isset($get_options)) { $curr_or_presets = get_option('prdctfltr_templates', array()); if (isset($curr_or_presets) && is_array($curr_or_presets)) { if (array_key_exists($get_options, $curr_or_presets)) { $get_curr_options = json_decode(stripslashes($curr_or_presets[$get_options]), true); } } } $pf_chck_settings = array('wc_settings_prdctfltr_style_preset' => 'pf_default', 'wc_settings_prdctfltr_always_visible' => 'no', 'wc_settings_prdctfltr_click_filter' => 'no', 'wc_settings_prdctfltr_limit_max_height' => 'no', 'wc_settings_prdctfltr_max_height' => 150, 'wc_settings_prdctfltr_custom_scrollbar' => 'no', 'wc_settings_prdctfltr_disable_bar' => 'no', 'wc_settings_prdctfltr_icon' => '', 'wc_settings_prdctfltr_max_columns' => 6, 'wc_settings_prdctfltr_adoptive' => 'no', 'wc_settings_prdctfltr_cat_adoptive' => 'no', 'wc_settings_prdctfltr_tag_adoptive' => 'no', 'wc_settings_prdctfltr_char_adoptive' => 'no', 'wc_settings_prdctfltr_price_adoptive' => 'no', 'wc_settings_prdctfltr_orderby_title' => '', 'wc_settings_prdctfltr_price_title' => '', 'wc_settings_prdctfltr_price_range' => 100, 'wc_settings_prdctfltr_price_range_add' => 100, 'wc_settings_prdctfltr_price_range_limit' => 6, 'wc_settings_prdctfltr_cat_title' => '', 'wc_settings_prdctfltr_cat_limit' => 0, 'wc_settings_prdctfltr_cat_hierarchy' => 'no', 'wc_settings_prdctfltr_cat_multi' => 'no', 'wc_settings_prdctfltr_include_cats' => array(), 'wc_settings_prdctfltr_tag_title' => '', 'wc_settings_prdctfltr_tag_limit' => 0, 'wc_settings_prdctfltr_tag_multi' => 'no', 'wc_settings_prdctfltr_include_tags' => array(), 'wc_settings_prdctfltr_custom_tax_title' => '', 'wc_settings_prdctfltr_custom_tax_limit' => 0, 'wc_settings_prdctfltr_chars_multi' => 'no', 'wc_settings_prdctfltr_include_chars' => array(), 'wc_settings_prdctfltr_disable_sale' => 'no', 'wc_settings_prdctfltr_noproducts' => '', 'wc_settings_prdctfltr_advanced_filters' => array(), 'wc_settings_prdctfltr_range_filters' => array(), 'wc_settings_prdctfltr_disable_instock' => 'no', 'wc_settings_prdctfltr_title' => '', 'wc_settings_prdctfltr_style_mode' => 'pf_mod_multirow', 'wc_settings_prdctfltr_instock_title' => '', 'wc_settings_prdctfltr_disable_reset' => 'no', 'wc_settings_prdctfltr_include_orderby' => array('menu_order', 'popularity', 'rating', 'date', 'price', 'price-desc'), 'wc_settings_prdctfltr_adoptive_style' => 'pf_adptv_default', 'wc_settings_prdctfltr_show_counts' => 'no'); if (isset($get_curr_options)) { $curr_options = $get_curr_options; foreach ($pf_chck_settings as $z => $x) { if (!isset($curr_options[$z])) { $curr_options[$z] = $x; } } } else { $wc_settings_prdctfltr_active_filters = get_option('wc_settings_prdctfltr_active_filters'); if ($wc_settings_prdctfltr_active_filters === false) { $wc_settings_prdctfltr_selected = get_option('wc_settings_prdctfltr_selected', array('sort', 'price', 'cat')); $wc_settings_prdctfltr_attributes = get_option('wc_settings_prdctfltr_attributes', array()); $wc_settings_prdctfltr_active_filters = array(); $wc_settings_prdctfltr_active_filters = array_merge($wc_settings_prdctfltr_selected, $wc_settings_prdctfltr_attributes); } else { if (is_array($wc_settings_prdctfltr_active_filters)) { $wc_settings_prdctfltr_selected = array(); $wc_settings_prdctfltr_attributes = array(); foreach ($wc_settings_prdctfltr_active_filters as $k) { if (substr($k, 0, 3) == 'pa_') { $wc_settings_prdctfltr_attributes[] = $k; } } } } $curr_attrs = $wc_settings_prdctfltr_attributes; $curr_options = array('wc_settings_prdctfltr_selected' => $wc_settings_prdctfltr_selected, 'wc_settings_prdctfltr_attributes' => $wc_settings_prdctfltr_attributes, 'wc_settings_prdctfltr_active_filters' => $wc_settings_prdctfltr_active_filters); foreach ($pf_chck_settings as $z => $x) { $curr_z = get_option($z); if ($curr_z === false) { $curr_options[$z] = $x; } else { $curr_options[$z] = $curr_z; } } foreach ($curr_attrs as $k => $attr) { $curr_options['wc_settings_prdctfltr_' . $attr . '_adoptive'] = get_option('wc_settings_prdctfltr_' . $attr . '_adoptive', 'no'); $curr_options['wc_settings_prdctfltr_' . $attr . '_title'] = get_option('wc_settings_prdctfltr_' . $attr . '_title', ''); $curr_options['wc_settings_prdctfltr_' . $attr] = get_option('wc_settings_prdctfltr_' . $attr, 'pf_attr_text'); $curr_options['wc_settings_prdctfltr_' . $attr . '_multi'] = get_option('wc_settings_prdctfltr_' . $attr . '_multi', 'no'); $curr_options['wc_settings_prdctfltr_include_' . $attr] = get_option('wc_settings_prdctfltr_include_' . $attr, array()); } } $curr_elements = $curr_options['wc_settings_prdctfltr_active_filters'] !== NULL ? $curr_options['wc_settings_prdctfltr_active_filters'] : array(); if (in_array($curr_options['wc_settings_prdctfltr_style_preset'], array('pf_arrow', 'pf_arrow_inline')) !== false) { $curr_options['wc_settings_prdctfltr_always_visible'] = 'no'; $curr_options['wc_settings_prdctfltr_disable_bar'] = 'no'; } $curr_styles = array($curr_pf['preset'] !== 'pf_disable' ? ' ' . $curr_pf['preset'] : '', $curr_options['wc_settings_prdctfltr_always_visible'] == 'no' && $curr_options['wc_settings_prdctfltr_disable_bar'] == 'no' ? 'prdctfltr_slide' : 'prdctfltr_always_visible', $curr_options['wc_settings_prdctfltr_click_filter'] == 'no' ? 'prdctfltr_click' : 'prdctfltr_click_filter', $curr_options['wc_settings_prdctfltr_limit_max_height'] == 'no' ? 'prdctfltr_rows' : 'prdctfltr_maxheight', $curr_options['wc_settings_prdctfltr_custom_scrollbar'] == 'no' ? '' : 'prdctfltr_scroll_active', $curr_options['wc_settings_prdctfltr_disable_bar'] == 'no' ? '' : 'prdctfltr_disable_bar', 'pf_mod_multirow', $curr_options['wc_settings_prdctfltr_adoptive'] == 'no' ? '' : $curr_options['wc_settings_prdctfltr_adoptive_style']); $curr_maxheight = $curr_options['wc_settings_prdctfltr_limit_max_height'] == 'yes' ? ' style="max-height:' . $curr_options['wc_settings_prdctfltr_max_height'] . 'px;"' : ''; $pf_order_default = array('' => __('None', 'prdctfltr'), 'menu_order' => __('Default', 'prdctfltr'), 'comment_count' => __('Review Count', 'prdctfltr'), 'popularity' => __('Popularity', 'prdctfltr'), 'rating' => __('Average rating', 'prdctfltr'), 'date' => __('Newness', 'prdctfltr'), 'price' => __('Price: low to high', 'prdctfltr'), 'price-desc' => __('Price: high to low', 'prdctfltr'), 'rand' => __('Random Products', 'prdctfltr'), 'title' => __('Product Name', 'prdctfltr')); if (!empty($curr_options['wc_settings_prdctfltr_include_orderby'])) { foreach ($pf_order_default as $u => $i) { if (!in_array($u, $curr_options['wc_settings_prdctfltr_include_orderby'])) { unset($pf_order_default[$u]); } } $pf_order_default = array_merge(array('' => __('None', 'prdctfltr')), $pf_order_default); } $catalog_orderby = apply_filters('prdctfltr_catalog_orderby', $pf_order_default); $catalog_instock = apply_filters('prdctfltr_catalog_instock', array('' => __('None', 'prdctfltr'), 'in' => __('In Stock', 'prdctfltr'), 'out' => __('Out Of Stock', 'prdctfltr'))); ?> <div id="prdctfltr_woocommerce" class="prdctfltr_woocommerce woocommerce<?php echo implode($curr_styles, ' '); ?> " data-preset="<?php echo $curr_pf['preset']; ?> " data-template="<?php echo $curr_pf['template']; ?> "> <?php if (is_shop() || is_woocommerce()) { global $wp_the_query; $paged = max(1, $wp_the_query->get('paged')); $per_page = $wp_the_query->get('posts_per_page'); $total = $wp_the_query->found_posts; $first = $per_page * $paged - $per_page + 1; $last = min($total, $wp_the_query->get('posts_per_page') * $paged); } else { if (isset($prdctfltr_global['sc_query'])) { $r_args = $prdctfltr_global['sc_query']; } else { $r_args = array(); $r_args = $r_args + array('prdctfltr' => 'active', 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => $prdctfltr_global['posts_per_page'], 'meta_query' => array(array('key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN'))); } $res_products = new WP_Query($r_args); $paged = isset($prdctfltr_global['ajax_paged']) ? $prdctfltr_global['ajax_paged'] : max(1, $res_products->get('paged')); $per_page = isset($prdctfltr_global['posts_per_page']) ? $prdctfltr_global['posts_per_page'] : $res_products->get('posts_per_page'); $total = $res_products->found_posts; $first = $per_page * $paged - $per_page + 1; $last = min($total, $res_products->get('posts_per_page') * $paged); } $pf_query = isset($res_products) ? $res_products : $wp_the_query; if (isset($_GET)) { $supress = array('post_type', 'widget_search'); $allowed = array('orderby', 'min_price', 'max_price', 'instock_products'); $rng_terms = array(); $pf_activated = array(); foreach ($_GET as $k => $v) { if (!in_array($k, $supress + $allowed)) { if (substr($k, 0, 4) == 'rng_' && $v !== '') { if (substr($k, 0, 8) == 'rng_min_') { $rng_terms[str_replace('rng_min_', '', $k)]['min'] = $v; } else { $rng_terms[str_replace('rng_max_', '', $k)]['max'] = $v; } } } if (!in_array($k, $supress)) { if (in_array($k, $allowed)) { $pf_activated = $pf_activated + array($k => $v); } else { if (taxonomy_exists($k)) { $pf_activated = $pf_activated + array($k => $v); } } } } } $pf_activated = $pf_activated + $rng_terms; $curr_mix_count = count($curr_elements); $curr_columns = 1; $curr_columns_class = ' prdctfltr_columns_' . $curr_columns; if ($curr_options['wc_settings_prdctfltr_adoptive'] == 'yes' || defined('DOING_AJAX') && DOING_AJAX) { if ($pf_query->have_posts()) { $output_terms = array(); $pf_query->set('posts_per_page', $total); $t_pos = strpos($pf_query->request, 'LIMIT'); if ($t_pos !== false) { $t_str = substr($pf_query->request, 0, $t_pos); } else { $t_str = $pf_query->request; } $t_str .= ' LIMIT 0,10000000'; global $wpdb; $pf_products = $wpdb->get_results($t_str); $curr_in = array(); foreach ($pf_products as $p) { $curr_in[] = $p->ID; } $curr_ins = implode(',', $curr_in); $curr_tax = implode(',', $curr_elements); $pf_product_terms = $wpdb->get_results($wpdb->prepare(' SELECT slug, taxonomy FROM %1$s INNER JOIN %2$s ON (%1$s.ID = %2$s.object_id) INNER JOIN %3$s ON (%2$s.term_taxonomy_id = %3$s.term_taxonomy_id ) INNER JOIN %4$s ON (%3$s.term_id = %4$s.term_id ) WHERE %1$s.ID IN (' . $curr_ins . ') ORDER BY %4$s.name ASC ', $wpdb->posts, $wpdb->term_relationships, $wpdb->term_taxonomy, $wpdb->terms)); foreach ($pf_product_terms as $p) { if (!isset($output_terms[$p->taxonomy])) { $output_terms[$p->taxonomy] = array(); } if (!array_key_exists($p->slug, $output_terms[$p->taxonomy])) { $output_terms[$p->taxonomy][$p->slug] = 1; } else { if (array_key_exists($p->slug, $output_terms[$p->taxonomy])) { $output_terms[$p->taxonomy][$p->slug] = $output_terms[$p->taxonomy][$p->slug] + 1; } } } } } $curr_cat_query = get_option('wc_settings_prdctfltr_categories_query', 'no'); if (is_product_taxonomy() || is_product()) { if ($curr_cat_query == 'no') { $curr_action = get_permalink(wc_get_page_id('shop')); } else { if (get_option('permalink_structure') == '') { $curr_action = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request))); } else { $curr_action = preg_replace('%\\/page/[0-9]+%', '', home_url($wp->request)); } } } else { if (!isset($prdctfltr_global['action'])) { if (get_option('permalink_structure') == '') { $curr_action = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request))); } else { $curr_action = preg_replace('%\\/page/[0-9]+%', '', home_url($wp->request)); } } else { $curr_action = $prdctfltr_global['action']; } } ?> <form action="<?php echo $curr_action; ?> " class="prdctfltr_woocommerce_ordering" method="get"> <div class="prdctfltr_filter_wrapper<?php echo $curr_columns_class; ?> " data-columns="<?php echo $curr_columns; ?> "> <div class="prdctfltr_filter_inner"> <?php $q = 0; $n = 0; $p = 0; $active_filters = array(); foreach ($curr_elements as $k => $v) { if ($q == $curr_columns && ($curr_options['wc_settings_prdctfltr_style_mode'] == 'pf_mod_multirow' || $curr_options['wc_settings_prdctfltr_style_preset'] == 'pf_select')) { ?> <div class="prdctfltr_clear"></div> <?php } switch ($v) { case 'instock': if (!in_array('instock', $active_filters)) { $active_filters[] = 'instock'; } ?> <div class="prdctfltr_filter prdctfltr_instock"> <input name="instock_products" type="hidden"<?php echo isset($_GET['instock_products']) ? ' value="' . $_GET['instock_products'] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['instock_products'])) { echo '<a href="#" data-key="instock_products"><i class="prdctfltr-delete"></i></a> <span>' . $catalog_instock[$_GET['instock_products']] . '</span> / '; } if ($curr_options['wc_settings_prdctfltr_instock_title'] != '') { echo $curr_options['wc_settings_prdctfltr_instock_title']; } else { _e('Product Availability', 'prdctfltr'); } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php foreach ($catalog_instock as $id => $name) { printf('<label%4$s><input type="checkbox" value="%1$s" %2$s /><span>%3$s</span></label>', esc_attr($id), isset($_GET['instock_products']) && $_GET['instock_products'] == $id ? 'checked' : '', esc_attr($name), isset($_GET['instock_products']) && $_GET['instock_products'] == $id ? ' class="prdctfltr_active"' : ''); } ?> </div> </div> <?php break; case 'sort': if (!in_array('orderby', $active_filters)) { $active_filters[] = 'orderby'; } ?> <div class="prdctfltr_filter prdctfltr_orderby"> <input name="orderby" type="hidden"<?php echo isset($_GET['orderby']) ? ' value="' . $_GET['orderby'] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['orderby']) && isset($catalog_orderby[$_GET['orderby']])) { echo '<a href="#" data-key="orderby"><i class="prdctfltr-delete"></i></a> <span>' . $catalog_orderby[$_GET['orderby']] . '</span> / '; } if ($curr_options['wc_settings_prdctfltr_orderby_title'] != '') { echo $curr_options['wc_settings_prdctfltr_orderby_title']; } else { _e('Sort by', 'prdctfltr'); } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php if (get_option('woocommerce_enable_review_rating') === 'no') { unset($catalog_orderby['rating']); } foreach ($catalog_orderby as $id => $name) { printf('<label%4$s><input type="checkbox" value="%1$s" %2$s /><span>%3$s</span></label>', esc_attr($id), isset($_GET['orderby']) && $_GET['orderby'] == $id ? 'checked' : '', esc_attr($name), isset($_GET['orderby']) && $_GET['orderby'] == $id ? ' class="prdctfltr_active"' : ''); } ?> </div> </div> <?php break; case 'price': if (!in_array('price', $active_filters)) { $active_filters[] = 'price'; } ?> <div class="prdctfltr_filter prdctfltr_byprice"> <input name="min_price" type="hidden"<?php echo isset($_GET['min_price']) ? ' value="' . $_GET['min_price'] . '"' : ''; ?> > <input name="max_price" type="hidden"<?php echo isset($_GET['max_price']) ? ' value="' . $_GET['max_price'] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['min_price']) && $_GET['min_price'] !== '') { $min_price = wc_price($_GET['min_price']); if (isset($_GET['max_price']) && $_GET['max_price'] !== '') { $curr_max_price = $_GET['max_price']; $max_price = wc_price($_GET['max_price']); } else { $max_price = ' +'; } echo '<a href="#" data-key="byprice"><i class="prdctfltr-delete"></i></a> <span>' . $min_price . ' - ' . $max_price . '</span> / '; } if ($curr_options['wc_settings_prdctfltr_price_title'] != '') { echo $curr_options['wc_settings_prdctfltr_price_title']; } else { _e('Price range', 'prdctfltr'); } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <?php $curr_price = isset($_GET['min_price']) ? $_GET['min_price'] . '-' . (isset($_GET['max_price']) ? $_GET['max_price'] : '') : ''; $curr_price_set = $curr_options['wc_settings_prdctfltr_price_range']; $curr_price_add = $curr_options['wc_settings_prdctfltr_price_range_add']; $curr_price_limit = $curr_options['wc_settings_prdctfltr_price_range_limit']; $curr_prices = array(); $curr_prices_currency = array(); global $wpdb; $min = floor($wpdb->get_var($wpdb->prepare(' SELECT min(meta_value + 0) FROM %1$s LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id WHERE ( meta_key = \'%3$s\' OR meta_key = \'%4$s\' ) AND meta_value != "" ', $wpdb->posts, $wpdb->postmeta, '_price', '_min_variation_price'))); $catalog_ready_price = array('-' => __('None', 'prdctfltr')); for ($i = 0; $i < $curr_price_limit; $i++) { if ($i == 0) { $min_price = $min; $max_price = $curr_price_set; } else { $min_price = $curr_price_set + ($i - 1) * $curr_price_add; $max_price = $curr_price_set + $i * $curr_price_add; } $curr_prices[$i] = $min_price . '-' . ($i + 1 == $curr_price_limit ? '' : $max_price); $curr_prices_currency[$i] = wc_price($min_price) . ($i + 1 == $curr_price_limit ? '+' : ' - ' . wc_price($max_price)); $catalog_ready_price = $catalog_ready_price + array($curr_prices[$i] => $curr_prices_currency[$i]); } $catalog_price = apply_filters('prdctfltr_catalog_price', $catalog_ready_price); $catalog_price = array('-' => __('None', 'prdctfltr')) + $catalog_price; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php foreach ($catalog_price as $id => $name) { printf('<label%4$s><input type="checkbox" value="%1$s" %2$s /><span>%3$s</span></label>', esc_attr($id), $curr_price == $id ? 'checked' : '', $name, $curr_price == $id ? ' class="prdctfltr_active"' : ''); } ?> </div> </div> <?php break; case 'cat': if ($curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' && isset($output_terms) && (!isset($output_terms['product_cat']) || empty($output_terms['product_cat'])) === true && $total !== 0) { continue; } if (!in_array('product_cat', $active_filters)) { $active_filters[] = 'product_cat'; } $curr_limit = intval($curr_options['wc_settings_prdctfltr_cat_limit']); if ($curr_limit !== 0) { $catalog_categories = get_terms('product_cat', array('hide_empty' => 1, 'orderby' => 'count', 'order' => 'DESC', 'number' => $curr_limit)); } else { $catalog_categories = get_terms('product_cat', array('hide_empty' => 1)); if ($curr_options['wc_settings_prdctfltr_cat_hierarchy'] == 'yes') { $catalog_categories_sorted = array(); prdctfltr_sort_terms_hierarchicaly($catalog_categories, $catalog_categories_sorted); $catalog_categories = $catalog_categories_sorted; } } if (!empty($catalog_categories) && !is_wp_error($catalog_categories)) { $curr_term_multi = $curr_options['wc_settings_prdctfltr_cat_multi'] == 'yes' ? ' prdctfltr_multi' : ' prdctfltr_single'; $curr_term_adoptive = $curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' ? ' prdctfltr_adoptive' : ''; ?> <div class="prdctfltr_filter prdctfltr_cat <?php echo $curr_term_multi; ?> <?php echo $curr_term_adoptive; ?> "> <input name="product_cat" type="hidden"<?php echo isset($_GET['product_cat']) ? ' value="' . $_GET['product_cat'] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['product_cat'])) { $curr_selected = !is_shop() && is_product_category() ? array($_GET['product_cat']) : explode(',', $pf_query->query_vars['product_cat']); echo '<a href="#" data-key="product_cat"><i class="prdctfltr-delete"></i></a> <span>'; $i = 0; foreach ($curr_selected as $selected) { $curr_term = get_term_by('slug', $selected, 'product_cat'); echo ($i !== 0 ? ', ' : '') . $curr_term->name; $i++; } echo '</span> / '; } if ($curr_options['wc_settings_prdctfltr_cat_title'] != '') { echo $curr_options['wc_settings_prdctfltr_cat_title']; } else { _e('Categories', 'prdctfltr'); } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php $curr_include = $curr_options['wc_settings_prdctfltr_include_cats']; printf('<label><input type="checkbox" value="" /><span>%1$s</span></label>', __('None', 'prdctfltr')); foreach ($catalog_categories as $term) { if (isset($term->children)) { $pf_children = $term->children; } else { $pf_children = array(); } if (!empty($curr_include) && !in_array($term->slug, $curr_include)) { continue; } $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' && isset($output_terms['product_cat']) && !empty($output_terms['product_cat']) && !array_key_exists($term->slug, $output_terms['product_cat'])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%6$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s%7$s</span>%5$s</label>', $term->slug, $term->name, isset($_GET['product_cat']) && $_GET['product_cat'] == $term->slug ? 'checked' : '', isset($_GET['product_cat']) && in_array($term->slug, !is_shop() && is_product_category() ? array($_GET['product_cat']) : explode(',', $pf_query->query_vars['product_cat'])) ? ' prdctfltr_active"' : '', !empty($pf_children) ? '<i class="prdctfltr-plus"></i>' : '', $pf_adoptive_class, $curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms['product_cat']) && isset($output_terms['product_cat'][$term->slug]) && $output_terms['product_cat'][$term->slug] != $term->count ? $output_terms['product_cat'][$term->slug] . '/' . $term->count : $term->count) . '</span>'); if ($curr_options['wc_settings_prdctfltr_cat_hierarchy'] == 'yes' && !empty($pf_children)) { printf('<div class="prdctfltr_sub" data-sub="%1$s">', $term->slug); foreach ($pf_children as $sub) { $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' && isset($output_terms['product_cat']) && !empty($output_terms['product_cat']) && !array_key_exists($sub->slug, $output_terms['product_cat'])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%6$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s%7$s</span>%5$s</label>', $sub->slug, $sub->name, isset($_GET['product_cat']) && $_GET['product_cat'] == $sub->slug ? 'checked' : '', isset($_GET['product_cat']) && in_array($sub->slug, !is_shop() && is_product_category() ? array($_GET['product_cat']) : explode(',', $pf_query->query_vars['product_cat'])) ? ' prdctfltr_active' : '', !empty($sub->children) ? '<i class="prdctfltr-plus"></i>' : '', $pf_adoptive_class, $curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms['product_cat']) && isset($output_terms['product_cat'][$sub->slug]) && $output_terms['product_cat'][$sub->slug] != $sub->count ? $output_terms['product_cat'][$sub->slug] . '/' . $sub->count : $sub->count) . '</span>'); if (!empty($sub->children)) { printf('<div class="prdctfltr_sub" data-sub="%1$s">', $sub->slug); foreach ($sub->children as $subsub) { $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' && isset($output_terms['product_cat']) && !empty($output_terms['product_cat']) && !array_key_exists($subsub->slug, $output_terms['product_cat'])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%6$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s%7$s</span>%5$s</label>', $subsub->slug, $subsub->name, isset($_GET['product_cat']) && $_GET['product_cat'] == $subsub->slug ? 'checked' : '', isset($_GET['product_cat']) && in_array($subsub->slug, !is_shop() && is_product_category() ? array($_GET['product_cat']) : explode(',', $pf_query->query_vars['product_cat'])) ? ' prdctfltr_active' : '', !empty($subsub->children) ? '<i class="prdctfltr-plus"></i>' : '', $pf_adoptive_class, $curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms['product_cat']) && isset($output_terms['product_cat'][$subsub->slug]) && $output_terms['product_cat'][$subsub->slug] != $subsub->count ? $output_terms['product_cat'][$subsub->slug] . '/' . $subsub->count : $subsub->count) . '</span>'); if (!empty($subsub->children)) { printf('<div class="prdctfltr_sub" data-sub="%1$s">', $subsub->slug); foreach ($subsub->children as $subsubsub) { $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' && isset($output_terms['product_cat']) && !empty($output_terms['product_cat']) && !array_key_exists($subsubsub->slug, $output_terms['product_cat'])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%5$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s%6$s</span></label>', $subsubsub->slug, $subsubsub->name, isset($_GET['product_cat']) && $_GET['product_cat'] == $subsubsub->slug ? 'checked' : '', isset($_GET['product_cat']) && in_array($subsubsub->slug, !is_shop() && is_product_category() ? array($_GET['product_cat']) : explode(',', $pf_query->query_vars['product_cat'])) ? ' prdctfltr_active' : '', $pf_adoptive_class, $curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms['product_cat']) && isset($output_terms['product_cat'][$subsubsub->slug]) && $output_terms['product_cat'][$subsubsub->slug] != $subsubsub->count ? $output_terms['product_cat'][$subsubsub->slug] . '/' . $subsubsub->count : $subsubsub->count) . '</span>'); } echo '</div>'; } } echo '</div>'; } } echo '</div>'; } } ?> </div> </div> <?php } ?> <?php break; case 'tag': if ($curr_options['wc_settings_prdctfltr_tag_adoptive'] == 'yes' && isset($output_terms) && (!isset($output_terms['product_tag']) || empty($output_terms['product_tag'])) === true && $total !== 0) { continue; } if (!in_array('product_tag', $active_filters)) { $active_filters[] = 'product_tag'; } ?> <?php $curr_limit = intval($curr_options['wc_settings_prdctfltr_tag_limit']); if ($curr_limit !== 0) { $catalog_tags = get_terms('product_tag', array('hide_empty' => 1, 'orderby' => 'count', 'order' => 'DESC', 'number' => $curr_limit)); } else { $catalog_tags = get_terms('product_tag', array('hide_empty' => 1)); } if (!empty($catalog_tags) && !is_wp_error($catalog_tags)) { $curr_term_multi = $curr_options['wc_settings_prdctfltr_tag_multi'] == 'yes' ? ' prdctfltr_multi' : ' prdctfltr_single'; $curr_term_adoptive = $curr_options['wc_settings_prdctfltr_tag_adoptive'] == 'yes' ? ' prdctfltr_adoptive' : ''; ?> <div class="prdctfltr_filter prdctfltr_tag <?php echo $curr_term_multi; ?> <?php echo $curr_term_adoptive; ?> "> <input name="product_tag" type="hidden"<?php echo isset($_GET['product_tag']) ? ' value="' . $_GET['product_tag'] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['product_tag'])) { $curr_selected = explode(',', $pf_query->query_vars['product_tag']); echo '<a href="#" data-key="product_tag"><i class="prdctfltr-delete"></i></a> <span>'; $i = 0; foreach ($curr_selected as $selected) { $curr_term = get_term_by('slug', $selected, 'product_tag'); echo ($i !== 0 ? ', ' : '') . $curr_term->name; $i++; } echo '</span> / '; } if ($curr_options['wc_settings_prdctfltr_tag_title'] != '') { echo $curr_options['wc_settings_prdctfltr_tag_title']; } else { _e('Tags', 'prdctfltr'); } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php $curr_include = $curr_options['wc_settings_prdctfltr_include_tags']; printf('<label><input type="checkbox" value="" /><span>%1$s</span></label>', __('None', 'prdctfltr')); foreach ($catalog_tags as $term) { if (!empty($curr_include) && !in_array($term->slug, $curr_include)) { continue; } $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_tag_adoptive'] == 'yes' && isset($output_terms['product_tag']) && !empty($output_terms['product_tag']) && !array_key_exists($term->slug, $output_terms['product_tag'])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%5$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s%6$s</span></label>', $term->slug, $term->name, isset($_GET['product_tag']) && $_GET['product_tag'] == $term->slug ? 'checked' : '', isset($pf_query->query_vars['product_tag']) && in_array($term->slug, explode(',', $pf_query->query_vars['product_tag'])) ? ' prdctfltr_active' : '', $pf_adoptive_class, $curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms['product_tag']) && isset($output_terms['product_tag'][$term->slug]) && $output_terms['product_tag'][$term->slug] != $term->count ? $output_terms['product_tag'][$term->slug] . '/' . $term->count : $term->count) . '</span>'); } ?> </div> </div> <?php } break; case 'char': if ($curr_options['wc_settings_prdctfltr_chars_adoptive'] == 'yes' && isset($output_terms) && (!isset($output_terms['characteristics']) || empty($output_terms['characteristics'])) === true && $total !== 0) { continue; } if (!in_array('characteristics', $active_filters)) { $active_filters[] = 'characteristics'; } ?> <?php $curr_limit = intval($curr_options['wc_settings_prdctfltr_custom_tax_limit']); if ($curr_limit !== 0) { $catalog_characteristics = get_terms('characteristics', array('hide_empty' => 1, 'orderby' => 'count', 'order' => 'DESC', 'number' => $curr_limit)); } else { $catalog_characteristics = get_terms('characteristics', array('hide_empty' => 1)); } if (!empty($catalog_characteristics) && !is_wp_error($catalog_characteristics)) { $curr_term_multi = $curr_options['wc_settings_prdctfltr_chars_multi'] == 'yes' ? ' prdctfltr_multi' : ' prdctfltr_single'; $curr_term_adoptive = $curr_options['wc_settings_prdctfltr_chars_adoptive'] == 'yes' ? ' prdctfltr_adoptive' : ''; ?> <div class="prdctfltr_filter prdctfltr_characteristics <?php echo $curr_term_multi; ?> <?php echo $curr_term_adoptive; ?> "> <input name="characteristics" type="hidden"<?php echo isset($_GET['characteristics']) ? ' value="' . $_GET['characteristics'] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['characteristics'])) { $curr_selected = explode(',', $pf_query->query_vars['characteristics']); echo '<a href="#" data-key="characteristics"><i class="prdctfltr-delete"></i></a> <span>'; $i = 0; foreach ($curr_selected as $selected) { $curr_term = get_term_by('slug', $selected, 'characteristics'); echo ($i !== 0 ? ', ' : '') . $curr_term->name; $i++; } echo '</span> / '; } if ($curr_options['wc_settings_prdctfltr_custom_tax_title'] != '') { echo $curr_options['wc_settings_prdctfltr_custom_tax_title']; } else { _e('Characteristics', 'prdctfltr'); } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php $curr_include = $curr_options['wc_settings_prdctfltr_include_chars']; printf('<label><input type="checkbox" value="" /><span>%1$s</span></label>', __('None', 'prdctfltr')); foreach ($catalog_characteristics as $term) { if (!empty($curr_include) && !in_array($term->slug, $curr_include)) { continue; } $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_chars_adoptive'] == 'yes' && isset($output_terms['characteristics']) && !empty($output_terms['characteristics']) && !array_key_exists($term->slug, $output_terms['characteristics'])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%5$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s%6$s</span></label>', $term->slug, $term->name, isset($_GET['characteristics']) && $_GET['characteristics'] == $term->slug ? 'checked' : '', isset($pf_query->query_vars['characteristics']) && in_array($term->slug, explode(',', $pf_query->query_vars['characteristics'])) ? ' prdctfltr_active' : '', $pf_adoptive_class, $curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms['characteristics']) && isset($output_terms['characteristics'][$term->slug]) && $output_terms['characteristics'][$term->slug] != $term->count ? $output_terms['characteristics'][$term->slug] . '/' . $term->count : $term->count) . '</span>'); } ?> </div> </div> <?php } break; case 'advanced': $attr = $curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_taxonomy'][$n]; if ($curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_adoptive'][$n] == 'yes' && isset($output_terms) && (!isset($output_terms[$attr]) || empty($output_terms[$attr])) === true && $total !== 0) { continue; } if (!in_array($attr, $active_filters)) { $active_filters[] = $attr; } $curr_attributes = get_terms($attr, array('hide_empty' => 1)); $curr_term = get_taxonomy($attr); $curr_term_style = 'text'; $curr_term_multi = $curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_multiselect'][$n] == 'yes' ? ' prdctfltr_multi' : ' prdctfltr_single'; $curr_term_adoptive = $curr_options['wc_settings_prdctfltr_' . $attr . '_adoptive'] == 'yes' ? ' prdctfltr_adoptive' : ''; ?> <div class="prdctfltr_filter prdctfltr_attributes prdctfltr_<?php echo $attr; ?> <?php echo $curr_term_style; ?> <?php echo $curr_term_multi; ?> <?php echo $curr_term_adoptive; ?> "> <input name="<?php echo $attr; ?> " type="hidden"<?php echo isset($pf_query->query_vars[$attr]) ? ' value="' . $pf_query->query_vars[$attr] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET[$attr])) { $curr_selected = explode(',', $pf_query->query_vars[$attr]); echo '<a href="#" data-key="' . $attr . '"><i class="prdctfltr-delete"></i></a> <span>'; $i = 0; foreach ($curr_selected as $selected) { $curr_sterm = get_term_by('slug', $selected, $attr); echo ($i !== 0 ? ', ' : '') . $curr_sterm->name; $i++; } echo '</span> / '; } if ($curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_title'][$n] !== '') { echo $curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_title'][$n]; } else { $curr_term->label; } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php $curr_include = $curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_include'][$n]; switch ($curr_term_style) { case 'pf_attr_text': $curr_blank_element = __('None', 'prdctfltr'); break; case 'pf_attr_imgtext': $curr_blank_element = '<img src="' . PRDCTFLTR_URL . '/lib/images/pf-transparent.gif" />'; $curr_blank_element .= __('None', 'prdctfltr'); break; case 'pf_attr_img': $curr_blank_element = '<img src="' . PRDCTFLTR_URL . '/lib/images/pf-transparent.gif" />'; break; default: $curr_blank_element = __('None', 'prdctfltr'); break; } printf('<label><input type="checkbox" value="" /><span>%1$s</span></label>', $curr_blank_element); foreach ($curr_attributes as $attribute) { if (!empty($curr_include) && !in_array($attribute->slug, $curr_include)) { continue; } switch ($curr_term_style) { case 'pf_attr_text': $curr_attr_element = $attribute->name . ($curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms[$attr]) && isset($output_terms[$attr][$attribute->slug]) && $output_terms[$attr][$attribute->slug] != $attribute->count ? $output_terms[$attr][$attribute->slug] . '/' . $attribute->count : $attribute->count) . '</span>'); break; case 'pf_attr_imgtext': $curr_attr_element = wp_get_attachment_image(get_woocommerce_term_meta($attribute->term_id, $attr . '_thumbnail_id_photo', true), 'shop_thumbnail'); $curr_attr_element .= $attribute->name . ($curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms[$attr]) && isset($output_terms[$attr][$attribute->slug]) && $output_terms[$attr][$attribute->slug] != $attribute->count ? $output_terms[$attr][$attribute->slug] . '/' . $attribute->count : $attribute->count) . '</span>'); break; case 'pf_attr_img': $curr_attr_element = wp_get_attachment_image(get_woocommerce_term_meta($attribute->term_id, $attr . '_thumbnail_id_photo', true), 'shop_thumbnail'); break; default: $curr_attr_element = $attribute->name; break; } $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_advanced_filters']['pfa_adoptive'][$n] == 'yes' && isset($output_terms[$attr]) && !empty($output_terms[$attr]) && !array_key_exists($attribute->slug, $output_terms[$attr])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%5$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s</span></label>', $attribute->slug, $curr_attr_element, isset($_GET[$attr]) && $_GET[$attr] == $attribute->slug ? 'checked' : '', isset($pf_query->query_vars[$attr]) && in_array($attribute->slug, explode(',', $pf_query->query_vars[$attr])) ? ' prdctfltr_active' : '', $pf_adoptive_class); } ?> </div> </div> <?php $n++; break; case 'range': $attr = $curr_options['wc_settings_prdctfltr_range_filters']['pfr_taxonomy'][$p]; if (!in_array($attr, $active_filters)) { $active_filters[] = $attr; } ?> <div class="prdctfltr_filter prdctfltr_range prdctfltr_<?php echo $attr; ?> <?php echo $curr_term_style; ?> <?php echo 'pf_rngstyle_' . $curr_options['wc_settings_prdctfltr_range_filters']['pfr_style'][$p]; ?> "> <input name="rng_min_<?php echo $attr; ?> " type="hidden"<?php echo isset($_GET['rng_min_' . $attr]) ? ' value="' . $_GET['rng_min_' . $attr] . '"' : ''; ?> > <input name="rng_max_<?php echo $attr; ?> " type="hidden"<?php echo isset($_GET['rng_max_' . $attr]) ? ' value="' . $_GET['rng_max_' . $attr] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET['rng_min_' . $attr]) && isset($_GET['rng_max_' . $attr])) { echo '<a href="#" data-key="rng_' . $attr . '"><i class="prdctfltr-delete"></i></a> <span>'; if ($attr == 'price') { echo wc_price($_GET['rng_min_' . $attr]) . ' - ' . wc_price($_GET['rng_max_' . $attr]); } else { $pf_f_term = get_term_by('slug', $_GET['rng_min_' . $attr], $attr); $pf_s_term = get_term_by('slug', $_GET['rng_max_' . $attr], $attr); echo $pf_f_term->name . ' - ' . $pf_s_term->name; } echo '</span> / '; } if ($curr_options['wc_settings_prdctfltr_range_filters']['pfr_title'][$p] !== '') { echo $curr_options['wc_settings_prdctfltr_range_filters']['pfr_title'][$p]; } else { if (!in_array($curr_options['wc_settings_prdctfltr_range_filters']['pfr_taxonomy'][$p], array('price'))) { $curr_term = get_taxonomy($attr); echo $curr_term->label; } else { _e('Price range', 'prdctfltr'); } } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php $pf_add_settings = ''; $curr_include = $curr_options['wc_settings_prdctfltr_range_filters']['pfr_include'][$p]; if (!in_array($curr_options['wc_settings_prdctfltr_range_filters']['pfr_taxonomy'][$p], array('price'))) { $curr_attributes = get_terms($attr, array('hide_empty' => 1)); $pf_add_settings .= 'values:['; $c = 0; foreach ($curr_attributes as $attribute) { if (!empty($curr_include) && !in_array($attribute->slug, $curr_include)) { continue; } if (isset($_GET['rng_min_' . $attr]) && isset($_GET['rng_max_' . $attr])) { if ($_GET['rng_min_' . $attr] == $attribute->slug) { $pf_curr_min = $c; } if ($_GET['rng_max_' . $attr] == $attribute->slug) { $pf_curr_max = $c; } } $pf_add_settings .= ($c !== 0 ? ', ' : '') . '"' . $attribute->slug . '"'; $c++; } $pf_add_settings .= '], decorate_both: false,values_separator: " → ", min_interval: 1, '; } else { global $wpdb; $pf_curr_min = floor($wpdb->get_var($wpdb->prepare(' SELECT min(meta_value + 0) FROM %1$s LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id WHERE ( meta_key = \'%3$s\' OR meta_key = \'%4$s\' ) AND meta_value != "" ', $wpdb->posts, $wpdb->postmeta, '_price', '_min_variation_price'))); $pf_curr_max = ceil($wpdb->get_var($wpdb->prepare(' SELECT max(meta_value + 0) FROM %1$s LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id WHERE ( meta_key = \'%3$s\' OR meta_key = \'%4$s\' ) AND meta_value != "" ', $wpdb->posts, $wpdb->postmeta, '_price', '_max_variation_price'))); $pf_add_settings .= 'min:' . $pf_curr_min . ', max:' . $pf_curr_max . ', min_interval: 1, '; $currency_pos = get_option('woocommerce_currency_pos'); $currency = get_woocommerce_currency_symbol(); switch ($currency_pos) { case 'left': $pf_add_settings .= 'prefix: "' . $currency . '", '; break; case 'right': $pf_add_settings .= 'postfix: "' . $currency . '", '; break; case 'left_space': $pf_add_settings .= 'prefix: "' . $currency . ' ", '; break; case 'right_space': $pf_add_settings .= 'postfix: " ' . $currency . '", '; break; } if ((isset($_GET['rng_min_' . $attr]) && isset($_GET['rng_max_' . $attr])) !== false) { $pf_curr_min = isset($_GET['rng_min_' . $attr]) ? $_GET['rng_min_' . $attr] : $_GET['min_' . $attr]; $pf_curr_max = isset($_GET['rng_max_' . $attr]) ? $_GET['rng_max_' . $attr] : $_GET['max_' . $attr]; } } if ($curr_options['wc_settings_prdctfltr_range_filters']['pfr_grid'][$p] == 'yes') { $pf_add_settings .= 'grid: true, '; } if ((isset($_GET['rng_min_' . $attr]) && isset($_GET['rng_max_' . $attr])) !== false) { $pf_add_settings .= 'from:' . $pf_curr_min . ',to:' . $pf_curr_max . ', '; } $pf_add_settings .= 'force_edges: true, '; $pf_add_settings .= ' onFinish: function (data) { if ( data.min == data.from && data.max == data.to ) { $(\'#prdctfltr_rng_' . $p . '\').closest(\'.prdctfltr_filter\').find(\'input[name^="rng_min_"]:first\').val( \'\' ); $(\'#prdctfltr_rng_' . $p . '\').closest(\'.prdctfltr_filter\').find(\'input[name^="rng_max_"]:first\').val( \'\' ).trigger(\'change\'); } else { $(\'#prdctfltr_rng_' . $p . '\').closest(\'.prdctfltr_filter\').find(\'input[name^="rng_min_"]:first\').val( ( data.from_value == null ? data.from : data.from_value ) ); $(\'#prdctfltr_rng_' . $p . '\').closest(\'.prdctfltr_filter\').find(\'input[name^="rng_max_"]:first\').val( ( data.to_value == null ? data.to : data.to_value ) ).trigger(\'change\'); } }'; printf('<input id="prdctfltr_rng_%1$s" />', $p); ?> <script type="text/javascript"> (function($){ "use strict"; $('#prdctfltr_rng_<?php echo $p; ?> ').ionRangeSlider({ type: 'double', <?php echo $pf_add_settings; ?> }); })(jQuery); </script> <?php ?> </div> </div> <?php $p++; break; default: $attr = $v; if ($curr_options['wc_settings_prdctfltr_' . $attr . '_adoptive'] == 'yes' && isset($output_terms) && (!isset($output_terms[$attr]) || empty($output_terms[$attr])) === true && $total !== 0) { continue; } if (!in_array($attr, $active_filters)) { $active_filters[] = $attr; } $curr_attributes = get_terms($attr, array('hide_empty' => 1)); $curr_term = get_taxonomy($attr); $curr_term_style = $curr_options['wc_settings_prdctfltr_' . $attr]; $curr_term_multi = $curr_options['wc_settings_prdctfltr_' . $attr . '_multi'] == 'yes' ? ' prdctfltr_multi' : ' prdctfltr_single'; $curr_term_adoptive = $curr_options['wc_settings_prdctfltr_' . $attr . '_adoptive'] == 'yes' ? ' prdctfltr_adoptive' : ''; ?> <div class="prdctfltr_filter prdctfltr_attributes prdctfltr_<?php echo $attr; ?> <?php echo $curr_term_style; ?> <?php echo $curr_term_multi; ?> <?php echo $curr_term_adoptive; ?> "> <input name="<?php echo $attr; ?> " type="hidden"<?php echo isset($pf_query->query_vars[$attr]) ? ' value="' . $pf_query->query_vars[$attr] . '"' : ''; ?> > <?php echo $before_title; ?> <span class="prdctfltr_widget_title"> <?php if (isset($_GET[$attr])) { $curr_selected = explode(',', $pf_query->query_vars[$attr]); echo '<a href="#" data-key="' . $attr . '"><i class="prdctfltr-delete"></i></a> <span>'; $i = 0; foreach ($curr_selected as $selected) { $curr_sterm = get_term_by('slug', $selected, $attr); echo ($i !== 0 ? ', ' : '') . $curr_sterm->name; $i++; } echo '</span> / '; } if ($curr_options['wc_settings_prdctfltr_' . $attr . '_title'] != '') { echo $curr_options['wc_settings_prdctfltr_' . $attr . '_title']; } else { echo $curr_term->label; } ?> <i class="prdctfltr-down"></i> </span> <?php echo $after_title; ?> <div class="prdctfltr_checkboxes"<?php echo $curr_maxheight; ?> > <?php $curr_include = $curr_options['wc_settings_prdctfltr_include_' . $attr]; switch ($curr_term_style) { case 'pf_attr_text': $curr_blank_element = __('None', 'prdctfltr'); break; case 'pf_attr_imgtext': $curr_blank_element = '<img src="' . PRDCTFLTR_URL . '/lib/images/pf-transparent.gif" />'; $curr_blank_element .= __('None', 'prdctfltr'); break; case 'pf_attr_img': $curr_blank_element = '<img src="' . PRDCTFLTR_URL . '/lib/images/pf-transparent.gif" />'; break; default: $curr_blank_element = __('None', 'prdctfltr'); break; } printf('<label><input type="checkbox" value="" /><span>%1$s</span></label>', $curr_blank_element); foreach ($curr_attributes as $attribute) { if (!empty($curr_include) && !in_array($attribute->slug, $curr_include)) { continue; } switch ($curr_term_style) { case 'pf_attr_text': $curr_attr_element = $attribute->name . ($curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms[$attr]) && isset($output_terms[$attr][$attribute->slug]) && $output_terms[$attr][$attribute->slug] != $attribute->count ? $output_terms[$attr][$attribute->slug] . '/' . $attribute->count : $attribute->count) . '</span>'); break; case 'pf_attr_imgtext': $curr_attr_element = wp_get_attachment_image(get_woocommerce_term_meta($attribute->term_id, $attr . '_thumbnail_id_photo', true), 'shop_thumbnail'); $curr_attr_element .= $attribute->name . ($curr_options['wc_settings_prdctfltr_show_counts'] == 'no' ? '' : ' <span class="prdctfltr_count">' . (isset($output_terms[$attr]) && isset($output_terms[$attr][$attribute->slug]) && $output_terms[$attr][$attribute->slug] != $attribute->count ? $output_terms[$attr][$attribute->slug] . '/' . $attribute->count : $attribute->count) . '</span>'); break; case 'pf_attr_img': $curr_attr_element = wp_get_attachment_image(get_woocommerce_term_meta($attribute->term_id, $attr . '_thumbnail_id_photo', true), 'shop_thumbnail'); break; default: $curr_attr_element = $attribute->name; break; } $pf_adoptive_class = ''; if ($curr_options['wc_settings_prdctfltr_' . $attr . '_adoptive'] == 'yes' && isset($output_terms[$attr]) && !empty($output_terms[$attr]) && !array_key_exists($attribute->slug, $output_terms[$attr])) { $pf_adoptive_class = ' pf_adoptive_hide'; } printf('<label class="%5$s%4$s"><input type="checkbox" value="%1$s" %3$s /><span>%2$s</span></label>', $attribute->slug, $curr_attr_element, isset($_GET[$attr]) && $_GET[$attr] == $attribute->slug ? 'checked' : '', isset($pf_query->query_vars[$attr]) && in_array($attribute->slug, explode(',', $pf_query->query_vars[$attr])) ? ' prdctfltr_active' : '', $pf_adoptive_class); } ?> </div> </div> <?php break; } $q++; } ?> <div class="prdctfltr_clear"></div> </div> </div> <?php if ($curr_options['wc_settings_prdctfltr_click_filter'] == 'no') { ?> <a id="prdctfltr_woocommerce_filter_submit" class="button" href="#"><?php _e('Filter selected', 'prdctfltr'); ?> </a> <?php } if ($curr_options['wc_settings_prdctfltr_disable_sale'] == 'no') { ?> <span class="prdctfltr_sale"> <?php printf('<label%2$s><input name="sale_products" type="checkbox"%3$s/><span>%1$s</span></label>', __('Show only products on sale', 'prdctfltr'), isset($_GET['sale_products']) ? ' class="prdctfltr_active"' : '', isset($_GET['sale_products']) ? ' checked' : ''); ?> </span> <?php } if ($curr_options['wc_settings_prdctfltr_disable_instock'] == 'no' && !in_array('instock', $curr_elements)) { ?> <span class="prdctfltr_instock"> <?php printf('<label%2$s><input name="instock_products" type="checkbox" value="in"%3$s/><span>%1$s</span></label>', __('In stock only', 'prdctfltr'), isset($_GET['instock_products']) ? ' class="prdctfltr_active"' : '', isset($_GET['instock_products']) ? ' checked' : ''); ?> </span> <?php } if ($curr_options['wc_settings_prdctfltr_disable_reset'] == 'no' && isset($pf_activated) && !empty($pf_activated)) { ?> <span class="prdctfltr_reset"> <?php printf('<label><input name="reset_filter" type="checkbox" /><span>%1$s</span></label>', __('Clear all filters', 'prdctfltr')); ?> </span> <?php } ?> <div class="prdctfltr_add_inputs"> <input type="hidden" name="widget_search" value="yes" /> <?php if (isset($_GET['s'])) { echo '<input type="hidden" name="s" value="' . $_GET['s'] . '" />'; } if (isset($_GET['page_id'])) { echo '<input type="hidden" name="page_id" value="' . $_GET['page_id'] . '" />'; } if (is_woocommerce()) { echo '<input type="hidden" name="post_type" value="product" />'; } if ($curr_cat_query == 'no' || isset($prdctfltr_global['sc_query'])) { if (is_product_taxonomy() && !in_array(get_query_var('term'), $pf_activated)) { echo '<input type="hidden" name="' . get_query_var('taxonomy') . '" value="' . get_query_var('term') . '" />'; } } ?> </div> </form> </div> <?php echo $after_widget; wp_reset_query(); wp_reset_postdata(); } }
?> </div> </div> <?php $p++; break; default: $attr = $v; if ($curr_options['wc_settings_prdctfltr_' . $attr . '_adoptive'] == 'yes' && isset($output_terms) && (!isset($output_terms[$attr]) || empty($output_terms[$attr])) === true && $total !== 0) { continue; } $curr_term_args = array('hide_empty' => 1, 'hierarchical' => $curr_options['wc_settings_prdctfltr_' . $attr . '_hierarchy'] == 'yes' ? true : false, 'orderby' => $curr_options['wc_settings_prdctfltr_' . $attr . '_orderby'] !== '' ? $curr_options['wc_settings_prdctfltr_' . $attr . '_orderby'] : 'name', 'order' => $curr_options['wc_settings_prdctfltr_' . $attr . '_order'] !== '' ? $curr_options['wc_settings_prdctfltr_' . $attr . '_order'] : 'ASC'); $curr_attributes = get_terms($attr, $curr_term_args); if ($curr_options['wc_settings_prdctfltr_' . $attr . '_hierarchy'] == 'yes') { $catalog_attributes_sorted = array(); prdctfltr_sort_terms_hierarchicaly($curr_attributes, $catalog_attributes_sorted); $curr_attributes = $catalog_attributes_sorted; } $curr_term = get_taxonomy($attr); $curr_selected = array(); if (isset($_GET[$attr]) && $_GET[$attr] !== '' || get_query_var($attr) !== '') { $curr_selected = isset($_GET[$attr]) ? $_GET[$attr] : get_query_var($attr); if (strpos($curr_selected, ',')) { $curr_selected = explode(',', $curr_selected); } else { if (strpos($curr_selected, '+')) { $curr_selected = explode('+', $curr_selected); } else { $curr_selected = array($curr_selected); } }
break; case 'cat': if ($curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' && isset($output_terms) && (!isset($output_terms['product_cat']) || empty($output_terms['product_cat'])) === true && $total !== 0) { continue; } if (!in_array('product_cat', $active_filters)) { $active_filters[] = 'product_cat'; } $curr_limit = intval($curr_options['wc_settings_prdctfltr_cat_limit']); if ($curr_limit !== 0) { $catalog_categories = get_terms('product_cat', array('hide_empty' => 1, 'orderby' => 'count', 'order' => 'DESC', 'number' => $curr_limit)); } else { $catalog_categories = get_terms('product_cat', array('hide_empty' => 1)); if ($curr_options['wc_settings_prdctfltr_cat_hierarchy'] == 'yes') { $catalog_categories_sorted = array(); prdctfltr_sort_terms_hierarchicaly($catalog_categories, $catalog_categories_sorted); $catalog_categories = $catalog_categories_sorted; } } if (!empty($catalog_categories) && !is_wp_error($catalog_categories)) { $curr_term_multi = $curr_options['wc_settings_prdctfltr_cat_multi'] == 'yes' ? ' prdctfltr_multi' : ' prdctfltr_single'; $curr_term_adoptive = $curr_options['wc_settings_prdctfltr_cat_adoptive'] == 'yes' ? ' prdctfltr_adoptive' : ''; ?> <div class="prdctfltr_filter prdctfltr_cat <?php echo $curr_term_multi; ?> <?php echo $curr_term_adoptive; ?> "> <input name="product_cat" type="hidden"<?php