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.