'allstorecategories_widget',
'description' => esc_html__( 'AllStore Categories', 'all-store' )
)
);
}
/**
* 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 ) {
extract( $args );
global $wp_query;
$title = apply_filters( 'widget_title', $instance['title'] );
$start_level = esc_html($instance['start_level']);
echo wp_kses_post($before_widget);
if ( $title ) {
echo wp_kses_post($before_title . $title . $after_title);
}
if (isset($wp_query->get_queried_object()->term_id)) {
$term_id = $wp_query->get_queried_object()->term_id;
}
if (!empty($term_id) && $start_level !== 'level_0') {
$current_ctg_id = $wp_query->get_queried_object()->term_id;
if ($start_level == 'level_1') {
$ancestors = get_ancestors($current_ctg_id, 'product_cat', 'taxonomy');
$ctg_level_1 = end($ancestors);
if (!$ctg_level_1) {
$ctg_level_1 = $current_ctg_id;
}
} else {
$ctg_level_1 = $current_ctg_id;
}
} else {
$ctg_level_1 = 0;
}
echo '
';
if (!empty($ctg_level_1)) {
$ctg_level_1_arr = get_category($ctg_level_1);
echo '
';
}
echo '
';
wp_list_categories( array(
'child_of' => $ctg_level_1,
'show_option_none' => '',
'orderby' => 'name',
'show_count' => 1,
'hide_empty' => 0,
'use_desc_for_title' => 0,
'hierarchical' => true,
'title_li' => '',
'depth' => 0,
'current_category' => 0,
'pad_counts' => 0,
'taxonomy' => 'product_cat',
'walker' => new Walker_Allstore_Categories_Widget,
) );
echo '
';
echo '
';
echo wp_kses_post($after_widget);
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags( $new_instance['title'] );
$instance['start_level'] = strip_tags( $new_instance['start_level'] );
return $instance;
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form( $instance ) {
if (!empty($instance['title'])) {
$title = esc_attr( $instance['title'] );
} else {
$title = '';
}
if (!empty($instance['start_level'])) {
$start_level = esc_attr( $instance['start_level'] );
} else {
$start_level = '';
}
?>