Display viewed products

Paste code to function.php in Child theme

Demo

Set cookies for guest/user

function xsolution_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', 'xsolution_set_user_visited_product_cookie');

Create shortcode

add_shortcode('xsolution_recently_viewed_products', 'xsolution_prod_viewed_atts'); 
function xsolution_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="xsolution-recently--wrap">
        <div class="xsolution-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();
}

Shortcode

[xsolution_recently_viewed_products]

Last updated