?>
<li>
	<a class="ts-wg-thumbnail" href="<?php 
echo esc_url(get_permalink($product->id));
?>
" title="<?php 
echo esc_attr($product->get_title());
?>
">
		<?php 
echo $product->get_image();
?>
	</a>
	<div class="ts-wg-meta">
		<?php 
ts_template_loop_categories();
?>
		<a href="<?php 
echo esc_url(get_permalink($product->id));
?>
" title="<?php 
echo esc_attr($product->get_title());
?>
">
			<?php 
echo $product->get_title();
?>
		</a>
		<span class="price"><?php 
echo $product->get_price_html();
?>
示例#2
0
        function widget($args, $instance)
        {
            if (!ts_has_woocommerce()) {
                return;
            }
            extract($args);
            $title = apply_filters('widget_title', $instance['title']);
            $limit = $instance['limit'] != 0 ? absint($instance['limit']) : 8;
            $product_type = $instance['product_type'];
            $product_cats = $instance['product_cats'];
            $row = $instance['row'] != 0 ? absint($instance['row']) : 4;
            $show_thumbnail = empty($instance['show_thumbnail']) ? 0 : $instance['show_thumbnail'];
            $show_categories = empty($instance['show_categories']) ? 0 : $instance['show_categories'];
            $show_product_title = empty($instance['show_product_title']) ? 0 : $instance['show_product_title'];
            $show_price = empty($instance['show_price']) ? 0 : $instance['show_price'];
            $show_rating = empty($instance['show_rating']) ? 0 : $instance['show_rating'];
            $is_slider = empty($instance['is_slider']) ? 0 : $instance['is_slider'];
            $show_nav = empty($instance['show_nav']) ? 0 : $instance['show_nav'];
            $auto_play = empty($instance['auto_play']) ? 0 : $instance['auto_play'];
            if ($limit == $row) {
                $is_slider = false;
            }
            $args = array('post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $limit, 'orderby' => 'date', 'order' => 'desc', 'meta_query' => array(array('key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN')));
            switch ($product_type) {
                case 'sale':
                    $args['meta_query'][] = array('key' => '_sale_price', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC');
                    break;
                case 'featured':
                    $args['meta_query'][] = array('key' => '_featured', 'value' => 'yes');
                    break;
                case 'best_selling':
                    $args['meta_key'] = 'total_sales';
                    $args['orderby'] = 'meta_value_num';
                    $args['order'] = 'desc';
                    break;
                case 'top_rated':
                    add_filter('posts_clauses', array(WC()->query, 'order_by_rating_post_clauses'));
                    break;
                default:
                    /* Recent */
                    $args['orderby'] = 'date';
                    $args['order'] = 'desc';
                    break;
            }
            if (is_array($product_cats) && count($product_cats) > 0) {
                $field_name = is_numeric($product_cats[0]) ? 'term_id' : 'slug';
                $args['tax_query'] = array(array('taxonomy' => 'product_cat', 'terms' => $product_cats, 'field' => $field_name));
            }
            global $post, $product, $smof_data;
            $lazy_load = isset($smof_data['ts_prod_lazy_load']) && $smof_data['ts_prod_lazy_load'];
            $placeholder_img_src = isset($smof_data['ts_prod_placeholder_img']) ? $smof_data['ts_prod_placeholder_img'] : wc_placeholder_img_src();
            echo $before_widget;
            if ($title) {
                echo $before_title . $title . $after_title;
            }
            $products = new WP_Query($args);
            if ($products->have_posts()) {
                $count = 0;
                $num_posts = $products->post_count;
                if ($num_posts <= $row) {
                    $is_slider = false;
                }
                if (!$is_slider) {
                    $row = $num_posts;
                }
                $extra_class = '';
                $extra_class .= $is_slider ? 'ts-slider loading' : '';
                $extra_class .= $is_slider && $show_nav ? ' has-navi' : '';
                ?>
				
				<div class="ts-products-widget-wrapper woocommerce <?php 
                echo esc_attr($extra_class);
                ?>
" data-show_nav="<?php 
                echo esc_attr($show_nav);
                ?>
" data-auto_play="<?php 
                echo esc_attr($auto_play);
                ?>
">
					<?php 
                while ($products->have_posts()) {
                    $products->the_post();
                    $product = wc_get_product($post->ID);
                    ?>
						<?php 
                    if ($count % $row == 0) {
                        ?>
						<div class="per-slide">
							<ul class="product_list_widget">
						<?php 
                    }
                    ?>
							<li>
								<a class="ts-wg-thumbnail" href="<?php 
                    echo esc_url(get_permalink($product->id));
                    ?>
" title="<?php 
                    echo esc_attr($product->get_title());
                    ?>
">
									<?php 
                    if ($show_thumbnail) {
                        if (!$lazy_load) {
                            echo $product->get_image();
                        } else {
                            $image_size = 'shop_thumbnail';
                            $img_src = '';
                            $alt = '';
                            $dimensions = wc_get_image_size($image_size);
                            if (has_post_thumbnail($product->id)) {
                                $post_thumbnail_id = get_post_thumbnail_id($product->id);
                                $image_obj = wp_get_attachment_image_src($post_thumbnail_id, $image_size, 0);
                                if (isset($image_obj[0])) {
                                    $img_src = $image_obj[0];
                                }
                                $alt = trim(strip_tags(get_post_meta($post_thumbnail_id, '_wp_attachment_image_alt', true)));
                            } else {
                                if (wc_placeholder_img_src()) {
                                    $img_src = wc_placeholder_img_src();
                                }
                            }
                            echo '<img src="' . esc_url($placeholder_img_src) . '" data-src="' . esc_url($img_src) . '" alt="' . esc_attr($alt) . '" class="attachment-shop_thumbnail wp-post-image ts-lazy-load" width="' . $dimensions['width'] . '" height="' . $dimensions['height'] . '" />';
                        }
                    }
                    ?>
								</a>
								
								<div class="ts-wg-meta">
								
									<?php 
                    if ($show_categories) {
                        ts_template_loop_categories();
                    }
                    ?>
									
									<a href="<?php 
                    echo esc_url(get_permalink($product->id));
                    ?>
" title="<?php 
                    echo esc_attr($product->get_title());
                    ?>
">
										<?php 
                    if ($show_product_title) {
                        echo esc_html($product->get_title());
                    }
                    ?>
									</a>
									<?php 
                    if ($show_price) {
                        woocommerce_template_loop_price();
                    }
                    ?>
									<?php 
                    if ($show_rating) {
                        woocommerce_template_loop_rating();
                    }
                    ?>
								</div>
							</li>
						<?php 
                    if ($count % $row == $row - 1 || $count == $num_posts - 1) {
                        ?>
	
							</ul>
						</div>
						<?php 
                    }
                    ?>
					<?php 
                    $count++;
                }
                ?>
				</div>
				<?php 
            }
            echo $after_widget;
            if ($product_type == 'top_rated') {
                remove_filter('posts_clauses', array(WC()->query, 'order_by_rating_post_clauses'));
            }
            wp_reset_postdata();
        }