'widget_portfolio_categories', 'description' => __( 'A list or dropdown of Portfolio Categories, Sub Categories and Portfolio items in each.', 'a3-portfolio' ) ); parent::__construct('widget_a3_portfolio_categories', __('a3 Portfolios Categories', 'a3-portfolio' ), $widget_ops); } function widget( $args, $instance ) { extract($args); $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base); $category_orderby = $instance['category_orderby']; $portfolio_orderby = $instance['portfolio_orderby']; $dropdown = $instance['dropdown']; $hierarchy = $instance['hierarchy']; $show_portfolio = $instance['show_portfolio']; echo $before_widget; if ( $title ) echo $before_title . $title . $after_title; $first_update = false; if ( ! isset( $instance['categories_show'] ) ) { $first_update = true; $categories_show = array(); } else { $categories_show = $instance['categories_show']; } if ( ! empty( $instance['categories_show'] ) || $first_update ) { echo $this->show_portfolio_categories( $categories_show, $category_orderby, $portfolio_orderby, $dropdown, $hierarchy, $show_portfolio); } echo $after_widget; } function portfolio_walk_category_dropdown_tree() { $args = func_get_args(); // the user's options are the third parameter if ( empty( $args[2]['walker']) || !is_a($args[2]['walker'], 'Walker' ) ) { $walker = new A3_Portfolio_Cat_List_Dropdown_Walker; } else { $walker = $args[2]['walker']; } return call_user_func_array( array( &$walker, 'walk' ), $args ); } function portfolio_dropdown_categories( $args = array(), $deprecated_hierarchical = 1, $deprecated_orderby = '' ) { global $wp_query; $current_portfolio_cat = isset( $wp_query->query['portfolio_cat'] ) ? $wp_query->query['portfolio_cat'] : ''; $defaults = array( 'pad_counts' => 1, 'show_counts' => 1, 'hierarchical' => 1, 'hide_empty' => 1, 'orderby' => 'name', 'selected' => $current_portfolio_cat, 'menu_order' => false ); $args = wp_parse_args( $args, $defaults ); $terms = get_terms( 'portfolio_cat', $args ); if ( ! $terms ) { return; } $output = ""; $output .= " "; echo $output; } function show_portfolio_categories( $categories_show = array(), $category_orderby = 'meta_value_num', $portfolio_orderby = 'menu_order', $dropdown = '', $hierarchy = '', $show_portfolio = '') { global $post; $cat_args = array('show_count' => 0, 'hierarchical' => false, 'taxonomy' => 'portfolio_cat'); if ($dropdown == 'yes') $cat_args['dropdown'] = true ; if ($hierarchy == 'yes') $cat_args['hierarchical'] = true ; $cat_args['menu_order'] = false; $cat_args['orderby'] = $category_orderby; if ( ! empty( $categories_show ) ) { $cat_args['include'] = $categories_show; } if ( 'name' !== $category_orderby ) { $cat_args['meta_query'] = array( 'relation' => 'OR', 'position_clause' => array( 'key' => 'order', 'value' => 0, 'compare' => '>=' ), ); } global $wp_query, $post; $this->current_cat = false; $this->current_portfolio = false; $this->cat_ancestors = array(); if ( is_tax('portfolio_cat') ) : $this->current_cat = $wp_query->queried_object; $this->cat_ancestors = get_ancestors( $this->current_cat->term_id, 'portfolio_cat' ); elseif ( is_singular('portfolio') ) : $this->current_portfolio = $post->ID; $portfolio_cat = wp_get_post_terms( $post->ID, 'portfolio_cat' ); if ($portfolio_cat) : $this->current_cat = end($portfolio_cat); $this->cat_ancestors = get_ancestors( $this->current_cat->term_id, 'portfolio_cat' ); endif; endif; if ( $dropdown == 'yes' ) { include_once( A3_PORTFOLIO_DIR . '/includes/walkers/class-portfolio-categories-list-dropdown-walker.php' ); $cat_args['walker'] = new A3_Portfolio_Cat_List_Dropdown_Walker; $cat_args['title_li'] = ''; $cat_args['show_children_only'] = 0; $cat_args['current_portfolio'] = ( $this->current_portfolio != false ) ? $this->current_portfolio : ''; $cat_args['show_portfolio'] = $show_portfolio; $cat_args['portfolio_orderby'] = $portfolio_orderby; $cat_args['pad_counts'] = 1; $cat_args['show_option_none'] = __('No portfolio categories exist.', 'a3-portfolio' ); $cat_args['current_category'] = ( $this->current_cat ) ? $this->current_cat->term_id : ''; $cat_args['current_category_ancestors'] = $this->cat_ancestors; ob_start(); $this->portfolio_dropdown_categories( apply_filters( 'portfolio_categories_widget_args', $cat_args ) ); $result_html = ob_get_clean(); } else { include_once( A3_PORTFOLIO_DIR . '/includes/walkers/class-portfolio-categories-list-walker.php' ); $cat_args['walker'] = new A3_Portfolio_Cat_List_Walker; $cat_args['title_li'] = ''; $cat_args['show_children_only'] = 0; $cat_args['current_portfolio'] = ( $this->current_portfolio != false ) ? $this->current_portfolio : ''; $cat_args['show_portfolio'] = $show_portfolio; $cat_args['portfolio_orderby'] = $portfolio_orderby; $cat_args['pad_counts'] = 1; $cat_args['show_option_none'] = __('No portfolio categories exist.', 'a3-portfolio' ); $cat_args['current_category'] = ( $this->current_cat ) ? $this->current_cat->term_id : ''; $cat_args['current_category_ancestors'] = $this->cat_ancestors; ob_start(); echo '
id="get_field_id('dropdown'); ?>" name="get_field_name('dropdown'); ?>" value="yes" />
id="get_field_id('hierarchy'); ?>" name="get_field_name('hierarchy'); ?>" value="yes" />
id="get_field_id('show_portfolio'); ?>" name="get_field_name('show_portfolio'); ?>" value="yes" />