Hiển thị sản phẩm giảm giá WooCommerce (Sale products)

23/10/2019 Wordpress 9181 lượt xem
Lưu bài viết

Tiếp tục với chủ để hướng dẫn WooCommerce hôm nay mình sẽ hướng dẫn cho các bạn get danh sách sản phẩm giảm giá WooCommerce (sale products).

Set sản phẩm giảm giá WooCommerce

Cũng giống như sản phẩm nổi bật trong WooCommerce, sản phẩm giảm giá cũng được định nghĩa sẵn trong plugin. Để xác định sản phẩm nào đang giảm giá chúng ta dựa vào trường giá của mỗi sản phẩm.

sản phẩm giảm giá WooCommerce

Khu vực đăng giá của một sản phẩm sử dùng woo

Ở khu vực điền giá sản phẩm sẽ có 2 trường là: Giá bán thườnggiá khuyến mãi.  Khi chúng ta nhập dữ liệu vào trường giá khuyến mãi có nghĩa là sản phẩm này đang giảm giá. Và mặc định thì giá khuyến mãi phải luôn thấp hơn giá bán thường.

Vậy để để chuyển một sản phẩm thường thành sản phẩm đang giảm giá thì chúng ta chỉ cần điền giá trị vào trường giá khuyến mãi :D

Hiển thị sản phẩm giảm giá WooCommerce

Phần sản phẩm trong plugin WooCommerce là một custom post type, có type là product vì thế để get danh sách sản phẩm giảm giá chúng ta cũng dùng vòng lặp get post new WP_Query, cộng thêm một số thông số khác để lấy chính xác sản phẩm giảm giá.

Cụ thể chúng ta có đoạn code get sản phẩm giảm giá như sau:

<?php $args = array( 
	'post_type' => 'product',
	'posts_per_page' => 10, 
	'meta_query'     => array(
        'relation' => 'OR',
        array(
            'key'           => '_sale_price',
            'value'         => 0,
            'compare'       => '>',
            'type'          => 'numeric'
        )
    )
); ?>
<?php $getposts = new WP_query( $args);?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
<?php global $product; ?>
	<div class="item-product">
		<a href="<?php the_permalink(); ?>">
			<?php echo get_the_post_thumbnail(get_the_ID(), 'thumnail', array( 'class' =>'thumnail') ); ?>
		</a>
		<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
		<div class="price-product"><?php echo $product->get_price_html(); ?></div>
		<a href="<?php bloginfo('url'); ?>?add-to-cart=<?php the_ID(); ?>">Thêm vào giỏ</a>
	</div>
<?php endwhile; wp_reset_postdata();?>

Đoạn code trên mình get ra 10 sản phẩm giảm giá.

Giải thích chuyên sâu :))

Giá giảm của sản phẩm được lưu ở bản wp_postmeta trong database wordpress, với meta_key là "_sale_price", mình đi kiểm trả trường nào có giá trị lớn hơn 0 thì lấy sản phẩm này ra :D Đồng nghĩa với việc sản phẩm đó là sản phẩm giảm giá.

Hiển thị sản phẩm giảm giá WooCommerce (Sale products)

Đây là những sản phẩm đang giảm giá được lưu trong bảng wp_postmeta

Còn nếu bạn không cần hiểu sâu thì cứ copy đoạn code rồi sử dụng là oke rồi. :D

Bổ sung từ anh: gaumapdev (Gấu mập dev)

Nếu trong trường hợp sản phẩm biến thể chúng ta sử dụng doạn code sau:

<?php $args = array( 
	'post_type' => 'product',
	'posts_per_page' => 10, 
	'meta_query'     => array(
        'relation' => 'OR',
        array(
            'key'           => '_sale_price',
            'value'         => 0,
            'compare'       => '>',
            'type'          => 'numeric'
        ),
        array(
	        'key'           => '_min_variation_sale_price',
	        'value'         => 0,
	        'compare'       => '>',
	        'type'          => 'numeric'
	    )
    )
); ?>
<?php $getposts = new WP_query( $args);?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
<?php global $product; ?>
	<div class="item-product">
		<a href="<?php the_permalink(); ?>">
			<?php echo get_the_post_thumbnail(get_the_ID(), 'thumnail', array( 'class' =>'thumnail') ); ?>
		</a>
		<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
		<div class="price-product"><?php echo $product->get_price_html(); ?></div>
		<a href="<?php bloginfo('url'); ?>?add-to-cart=<?php the_ID(); ?>">Thêm vào giỏ</a>
	</div>
<?php endwhile; wp_reset_postdata();?>

Tóm lại:

Hôm nay mình đã hướng dẫn cho các bạn cách để hiển thị sản phẩm khuyến mãi trong WooCommerce. Ngoài cách hiển thị bằng code như phía trên bạn có thể sử dụng shortcode được plugin cung cấp sẵn để hiển thị.

Các shortcode mà plugin cung cấp bạn có thể tìm hiểu qua link này: Shortcode WooCommerce

Mình sẽ tiếp tục cho ra nhiều bài viết về chủ để hướng dẫn WooCommerce các bạn follow fan page Blog Huy Kira để đọc nha :)

Chúc các bạn học wordpress thành công!