__('Filter woocommerce products by category.', 'wchweb')) // Args ); } /** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget($args, $instance) { if (!is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) { return; } // enqueue necessary scripts wp_enqueue_style('wchweb-style'); wp_enqueue_style('font-awesome'); wp_enqueue_script('wchweb-script'); if (empty($instance['query_type'])) { return; } $enable_multiple = (!empty($instance['enable_multiple'])) ? (bool)$instance['enable_multiple'] : ''; $show_count = (!empty($instance['show_count'])) ? (bool)$instance['show_count'] : ''; $enable_hierarchy = (!empty($instance['hierarchical'])) ? (bool)$instance['hierarchical'] : ''; $show_children_only = (!empty($instance['show_children_only'])) ? (bool)$instance['show_children_only'] : ''; $display_type = (!empty($instance['display_type'])) ? $instance['display_type'] : ''; $taxonomy = 'product_cat'; $query_type = $instance['query_type']; $data_key = ($query_type === 'and') ? 'product-cata' : 'product-cato'; // parse url $url = $_SERVER['QUERY_STRING']; parse_str($url, $url_array); $attr_args = array( 'taxonomy' => $taxonomy, 'data_key' => $data_key, 'query_type' => $query_type, 'enable_multiple' => $enable_multiple, 'show_count' => $show_count, 'enable_hierarchy' => $enable_hierarchy, 'show_children_only' => $show_children_only, 'url_array' => $url_array ); // if display type list if ($display_type === 'list') { $output = wchweb_list_terms($attr_args); } elseif ($display_type === 'dropdown') { $output = wchweb_dropdown_terms($attr_args); } $html = $output['html']; $found = $output['found']; extract($args); // Add class to before_widget from within a custom widget // http://wordpress.stackexchange.com/questions/18942/add-class-to-before-widget-from-within-a-custom-widget // if $selected_terms array is empty we will hide this widget totally if ($found === false) { $widget_class = 'wchweb-widget-hidden woocommerce wchweb-ajax-term-filter'; } else { $widget_class = 'woocommerce wchweb-ajax-term-filter'; } // no class found, so add it if (strpos($before_widget, 'class') === false) { $before_widget = str_replace('>', 'class="' . $widget_class . '"', $before_widget); } // class found but not the one that we need, so add it else { $before_widget = str_replace('class="', 'class="' . $widget_class . ' ', $before_widget); } echo $before_widget; if (!empty($instance['title'])) { echo $args['before_title'] . apply_filters('widget_title', $instance['title']). $args['after_title']; } echo $html; echo $args['after_widget']; } /** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from database. */ public function form($instance) { ?>

>

>

>

>