/** * @deprecated */ function woocommerce_product_dropdown_categories($args = array(), $deprecated_hierarchical = 1, $deprecated_show_uncategorized = 1, $deprecated_orderby = '') { return wc_product_dropdown_categories($args, $deprecated_hierarchical, $deprecated_show_uncategorized, $deprecated_orderby); }
/** * Show a category filter box */ public function product_filters() { global $wp_query; // Category Filtering wc_product_dropdown_categories(); // Type filtering $terms = get_terms('product_type'); $output = '<select name="product_type" id="dropdown_product_type">'; $output .= '<option value="">' . __('Show all product types', 'woocommerce') . '</option>'; foreach ($terms as $term) { $output .= '<option value="' . sanitize_title($term->name) . '" '; if (isset($wp_query->query['product_type'])) { $output .= selected($term->slug, $wp_query->query['product_type'], false); } $output .= '>'; switch ($term->name) { case 'grouped': $output .= __('Grouped product', 'woocommerce'); break; case 'external': $output .= __('External/Affiliate product', 'woocommerce'); break; case 'variable': $output .= __('Variable product', 'woocommerce'); break; case 'simple': $output .= __('Simple product', 'woocommerce'); break; default: // Assuming that we have other types in future $output .= ucfirst($term->name); break; } $output .= '</option>'; if ('simple' == $term->name) { $output .= '<option value="downloadable" '; if (isset($wp_query->query['product_type'])) { $output .= selected('downloadable', $wp_query->query['product_type'], false); } $output .= '> → ' . __('Downloadable', 'woocommerce') . '</option>'; $output .= '<option value="virtual" '; if (isset($wp_query->query['product_type'])) { $output .= selected('virtual', $wp_query->query['product_type'], false); } $output .= '> → ' . __('Virtual', 'woocommerce') . '</option>'; } } $output .= '</select>'; echo apply_filters('woocommerce_product_filters', $output); }
/** * widget function. * * @see WP_Widget * * @param array $args * @param array $instance */ public function widget($args, $instance) { global $wp_query, $post; $c = isset($instance['count']) ? $instance['count'] : $this->settings['count']['std']; $h = isset($instance['hierarchical']) ? $instance['hierarchical'] : $this->settings['hierarchical']['std']; $s = isset($instance['show_children_only']) ? $instance['show_children_only'] : $this->settings['show_children_only']['std']; $d = isset($instance['dropdown']) ? $instance['dropdown'] : $this->settings['dropdown']['std']; $o = isset($instance['orderby']) ? $instance['orderby'] : $this->settings['orderby']['std']; $dropdown_args = array('hide_empty' => false); $list_args = array('show_count' => $c, 'hierarchical' => $h, 'taxonomy' => 'product_cat', 'hide_empty' => false); // Menu Order $list_args['menu_order'] = false; if ($o == 'order') { $list_args['menu_order'] = 'asc'; } else { $list_args['orderby'] = 'title'; } // Setup Current Category $this->current_cat = false; $this->cat_ancestors = array(); if (is_tax('product_cat')) { $this->current_cat = $wp_query->queried_object; $this->cat_ancestors = get_ancestors($this->current_cat->term_id, 'product_cat'); } elseif (is_singular('product')) { $product_category = wc_get_product_terms($post->ID, 'product_cat', array('orderby' => 'parent')); if ($product_category) { $this->current_cat = end($product_category); $this->cat_ancestors = get_ancestors($this->current_cat->term_id, 'product_cat'); } } // Show Siblings and Children Only if ($s && $this->current_cat) { // Top level is needed $top_level = get_terms('product_cat', array('fields' => 'ids', 'parent' => 0, 'hierarchical' => true, 'hide_empty' => false)); // Direct children are wanted $direct_children = get_terms('product_cat', array('fields' => 'ids', 'parent' => $this->current_cat->term_id, 'hierarchical' => true, 'hide_empty' => false)); // Gather siblings of ancestors $siblings = array(); if ($this->cat_ancestors) { foreach ($this->cat_ancestors as $ancestor) { $ancestor_siblings = get_terms('product_cat', array('fields' => 'ids', 'parent' => $ancestor, 'hierarchical' => false, 'hide_empty' => false)); $siblings = array_merge($siblings, $ancestor_siblings); } } if ($h) { $include = array_merge($top_level, $this->cat_ancestors, $siblings, $direct_children, array($this->current_cat->term_id)); } else { $include = array_merge($direct_children); } $dropdown_args['include'] = implode(',', $include); $list_args['include'] = implode(',', $include); if (empty($include)) { return; } } elseif ($s) { $dropdown_args['depth'] = 1; $dropdown_args['child_of'] = 0; $dropdown_args['hierarchical'] = 1; $list_args['depth'] = 1; $list_args['child_of'] = 0; $list_args['hierarchical'] = 1; } $this->widget_start($args, $instance); // Dropdown if ($d) { $dropdown_defaults = array('show_counts' => $c, 'hierarchical' => $h, 'show_uncategorized' => 0, 'orderby' => $o, 'selected' => $this->current_cat ? $this->current_cat->slug : ''); $dropdown_args = wp_parse_args($dropdown_args, $dropdown_defaults); // Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258 wc_product_dropdown_categories(apply_filters('woocommerce_product_categories_widget_dropdown_args', $dropdown_args)); wc_enqueue_js("\n\t\t\t\tjQuery( '.dropdown_product_cat' ).change( function() {\n\t\t\t\t\tif ( jQuery(this).val() != '' ) {\n\t\t\t\t\t\tvar this_page = '';\n\t\t\t\t\t\tvar home_url = '" . esc_js(home_url('/')) . "';\n\t\t\t\t\t\tif ( home_url.indexOf( '?' ) > 0 ) {\n\t\t\t\t\t\t\tthis_page = home_url + '&product_cat=' + jQuery(this).val();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis_page = home_url + '?product_cat=' + jQuery(this).val();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlocation.href = this_page;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t"); // List } else { include_once WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php'; $list_args['walker'] = new WC_Product_Cat_List_Walker(); $list_args['title_li'] = ''; $list_args['pad_counts'] = 1; $list_args['show_option_none'] = __('No product categories exist.', 'woocommerce'); $list_args['current_category'] = $this->current_cat ? $this->current_cat->term_id : ''; $list_args['current_category_ancestors'] = $this->cat_ancestors; echo '<ul class="product-categories">'; wp_list_categories(apply_filters('woocommerce_product_categories_widget_args', $list_args)); echo '</ul>'; } $this->widget_end($args); }
/** * widget function. * * @see WP_Widget * @access public * @param array $args * @param array $instance * @return void */ public function widget($args, $instance) { extract($args); global $wp_query, $post, $woocommerce; $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); $c = isset($instance['count']) && $instance['count'] ? '1' : '0'; $h = $instance['hierarchical'] ? true : false; $s = isset($instance['show_children_only']) && $instance['show_children_only'] ? '1' : '0'; $d = isset($instance['dropdown']) && $instance['dropdown'] ? '1' : '0'; $o = $instance['orderby'] ? $instance['orderby'] : 'order'; echo $before_widget; if ($title) { echo $before_title . $title . $after_title; } $dropdown_args = array(); $cat_args = array('show_count' => $c, 'hierarchical' => $h, 'taxonomy' => 'product_cat'); // Menu Order $cat_args['menu_order'] = false; if ($o == 'order') { $cat_args['menu_order'] = 'asc'; } else { $cat_args['orderby'] = 'title'; } // Setup Current Category $this->current_cat = false; $this->cat_ancestors = array(); if (is_tax('product_cat')) { $this->current_cat = $wp_query->queried_object; $this->cat_ancestors = get_ancestors($this->current_cat->term_id, 'product_cat'); } elseif (is_singular('product')) { $product_category = wc_get_product_terms($post->ID, 'product_cat', array('orderby' => 'parent')); if ($product_category) { $this->current_cat = end($product_category); $this->cat_ancestors = get_ancestors($this->current_cat->term_id, 'product_cat'); } } // Show Siblings and Children Only if ($s && $this->current_cat) { // Top level is needed $top_level = get_terms('product_cat', array('fields' => 'ids', 'parent' => 0, 'hierarchical' => false, 'hide_empty' => false)); // Direct children are wanted $direct_children = get_terms('product_cat', array('fields' => 'ids', 'parent' => $this->current_cat->term_id, 'hierarchical' => true, 'hide_empty' => false)); // Gather siblings of ancestors $siblings = array(); if ($this->cat_ancestors) { foreach ($this->cat_ancestors as $ancestor) { $siblings = array_merge($siblings, get_terms('product_cat', array('fields' => 'ids', 'parent' => $ancestor, 'hierarchical' => false, 'hide_empty' => false))); } } $include = array_merge($top_level, $this->cat_ancestors, $siblings, $direct_children, array($this->current_cat->term_id)); $dropdown_args['include'] = implode(',', $include); $cat_args['include'] = implode(',', $include); } elseif ($s) { $dropdown_args['depth'] = 1; $dropdown_args['child_of'] = 0; $cat_args['depth'] = 1; $cat_args['child_of'] = 0; } // Dropdown if ($d) { $dropdown_defaults = array('show_counts' => $c, 'hierarchical' => $h, 'show_uncategorized' => 0, 'orderby' => $o, 'selected' => $this->current_cat ? $this->current_cat->slug : ''); $dropdown_args = wp_parse_args($dropdown_args, $dropdown_defaults); // Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258 wc_product_dropdown_categories($dropdown_args); ?> <script type='text/javascript'> /* <![CDATA[ */ var product_cat_dropdown = document.getElementById("dropdown_product_cat"); function onProductCatChange() { if ( product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value !=='' ) { location.href = "<?php echo home_url(); ?> /?product_cat="+product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value; } } product_cat_dropdown.onchange = onProductCatChange; /* ]]> */ </script> <?php // List } else { include_once WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php'; $cat_args['walker'] = new WC_Product_Cat_List_Walker(); $cat_args['title_li'] = ''; $cat_args['pad_counts'] = 1; $cat_args['show_option_none'] = __('No product categories exist.', 'woocommerce'); $cat_args['current_category'] = $this->current_cat ? $this->current_cat->term_id : ''; $cat_args['current_category_ancestors'] = $this->cat_ancestors; echo '<ul class="product-categories">'; wp_list_categories(apply_filters('woocommerce_product_categories_widget_args', $cat_args)); echo '</ul>'; } echo $after_widget; }
/** * Show a category filter box */ public function product_filters() { global $typenow, $wp_query; if ($typenow != 'product') { return; } // Category Filtering wc_product_dropdown_categories(); // Type filtering $terms = get_terms('product_type'); $output = "<select name='product_type' id='dropdown_product_type'>"; $output .= '<option value="">' . __('Show all product types', 'woocommerce') . '</option>'; foreach ($terms as $term) { $output .= "<option value='" . sanitize_title($term->name) . "' "; if (isset($wp_query->query['product_type'])) { $output .= selected($term->slug, $wp_query->query['product_type'], false); } $output .= ">"; switch ($term->name) { case 'grouped': $output .= __('Grouped product', 'woocommerce'); break; case 'external': $output .= __('External/Affiliate product', 'woocommerce'); break; case 'variable': $output .= __('Variable product', 'woocommerce'); break; case 'simple': $output .= __('Simple product', 'woocommerce'); break; default: // Assuming that we have other types in future $output .= ucfirst($term->name); break; } $output .= " ({$term->count})</option>"; if ($term->name == 'simple') { $output .= "<option value='downloadable' "; if (isset($wp_query->query['product_type'])) { $output .= selected('downloadable', $wp_query->query['product_type'], false); } $output .= "> → " . __('Downloadable', 'woocommerce') . "</option>"; $output .= "<option value='virtual' "; if (isset($wp_query->query['product_type'])) { $output .= selected('virtual', $wp_query->query['product_type'], false); } $output .= "> → " . __('Virtual', 'woocommerce') . "</option>"; } } $output .= "</select>"; echo apply_filters('woocommerce_product_filters', $output); }
function shopping_searchform() { if (class_exists('WooCommerce')) { global $wpdb; $dropdown_args = array('show_counts' => false, 'hierarchical' => true, 'show_uncategorized' => 0); ?> <form role="search" method="get" class="searchform-categoris" action="<?php echo home_url('/'); ?> "> <div class="wpo-search"> <div class="wpo-search-inner"> <div class="select-categories"> <?php wc_product_dropdown_categories($dropdown_args); ?> </div> <div class="input-group"> <input name="s" id="s" maxlength="40" class="form-control input-search" type="text" size="20" placeholder="Enter search..."> <span class="input-group-addon"> <input type="submit" id="searchsubmit" class="fa" value=""/> <input type="hidden" name="post_type" value="product"/> </span> </div> </div> </div> </form> <?php } else { get_search_form(); } }
/** * widget function. * * @see WP_Widget * @access public * @param array $args * @param array $instance * @return void */ public function widget($args, $instance) { extract($args); $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); $c = isset($instance['count']) && $instance['count'] ? '1' : '0'; $h = $instance['hierarchical'] ? true : false; $s = isset($instance['show_children_only']) && $instance['show_children_only'] ? '1' : '0'; $d = isset($instance['dropdown']) && $instance['dropdown'] ? '1' : '0'; $o = $instance['orderby'] ? $instance['orderby'] : 'order'; echo $before_widget; if ($title) { echo $before_title . $title . $after_title; } $cat_args = array('show_count' => $c, 'hierarchical' => $h, 'taxonomy' => 'product_cat'); $cat_args['menu_order'] = false; if ($o == 'order') { $cat_args['menu_order'] = 'asc'; } else { $cat_args['orderby'] = 'title'; } if ($d) { // Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258 wc_product_dropdown_categories(array('show_counts' => $c, 'hierarchical' => $h, 'show_uncategorized' => 0, 'orderby' => $o)); ?> <script type='text/javascript'> /* <![CDATA[ */ var product_cat_dropdown = document.getElementById("dropdown_product_cat"); function onProductCatChange() { if ( product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value !=='' ) { location.href = "<?php echo home_url(); ?> /?product_cat="+product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value; } } product_cat_dropdown.onchange = onProductCatChange; /* ]]> */ </script> <?php } else { global $wp_query, $post, $woocommerce; $this->current_cat = false; $this->cat_ancestors = array(); if (is_tax('product_cat')) { $this->current_cat = $wp_query->queried_object; $this->cat_ancestors = get_ancestors($this->current_cat->term_id, 'product_cat'); } elseif (is_singular('product')) { $product_category = wc_get_product_terms($post->ID, 'product_cat', array('orderby' => 'parent')); if ($product_category) { $this->current_cat = end($product_category); $this->cat_ancestors = get_ancestors($this->current_cat->term_id, 'product_cat'); } } include_once WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php'; $cat_args['walker'] = new WC_Product_Cat_List_Walker(); $cat_args['title_li'] = ''; $cat_args['show_children_only'] = isset($instance['show_children_only']) && $instance['show_children_only'] ? 1 : 0; $cat_args['pad_counts'] = 1; $cat_args['show_option_none'] = __('No product categories exist.', 'woocommerce'); $cat_args['current_category'] = $this->current_cat ? $this->current_cat->term_id : ''; $cat_args['current_category_ancestors'] = $this->cat_ancestors; echo '<ul class="product-categories">'; wp_list_categories(apply_filters('woocommerce_product_categories_widget_args', $cat_args)); echo '</ul>'; } echo $after_widget; }
function categories_searchform() { if (class_exists('WooCommerce')) { global $wpdb; $dropdown_args = array('show_counts' => false, 'hierarchical' => true, 'show_uncategorized' => 0); ?> <form role="search" method="get" class="input-group search-category" action="<?php echo esc_url(home_url('/')); ?> "> <div class="input-group-addon search-category-container"> <label class="select"> <?php wc_product_dropdown_categories($dropdown_args); ?> </label> </div> <input name="s" id="s" maxlength="60" class="form-control search-category-input" type="text" size="20" placeholder="Enter search..."> <div class="input-group-btn"> <label class="btn btn-link btn-search"> <span id="wpo-title-search" class="title-search hidden"><?php _e('Search', TEXTDOMAIN); ?> </span> <input type="submit" id="searchsubmit" class="fa searchsubmit" value=""/> </label> <input type="hidden" name="post_type" value="product"/> </div> </form> <?php } else { get_search_form(); } }