1BANNER 123
5/5 - (129 bình chọn)

Hôm nay mình sẽ hướng dẫn cho các bạn 1 đoạn query nhỏ nhỏ để có thể hiển thị được các sản phẩm có cùng mức giá với sản phẩm hiện tại. Demo sẽ như thế này nhé.

Mọi người đừng quên donate cho mình nếu bài viết này hữu ích cho bạn nhé

Hiển thị sản phẩm cùng mức giá

Để có thể lấy được sản phẩm cùng mức giá, đầu tiên chúng ta sẽ lấy ra giá của sản phẩm và tăng cái khoảng hiển thị mức giá lên, ở đây mình sẽ cho lấy trong khoảng 20% nhé, tức là vd sp giá 100 thì mình sẽ lấy ra các sản phẩm có giá nằm trong khoảng 80 – 120.

$p_custom = get_post_meta( get_the_ID(), '_price', true );
$p_custom_mx = $p_custom*(1.2);
$p_custom_mn = $p_custom*(0.8);

Kế tiếp thì chúng ta sẽ biến query theo meta key là giá nhé.

$query = array(
        'post_status' => 'publish',
        'post_type' => 'product',
        'posts_per_page' => 4,
        'post__not_in' => array($id), 
        'meta_query' => array(
            array(
                'key' => '_price',
                'value' => array($p_custom_mn, $p_custom_mx),
                'compare' => 'BETWEEN',
                'type' => 'NUMERIC'
            )
        )
    );
$pttuanquery = new WP_Query($query); 

Các bạn lưu ý ở phần posts_per_page nếu muốn hiển thị nhiều sản phẩm hơn nữa thì hãy sửa thành 5 6 7 8 gì đó nhé.

Như vậy là xong, kế đến chúng ta sẽ chạy vòng lặp và hiển thị ra các sản phẩm có mức giá trong khoảng đó.

    if ( $pttuanquery->have_posts() ) :
    echo do_shortcode('[title text="Sản phẩm cùng mức giá"]');
    echo '<div class="row large-columns-4 medium-columns-3 small-columns-2 row-small">';
    while ( $pttuanquery->have_posts() ) : $pttuanquery->the_post();
        wc_get_template_part( 'content', 'product' );
    endwhile;
    wp_reset_postdata();
    echo '</div>';
    endif;

Như vậy là xong. Đối với các bạn không nắm quá nhiều về query thì copy toàn bộ đoạn code bên dưới này dán vào functions.php nhé.

Dán code vào file functions.php
function add_product_same_price_pttuan(){
$p_custom = get_post_meta( get_the_ID(), '_price', true );
$p_custom_mx = $p_custom*(1.2);
$p_custom_mn = $p_custom*(0.8);
$query = array(
        'post_status' => 'publish',
        'post_type' => 'product',
        'posts_per_page' => 4,
        'post__not_in' => array(get_the_ID()), 
        'meta_query' => array(
            array(
                'key' => '_price',
                'value' => array($p_custom_mn, $p_custom_mx),
                'compare' => 'BETWEEN',
                'type' => 'NUMERIC'
            )
        )
    );
$pttuanquery = new WP_Query($query); 
    if ( $pttuanquery->have_posts() ) :
    echo do_shortcode('[title text="Sản phẩm cùng mức giá"]');
    echo '<div class="row large-columns-4 medium-columns-3 small-columns-2 row-small">';
    while ( $pttuanquery->have_posts() ) : $pttuanquery->the_post();
        wc_get_template_part( 'content', 'product' );
    endwhile;
    wp_reset_postdata();
    echo '</div>';
    endif;
}
add_action('woocommerce_after_single_product_summary','add_product_same_price_pttuan',1);

Ở đây mình dùng hook

woocommerce_after_single_product_summary
và đánh vị trí là 1 nên nó sẽ xuất hiện ngay phía trên của mô tả sản phẩm nhé.

Note: Các bạn muốn thay đổi khoảng giá hiển thị thì có thể sửa ở đây nhé

$p_custom_mx = $p_custom<em>(1.2); $p_custom_mn = $p_custom</em>(0.8);

Ở đây mình để là 20% công thức là 1+0,2 và 1- 0,2

Hiển thị các sản phẩm có cùng mức giá

Hi vọng bài viết này sẽ giúp cho các bạn giải quyết được vấn đề của mình.

Chúc các bạn thành công, có bất kì câu hỏi nào cứ hỏi mình nhé.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *