Nếu bạn đang muốn hiện thị số lượt xem sản phẩm nhằm gia tăng trải nghiệm khách hàng, thì đoạn code dưới đây sẽ giúp bạn làm điều này nhanh chóng mà không cần sử dụng plugin.
Để tạo bộ đếm tùy chỉnh trong Woocommerce, chúng ta sẽ sử dụng một số function để thực thi chức năng này gồm có:
- Sử dụng hàm
get_post_meta()
để lấy và lưu trữ dữ liệu lượt xem dựa trên ID sản phẩm. - Sử dụng hàm
update_post_meta()
cập nhật lượt xem vào meta key. - Hiện thị số lượt xem trong phần chi tiết sản phẩm, sử dụng hook
woocommerce_before_add_to_cart_button
- Hiện thị ở Shop page/Archive Product Page, sử dụng hook
woocommerce_after_shop_loop_item
Lưu ý: Bạn nên chèn đoạn code này trong Child Theme.
Hiện thị theo mỗi lượt xem
Bộ đếm sẽ hoạt động khi có lượt truy cập. Tăng dần theo từng lượt và hiện thị tổng số lượt xem
Hiện thị ở chi tiết sản phẩm
Bạn dán đoạn code này vào file function.php
add_action('wp', 'product_view_counter');
function product_view_counter() {
global $post;
if ( is_product() ){
$meta = get_post_meta( $post->ID, '_total_views_count', TRUE );
$meta = ($meta) ? $meta + 1 : 1;
update_post_meta( $post->ID, '_total_views_count', $meta );
}
}
Đoạn mã này sẽ kiểm tra đây có là trang sản phẩm hay không? Nếu đây là trang sản phẩm thì sẽ thêm một post meta field ‘_total_views_count‘. Sau khi tạo ra bộ đếm, việc còn lại là hiện thị. Bạn có thể hiện thị tùy chỉnh với vị trí hook mà theme bạn đang dùng.
add_action('woocommerce_before_add_to_cart_button','show_product_view_counter_on_product_page', 10);
function show_product_view_counter_on_product_page() {
global $product;
$id = $product->id;
$meta = get_post_meta( $id, '_total_views_count', true);
if(!$meta) {
$count = 0;
} else {
$count = $meta;
}
echo "<div class="custom-visitor-count"><i class="fa fa-eye"></i><span class="counter-value">".$count." Views</span></div>";
}
Hiện thị ở danh mục sản phẩm
Muốn hiện thị phần lượt xem sản phẩm tại danh mục bạn chỉ cần lặp lại đoạn code trên và thay thế hook ở shop page là xong.
add_action( 'woocommerce_after_shop_loop_item', 'show_product_view_counter_on_shop_page', 10);
function show_product_view_counter_on_shop_page() {
global $product;
$id = $product->id;
$meta = get_post_meta( $id, '_total_views_count', true);
if(!$meta) {
$count = 0;
} else {
$count = $meta;
}
echo "<div class="custom-visitor-count"><i class="fa fa-eye"></i><span class="counter-value">".$count." Views</span></div>";
}
Đếm và hiện thị lượt xem theo IP
Để đếm lượt xem dựa theo IP, bạn vẫn sử dụng các hàm ở trên và kết hợp thêm hàm kiểm tra IP truy cập.
add_action('wp', 'product_view_counter');
function product_view_counter() {
global $post;
$userip = $_SERVER['REMOTE_ADDR'];
if ( is_product() ){
$meta = get_post_meta( $post->ID, '_total_views_count', TRUE );
$meta = (!$meta) ? array() : explode( ',', $meta );
$meta = array_filter( array_unique( $meta ) );
if( ! in_array( $userip, $meta ) ) {
array_push( $meta, $userip );
update_post_meta( $post->ID, '_total_views_count', implode(',', $meta));
}
}
}
Okay, vậy đã xong! Nếu bạn có bất kì thắc mắc nào hãy comment ý kiến của bạn nhé!
Nguồn: yourblogcoach.com