Hướng dẫn hiển thị sản phẩm đã xem trong Woocommerce
Woocommerce có sẵn hook hay Widget hỗ trợ hiển thị sản phẩm đã xem nhưng giao diện thì có thể không theo ý bản thân hay không phù hợp với theme các bạn. Ở bài viết này mình sẽ nói rõ và fix 1 số lỗi mà các bạn gặp phải dù đã setup giống với các bài hướng dẫn ở nơi khác.
Hiển thị sản phẩm đã xem
Đoạn code dưới đây giúp các bạn hiển thị 5 bài viết với giao diện để theo đường dẫn template-parts/content với tiêu đề SẢN PHẨM VỪA XEM:
<?php
global $woocommerce;
$viewed_products = ! empty( $_COOKIE['woocommerce_recently_viewed'] ) ? (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] ) : array();
$viewed_products = array_filter( array_map( 'absint', $viewed_products ) );
?>
<?php
$query_args = array(
'posts_per_page' => 5, // Hiển thị số lượng sản phẩm đã xem
'post_status' => 'publish',
'post_type' => 'product',
'post__in' => $viewed_products,
'orderby' => 'rand'
);
$query_args['meta_query'] = array();
$query_args['meta_query'][] = $woocommerce->query->stock_status_meta_query();
$r = new WP_Query($query_args);
if ( $r->have_posts() ) {
?>
<div class="giniit-title">
<h2>SẢN PHẨM VỪA XEM</h2>
</div>
<?php
while ( $r->have_posts() ) { $r->the_post();
get_template_part( 'template-parts/content', get_post_type() ); // Giao diện hiển thị theo ý bạn muốn
}
};
wp_reset_postdata();
?>
Set cookies
Hẳn vậy, có một việc mình phát hiện ra cookies của Woo chỉ setcho Widget (Sản phẩm vừa xem), đó là lý do mà ngay cả khi bạn copy đoạn code trên mạng từ các trang khác dưới dạng Shortcode hay Query tương tự mình thì đa phần sẽ hiển thị sai. Để giải quyết vấn đề đó, các bạn giúp mình copy đoạn code sau cho vào file functions.php:
Khi bạn đăng nhập lần đầu tiên bằng nút Đăng nhập Xã hội, chúng tôi thu thập thông tin hồ sơ công khai tài khoản của bạn được chia sẻ bởi nhà cung cấp Đăng nhập Xã hội, dựa trên cài đặt quyền riêng tư của bạn. Chúng tôi cũng nhận được địa chỉ email của bạn để tự động tạo tài khoản cho bạn trong trang web của chúng tôi. Khi tài khoản của bạn được tạo, bạn sẽ đăng nhập vào tài khoản này.
Không đồng ýĐồng ý
Kết nối với
Tôi cho phép tạo tài khoản
Khi bạn đăng nhập lần đầu tiên bằng nút Đăng nhập Xã hội, chúng tôi thu thập thông tin hồ sơ công khai tài khoản của bạn được chia sẻ bởi nhà cung cấp Đăng nhập Xã hội, dựa trên cài đặt quyền riêng tư của bạn. Chúng tôi cũng nhận được địa chỉ email của bạn để tự động tạo tài khoản cho bạn trong trang web của chúng tôi. Khi tài khoản của bạn được tạo, bạn sẽ đăng nhập vào tài khoản này.
Đoan code đầu tiên để trong page nào vậy ad
Ở bất kì chỗ nào bạn muốn hiển thị sản phẩm đã xem bạn nhé