'', 'title' => '', 'wc_advanced_option' => 'recent', 'beauty_studio_wc_product_cat' => -1, 'beauty_studio_wc_product_tag' => -1, 'post_number' => 4, 'column_number' => 4, 'display_type' => 'column', 'wc_cat_display_option' => 'disable', 'orderby' => 'date', 'order' => 'DESC', 'view_all_option' => 'disable', 'all_link_text' => '', 'all_link_url' => '', 'enable_prev_next' => 1, 'beauty_studio_img_size' => 'shop_catalog', 'background_options' => 'default' ); function __construct() { parent::__construct(/*Base ID of your widget*/ 'beauty_studio_wc_products', /*Widget name will appear in UI*/ esc_html__('AT WooCommerce Products', 'beauty-studio'), /*Widget description*/ array( 'description' => esc_html__( 'Show WooCommerce Products with advanced options', 'beauty-studio' ) ) ); } /*Widget Backend*/ public function form( $instance ) { $instance = wp_parse_args( (array) $instance, $this->defaults); $unique_id = esc_attr( $instance['unique_id'] ); $title = esc_attr( $instance['title'] ); $wc_advanced_option = esc_attr( $instance[ 'wc_advanced_option' ] ); $beauty_studio_wc_product_cat = esc_attr( $instance['beauty_studio_wc_product_cat'] ); $beauty_studio_wc_product_tag = esc_attr( $instance['beauty_studio_wc_product_tag'] ); $post_number = absint( $instance[ 'post_number' ] ); $column_number = absint( $instance[ 'column_number' ] ); $display_type = esc_attr( $instance[ 'display_type' ] ); $wc_cat_display_option = esc_attr( $instance[ 'wc_cat_display_option' ] ); $orderby = esc_attr( $instance[ 'orderby' ] ); $order = esc_attr( $instance[ 'order' ] ); $view_all_option = esc_attr( $instance[ 'view_all_option' ] ); $all_link_text = esc_attr( $instance['all_link_text'] ); $all_link_url = esc_url( $instance['all_link_url'] ); $enable_prev_next = esc_attr( $instance['enable_prev_next'] ); $beauty_studio_img_size = esc_attr( $instance['beauty_studio_img_size'] ); $background_options = esc_attr( $instance['background_options'] ); $choices = beauty_studio_get_image_sizes_options(); ?>
false, 'orderby' => 'name', 'order' => 'asc', 'show_count' => 1, 'hide_empty' => 1, 'echo' => 1, 'selected' => $beauty_studio_wc_product_cat, 'hierarchical' => 1, 'name' => $this->get_field_name('beauty_studio_wc_product_cat'), 'id' => $this->get_field_name('beauty_studio_wc_product_cat'), 'class' => 'widefat', 'taxonomy' => 'product_cat', 'hide_if_empty' => false ); wp_dropdown_categories( $beauty_studio_dropown_cat ); ?>
false, 'orderby' => 'name', 'order' => 'asc', 'show_count' => 1, 'hide_empty' => 1, 'echo' => 1, 'selected' => $beauty_studio_wc_product_tag, 'hierarchical' => 1, 'name' => $this->get_field_name('beauty_studio_wc_product_tag'), 'id' => $this->get_field_name('beauty_studio_wc_product_tag'), 'class' => 'widefat', 'taxonomy' => 'product_tag', 'hide_if_empty' => false ); wp_dropdown_categories( $beauty_studio_dropown_cat ); ?>
/>
thumb; } /** * Function to Creating widget front-end. This is where the action happens * * @access public * @since 1.0.0 * * @param array $args widget setting * @param array $instance saved values * @return void * */ public function widget($args, $instance) { $instance = wp_parse_args( (array) $instance, $this->defaults); $unique_id = ! empty( $instance['unique_id'] ) ? esc_attr( $instance['unique_id'] ) : esc_attr( $this->id ); $wc_advanced_option = esc_attr( $instance[ 'wc_advanced_option' ] ); $beauty_studio_wc_product_cat = esc_attr( $instance['beauty_studio_wc_product_cat'] ); $beauty_studio_wc_product_tag = esc_attr( $instance['beauty_studio_wc_product_tag'] ); $title = !empty( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); $post_number = absint( $instance[ 'post_number' ] ); $column_number = absint( $instance[ 'column_number' ] ); $display_type = esc_attr( $instance[ 'display_type' ] ); $wc_cat_display_option = esc_attr( $instance[ 'wc_cat_display_option' ] ); $orderby = esc_attr( $instance[ 'orderby' ] ); $order = esc_attr( $instance[ 'order' ] ); $view_all_option = esc_attr( $instance[ 'view_all_option' ] ); $all_link_text = esc_html( $instance[ 'all_link_text' ] ); $all_link_url = esc_url( $instance[ 'all_link_url' ] ); $enable_prev_next = esc_attr( $instance['enable_prev_next'] ); $this->thumb = $beauty_studio_img_size = esc_attr( $instance['beauty_studio_img_size'] ); $background_options = esc_attr( $instance['background_options'] ); $bg_gray_class = $background_options == 'gray'?'at-gray-bg':''; $product_visibility_term_ids = wc_get_product_visibility_term_ids(); /** * Filter the arguments for the Recent Posts widget. * * @since 1.0.0 * * @see WP_Query * */ $query_args = array( 'posts_per_page' => $post_number, 'post_status' => 'publish', 'post_type' => 'product', 'no_found_rows' => 1, 'order' => $order, 'meta_query' => array(), 'tax_query' => array( 'relation' => 'AND', ), ); switch ( $wc_advanced_option ) { case 'featured' : if( !empty( $product_visibility_term_ids['featured'] )){ $query_args['tax_query'][] = array( 'taxonomy' => 'product_visibility', 'field' => 'term_taxonomy_id', 'terms' => $product_visibility_term_ids['featured'], ); } break; case 'onsale' : $product_ids_on_sale = wc_get_product_ids_on_sale(); if( !empty( $product_ids_on_sale ) ){ $query_args['post__in'] = $product_ids_on_sale; } break; case 'cat' : if( !empty( $beauty_studio_wc_product_cat )){ $query_args['tax_query'][] = array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $beauty_studio_wc_product_cat, ); } break; case 'tag' : if( !empty( $beauty_studio_wc_product_tag )){ $query_args['tax_query'][] = array( 'taxonomy' => 'product_tag', 'field' => 'term_id', 'terms' => $beauty_studio_wc_product_tag, ); } break; } switch ( $orderby ) { case 'price' : $query_args['meta_key'] = '_price'; $query_args['orderby'] = 'meta_value_num'; break; case 'sales' : $query_args['meta_key'] = 'total_sales'; $query_args['orderby'] = 'meta_value_num'; break; case 'ID' : case 'author' : case 'title' : case 'date' : case 'modified' : case 'rand' : case 'comment_count' : case 'menu_order' : $query_args['orderby'] = $orderby; break; default : $query_args['orderby'] = 'date'; } $beauty_studio_featured_query = new WP_Query( $query_args ); if ($beauty_studio_featured_query->have_posts()) : echo $args['before_widget']; $animation = "init-animate zoomIn"; ?>