Skip to main content

[Thủ Thuật WP] Hiển thị sản phẩm đã xem cho theme Wordpress

Code snippet  WordPress cho tính năng "Hiển thị sản phẩm đã xem cho theme Wordpress".

Bước 1 - Set Cookie cho user

Đầu tiên ta phải Set Cookie khi user ghé thăm trang chi tiết sản phẩm bằng cách chèn code bên dưới vào functions.php của theme.

function isures_set_user_visited_product_cookie()
{
    if (!is_singular('product')) {
        return;
    }
 
    global $post;
 
    if (empty($_COOKIE['woocommerce_recently_viewed'])) { 
        $viewed_products = array();
    } else {
        $viewed_products = wp_parse_id_list((array) explode('|', wp_unslash($_COOKIE['woocommerce_recently_viewed']))); 
    }
 
    $keys = array_flip($viewed_products);
 
    if (isset($keys[$post->ID])) {
        unset($viewed_products[$keys[$post->ID]]);
    }
 
    $viewed_products[] = $post->ID;
 
    if (count($viewed_products) > 22) {
        array_shift($viewed_products);
    }
 
    wc_setcookie('woocommerce_recently_viewed', implode('|', $viewed_products));
}
add_action('wp', 'isures_set_user_visited_product_cookie');

Bước 2- Tạo ShortCode 

Cũng bỏ vào file functions.php cho shortcode hiển thị danh sách sản phẩm đã xem.

add_shortcode('isures_recently_viewed_products', 'isures_2718_prod_viewed_atts');
 
 
function isures_2718_prod_viewed_atts()
{
    ob_start();
    $viewed_products = !empty($_COOKIE['woocommerce_recently_viewed']) ? (array) explode('|', wp_unslash($_COOKIE['woocommerce_recently_viewed'])) : array();
    $viewed_products = array_reverse(array_filter(array_map('absint', $viewed_products)));
 
     
 
?>
    <div id="isures-recently--wrap">
 
        <div class="isures-container">
            <?php
            if (!empty($viewed_products)) {
                echo do_shortcode('[products type="row" columns="6" ids="' . implode(',', $viewed_products) . '"]');
            } else {
                echo 'Không có sản phẩm xem gần đây';
            }
 
            ?>
        </div>
    </div>
 
<?php
    return ob_get_clean();
}

Bước 3 - Hiển thị Shortcode

Đặt shortcode [isures_recently_viewed_products] vừa tạo ở bất cứ nơi nào bạn muốn hiển thị danh sách sản phẩm đã xem.