Woocommerce là một plugin rất phổ biến hiện nay, nó được sử dụng để làm web shop. Có nhiều khách hàng yêu cầu là phải có phần sản phẩm vừa xem. Hôm nay tôi sẽ chia sẽ cách làm. Thực tế thì trong woocommerce thì đã có sẵn một widget làm vấn đề này rồi, tuy nhiên nếu bạn không muốn filter hay can thiệp vào trong code của woocommerce để nó có được hiển thị đúng với layout thiết kế của khách, thì có thể làm theo cách của tôi.
Đầu tiên ta cần dùng session để lưu các id vào mảng rồi chúng ta xài hook woocommerce_before_single_product để session được thực hiện. Dưới đây là toàn bộ code để làm việt này.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php add_action( 'woocommerce_before_single_product','create_session_for_save_id_product' ); //add_action( 'woocommerce_single_product_summary','tung_test' ,1); function create_session_for_save_id_product(){ // Start the session session_start(); global $post; $productId = $post->ID; if(!isset($_SESSION['viewed_product'])){ $_SESSION['viewed_product'] = array(); } if(!isset($_SESSION['viewed_product'][$productId])){ $_SESSION['viewed_product'][$productId] = time(); } } ?> |
1 2 3 4 5 6 |
$list_id_product = array(); if(!empty($_SESSION['viewed_product'])): foreach($_SESSION['viewed_product'] as $key => $value): array_push($list_id_product,$key ); endforeach; endif; |
1 2 3 4 5 6 7 8 9 10 11 |
<?php $args = array( 'post_type' => 'product', 'post__in' => $list_id_product, 'posts_per_page' => $shownumber, 'post_status' => 'publish' ); $wp_query = new WP_Query( $args ); if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); //thông tin sản phẩm ở đây <?php endwhile; wp_reset_postdata(); endif; ?> |
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress