'', 'wc_advanced_option' => 'recent', 'online_shop_wc_product_cat' => -1, 'online_shop_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, 'online_shop_img_size' => 'shop_catalog' ); function __construct() { parent::__construct( /*Base ID of your widget*/ 'online_shop_wc_products', /*Widget name will appear in UI*/ esc_html__('AT WooCommerce Products', 'online-shop'), /*Widget description*/ array( 'description' => esc_html__( 'Show WooCommerce Products with advanced options', 'online-shop' ), ) ); } /*Widget Backend*/ public function form( $instance ) { $instance = wp_parse_args( (array) $instance, $this->defaults); $online_shop_widget_title = esc_attr( $instance['online_shop_widget_title'] ); $wc_advanced_option = esc_attr( $instance[ 'wc_advanced_option' ] ); $online_shop_wc_product_cat = esc_attr( $instance['online_shop_wc_product_cat'] ); $online_shop_wc_product_tag = esc_attr( $instance['online_shop_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'] ); $online_shop_img_size = esc_attr( $instance['online_shop_img_size'] ); $choices = online_shop_get_image_sizes_options(); ?>

false, 'orderby' => 'name', 'order' => 'asc', 'show_count' => 1, 'hide_empty' => 1, 'echo' => 1, 'selected' => $online_shop_wc_product_cat, 'hierarchical' => 1, 'name' => $this->get_field_name('online_shop_wc_product_cat'), 'id' => $this->get_field_name('online_shop_wc_product_cat'), 'class' => 'widefat', 'taxonomy' => 'product_cat', 'hide_if_empty' => false ); wp_dropdown_categories( $online_shop_dropown_cat ); ?>

false, 'orderby' => 'name', 'order' => 'asc', 'show_count' => 1, 'hide_empty' => 1, 'echo' => 1, 'selected' => $online_shop_wc_product_tag, 'hierarchical' => 1, 'name' => $this->get_field_name('online_shop_wc_product_tag'), 'id' => $this->get_field_name('online_shop_wc_product_tag'), 'class' => 'widefat', 'taxonomy' => 'product_tag', 'hide_if_empty' => false ); wp_dropdown_categories( $online_shop_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); $wc_advanced_option = esc_attr( $instance[ 'wc_advanced_option' ] ); $online_shop_wc_product_cat = esc_attr( $instance['online_shop_wc_product_cat'] ); $online_shop_wc_product_tag = esc_attr( $instance['online_shop_wc_product_tag'] ); $online_shop_widget_title = !empty( $instance['online_shop_widget_title'] ) ? esc_attr( $instance['online_shop_widget_title'] ) : ''; $online_shop_widget_title = apply_filters( 'widget_title', $online_shop_widget_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 = $online_shop_img_size = esc_attr( $instance['online_shop_img_size'] ); $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( $online_shop_wc_product_cat )){ $query_args['tax_query'][] = array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $online_shop_wc_product_cat, ); } break; case 'tag' : print_r( $online_shop_wc_product_tag ); if( !empty( $online_shop_wc_product_tag )){ $query_args['tax_query'][] = array( 'taxonomy' => 'product_tag', 'field' => 'term_id', 'terms' => $online_shop_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'; } $online_shop_featured_query = new WP_Query( $query_args ); if ($online_shop_featured_query->have_posts()) : echo $args['before_widget']; if ( !empty( $online_shop_widget_title ) || 'disable' != $view_all_option || ( 1 == $enable_prev_next && 'carousel' == $display_type ) ){ if( -1 != $online_shop_wc_product_cat ){ echo "
"; } echo $args['before_title']; echo $online_shop_widget_title; echo ""; if( 'disable' != $view_all_option && !empty( $all_link_text ) && !empty( $all_link_url )){ $target =''; if( 'new-tab-link' == $view_all_option ){ $target = 'target="_blank"'; } echo ''.$all_link_text.''; } if( 1 == $enable_prev_next && 'carousel' == $display_type){ echo ''; } echo "";/*.at-action-wrapper*/ echo $args['after_title']; if( -1 != $online_shop_wc_product_cat ){ echo "
"; } } $div_attr = 'class="featured-entries-col woocommerce '.$display_type.'"'; if( 'carousel' == $display_type ){ $div_attr = 'class="featured-entries-col woocommerce acme-slick-carausel" data-column="'.absint( $column_number ).'"'; } if( 'disable' != $wc_cat_display_option && 'cat' == $wc_advanced_option ){ $taxonomy = 'product_cat'; $term_id = absint($online_shop_wc_product_cat); $term_link = get_term_link( $term_id, $taxonomy ); $term = get_term( $term_id, $taxonomy ); $thumbnail_id = get_term_meta( $term_id, 'thumbnail_id', true); if ( !empty( $thumbnail_id ) ) { $image_url = wp_get_attachment_image_src($thumbnail_id, 'full'); } else{ $image_url[0] = get_template_directory_uri() . '/assets/img/default-image.jpg'; } ?>
name ) ) { ?>

name ); ?>

> have_posts() ) :$online_shop_featured_query->the_post(); $online_shop_list_classes = 'single-list'; if( 'carousel' != $display_type ){ if( 1 != $online_shop_featured_index && $online_shop_featured_index % $column_number == 1 ){ echo "
"; } if( 1 == $column_number ){ $online_shop_list_classes .= " acme-col-1"; } elseif( 2 == $column_number ){ $online_shop_list_classes .= " acme-col-2"; } elseif( 3 == $column_number ){ $online_shop_list_classes .= " acme-col-3"; } else{ $online_shop_list_classes .= " acme-col-4"; } } ?>
"; // Reset the global $the_post as this query will have stomped on it endif; wp_reset_postdata(); } } // Class Online_Shop_Wc_Products ends here }