esc_html__('widget that show woocommerce default latest, features, on sale, on sale products in tabs formats', 'metrostore') )); } private function widget_fields() { $fields = array( // Latest Products Section 'metrostore_start_group_latest_product' => array( 'metrostore_widgets_name' => 'metrostore_start_group_latest_product', 'metrostore_widgets_field_type' => 'group_start', ), 'metrostore_latest_product' => array( 'metrostore_widgets_name' => 'metrostore_latest_product', 'metrostore_widgets_title' => esc_html__('Checked Display Latest Products', 'metrostore'), 'metrostore_widgets_field_type' => 'checkbox' ), 'metrostore_latest_product_title' => array( 'metrostore_widgets_name' => 'metrostore_latest_product_title', 'metrostore_widgets_title' => esc_html__('Title', 'metrostore'), 'metrostore_widgets_field_type' => 'title', ), 'metrostore_end_group_latest_product' => array( 'metrostore_widgets_name' => 'metrostore_end_group_latest_product', 'metrostore_widgets_field_type' => 'group_end', ), // Feature Products 'metrostore_start_group_feature_product' => array( 'metrostore_widgets_name' => 'metrostore_start_group_feature_product', 'metrostore_widgets_field_type' => 'group_start', ), 'metrostore_feature_product' => array( 'metrostore_widgets_name' => 'metrostore_feature_product', 'metrostore_widgets_title' => esc_html__('Checked Display Feature Products', 'metrostore'), 'metrostore_widgets_field_type' => 'checkbox' ), 'metrostore_feature_product_title' => array( 'metrostore_widgets_name' => 'metrostore_feature_product_title', 'metrostore_widgets_title' => esc_html__('Title', 'metrostore'), 'metrostore_widgets_field_type' => 'title', ), 'metrostore_end_group_features_product' => array( 'metrostore_widgets_name' => 'metrostore_end_group_features_product', 'metrostore_widgets_field_type' => 'group_end', ), // On Sale Products 'metrostore_start_group_onsale_product' => array( 'metrostore_widgets_name' => 'metrostore_start_group_onsale_product', 'metrostore_widgets_field_type' => 'group_start', ), 'metrostore_onsale_product' => array( 'metrostore_widgets_name' => 'metrostore_onsale_product', 'metrostore_widgets_title' => esc_html__('Checked Display On Sale Products', 'metrostore'), 'metrostore_widgets_field_type' => 'checkbox' ), 'metrostore_onsalse_product_title' => array( 'metrostore_widgets_name' => 'metrostore_onsalse_product_title', 'metrostore_widgets_title' => esc_html__('Title', 'metrostore'), 'metrostore_widgets_field_type' => 'title', ), 'metrostore_end_group_onsale_product' => array( 'metrostore_widgets_name' => 'metrostore_end_group_onsale_product', 'metrostore_widgets_field_type' => 'group_end', ), // UpSell Products 'metrostore_start_group_upsale_product' => array( 'metrostore_widgets_name' => 'metrostore_start_group_upsale_product', 'metrostore_widgets_field_type' => 'group_start', ), 'metrostore_upsale_product' => array( 'metrostore_widgets_name' => 'metrostore_upsale_product', 'metrostore_widgets_title' => esc_html__('Checked Display UpSale Products', 'metrostore'), 'metrostore_widgets_field_type' => 'checkbox' ), 'metrostore_upsalse_product_title' => array( 'metrostore_widgets_name' => 'metrostore_upsalse_product_title', 'metrostore_widgets_title' => esc_html__('Title', 'metrostore'), 'metrostore_widgets_field_type' => 'title', ), 'metrostore_end_group_upsale_product' => array( 'metrostore_widgets_name' => 'metrostore_end_group_upsale_product', 'metrostore_widgets_field_type' => 'group_end', ), 'metrostore_deault_tabs_product_number' => array( 'metrostore_widgets_name' => 'metrostore_deault_tabs_product_number', 'metrostore_widgets_title' => esc_html__('Enter Number of Products Show', 'metrostore'), 'metrostore_widgets_field_type' => 'number', ), ); return $fields; } public function widget($args, $instance) { extract($args); extract($instance); /** * wp query for first block */ $latest_product = empty( $instance['metrostore_latest_product'] ) ? '' : $instance['metrostore_latest_product']; $latest_product_title = empty( $instance['metrostore_latest_product_title'] ) ? '' : $instance['metrostore_latest_product_title']; $feature_product = empty( $instance['metrostore_feature_product'] ) ? '' : $instance['metrostore_feature_product']; $feature_product_title = empty( $instance['metrostore_feature_product_title'] ) ? '' : $instance['metrostore_feature_product_title']; $onsale_product = empty( $instance['metrostore_onsale_product'] ) ? '' : $instance['metrostore_onsale_product']; $onsale_product_title = empty( $instance['metrostore_onsalse_product_title'] ) ? '' : $instance['metrostore_onsalse_product_title']; $upsale_product = empty( $instance['metrostore_upsale_product'] ) ? '' : $instance['metrostore_upsale_product']; $upsale_product_title = empty( $instance['metrostore_upsalse_product_title'] ) ? '' :$instance['metrostore_upsalse_product_title']; $product_number = empty( $instance['metrostore_deault_tabs_product_number'] ) ? 5 : $instance['metrostore_deault_tabs_product_number']; echo $before_widget; ?>
'product', 'posts_per_page' => $product_number ); $query = new WP_Query($product_args); if($query->have_posts()) { while($query->have_posts()) { $query->the_post(); ?>
'product', 'meta_key' => '_featured', 'meta_value' => 'yes', 'posts_per_page' => $product_number ); $query = new WP_Query($feature_product); if($query->have_posts()) { while($query->have_posts()) { $query->the_post(); ?>
'product', 'posts_per_page' => $product_number, 'meta_query' => array( 'relation' => 'OR', array( // Simple products type 'key' => '_sale_price', 'value' => 0, 'compare' => '>', 'type' => 'numeric' ), array( // Variable products type 'key' => '_min_variation_sale_price', 'value' => 0, 'compare' => '>', 'type' => 'numeric' ) ) ); $query = new WP_Query($on_sale); if($query->have_posts()) { while($query->have_posts()) { $query->the_post(); ?>
'product', 'meta_key' => 'total_sales', 'orderby' => 'meta_value_num', 'posts_per_page' => $product_number ); $query = new WP_Query($upsell_product); if($query->have_posts()) { while($query->have_posts()) { $query->the_post(); ?>
widget_fields(); foreach ($widget_fields as $widget_field) { extract($widget_field); $instance[$metrostore_widgets_name] = metrostore_widgets_updated_field_value($widget_field, $new_instance[$metrostore_widgets_name]); } return $instance; } public function form($instance) { $widget_fields = $this->widget_fields(); foreach ($widget_fields as $widget_field) { extract($widget_field); $metrostore_widgets_field_value = !empty($instance[$metrostore_widgets_name]) ? $instance[$metrostore_widgets_name] : ''; metrostore_widgets_show_widget_field($this, $widget_field, $metrostore_widgets_field_value); } } }