Corrected the "Show Siblings and Children Only" queries Closes #5028
This commit is contained in:
parent
48ebfae145
commit
e0b11c8c2e
|
@ -97,16 +97,16 @@ class WC_Widget_Product_Categories extends WC_Widget {
|
||||||
if ( $o == 'order' ) {
|
if ( $o == 'order' ) {
|
||||||
$cat_args['menu_order'] = 'asc';
|
$cat_args['menu_order'] = 'asc';
|
||||||
} else {
|
} else {
|
||||||
$cat_args['orderby'] = 'title';
|
$cat_args['orderby'] = 'title';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup Current Category
|
// Setup Current Category
|
||||||
$this->current_cat = false;
|
$this->current_cat = false;
|
||||||
$this->cat_ancestors = array();
|
$this->cat_ancestors = array();
|
||||||
|
|
||||||
if ( is_tax('product_cat') ) {
|
if ( is_tax('product_cat') ) {
|
||||||
|
|
||||||
$this->current_cat = $wp_query->queried_object;
|
$this->current_cat = $wp_query->queried_object;
|
||||||
$this->cat_ancestors = get_ancestors( $this->current_cat->term_id, 'product_cat' );
|
$this->cat_ancestors = get_ancestors( $this->current_cat->term_id, 'product_cat' );
|
||||||
|
|
||||||
} elseif ( is_singular('product') ) {
|
} elseif ( is_singular('product') ) {
|
||||||
|
@ -122,21 +122,31 @@ class WC_Widget_Product_Categories extends WC_Widget {
|
||||||
|
|
||||||
// Show Siblings and Children Only
|
// Show Siblings and Children Only
|
||||||
if ( $s && $this->current_cat ) {
|
if ( $s && $this->current_cat ) {
|
||||||
|
|
||||||
if ( $this->current_cat->parent == 0 ) {
|
// Top level is needed
|
||||||
$category_children = $this->current_cat->term_id;
|
$top_level = get_terms( 'product_cat', array( 'fields' => 'ids', 'parent' => 0, 'hierarchical' => false, 'hide_empty' => false ) );
|
||||||
} else {
|
|
||||||
$category_children = $this->current_cat->parent;
|
// 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 ) );
|
||||||
|
|
||||||
$current_category_children = get_term_children( $category_children, 'product_cat' );
|
$dropdown_args['include'] = implode( ',', $include );
|
||||||
|
$cat_args['include'] = implode( ',', $include );
|
||||||
if ( $current_category_children ) {
|
|
||||||
$current_category_children = implode ( ", ", $current_category_children );
|
|
||||||
$dropdown_args['include'] = $current_category_children;
|
|
||||||
$cat_args['include'] = $current_category_children;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
} elseif ( $s ) {
|
||||||
|
$dropdown_args['depth'] = 1;
|
||||||
|
$dropdown_args['child_of'] = 0;
|
||||||
|
$cat_args['depth'] = 1;
|
||||||
|
$cat_args['child_of'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dropdown
|
// Dropdown
|
||||||
|
@ -146,7 +156,8 @@ class WC_Widget_Product_Categories extends WC_Widget {
|
||||||
'show_counts' => $c,
|
'show_counts' => $c,
|
||||||
'hierarchical' => $h,
|
'hierarchical' => $h,
|
||||||
'show_uncategorized' => 0,
|
'show_uncategorized' => 0,
|
||||||
'orderby' => $o
|
'orderby' => $o,
|
||||||
|
'selected' => $this->current_cat ? $this->current_cat->slug : ''
|
||||||
);
|
);
|
||||||
$dropdown_args = wp_parse_args( $dropdown_args, $dropdown_defaults );
|
$dropdown_args = wp_parse_args( $dropdown_args, $dropdown_defaults );
|
||||||
|
|
||||||
|
@ -171,12 +182,12 @@ class WC_Widget_Product_Categories extends WC_Widget {
|
||||||
|
|
||||||
include_once( WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php' );
|
include_once( WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php' );
|
||||||
|
|
||||||
$cat_args['walker'] = new WC_Product_Cat_List_Walker;
|
$cat_args['walker'] = new WC_Product_Cat_List_Walker;
|
||||||
$cat_args['title_li'] = '';
|
$cat_args['title_li'] = '';
|
||||||
$cat_args['pad_counts'] = 1;
|
$cat_args['pad_counts'] = 1;
|
||||||
$cat_args['show_option_none'] = __('No product categories exist.', 'woocommerce' );
|
$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'] = ( $this->current_cat ) ? $this->current_cat->term_id : '';
|
||||||
$cat_args['current_category_ancestors'] = $this->cat_ancestors;
|
$cat_args['current_category_ancestors'] = $this->cat_ancestors;
|
||||||
|
|
||||||
echo '<ul class="product-categories">';
|
echo '<ul class="product-categories">';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue