Xem code đầy đủ hơn tại https://codfe.com/hien-thi-so-luot-xem-bai-viet-trong-theme-flatsome-khong-dung-plugin
Tại sao cần phải hiển thị số người xem bài viết wordpress? đơn giản thôi đó là vì muốn xem xem hiệu quả bài viết của mình đến đâu? bao nhiêu người đã đọc được những nội dung mình xuất bản hay đơn giản là show hàng :).
Nếu bạn đang tìm Plugin để giải quyết nhanh vấn đề này thì đây không phải là bài viết dành cho bạn, bạn có thể xem thêm lợi và hại của việc dùng nhiều plugin trong web wordpress nhé.
Sau đây là đoạn code đếm lượt truy cập website mà mình sưu tầm. Lưu ý đoạn code dưới đây có hỗ trợ cache nên các bạn thoải mái sử dụng không lo vấn đề không đếm được lượt xem khi dùng cache.
Thêm code đếm và hiển thị lượt xem cho bài viết
Đầu tiên ta thêm đoạn code này vào file functions.php của theme mình đang sử dụng.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
function getPostViews($postID, $is_single = true){ global $post; if(!$postID) $postID = $post->ID; $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if(!$is_single){ return '<span class="svl_show_count_only">'.$count.' Views</span>'; } $nonce = wp_create_nonce('devvn_count_post'); if($count == "0"){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return '<span class="svl_post_view_count" data-id="'.$postID.'" data-nonce="'.$nonce.'">0 View</span>'; } return '<span class="svl_post_view_count" data-id="'.$postID.'" data-nonce="'.$nonce.'">'.$count.' Views</span>'; } function setPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count == "0" || empty($count) || !isset($count)){ add_post_meta($postID, $count_key, 1); update_post_meta($postID, $count_key, 1); }else{ $count++; update_post_meta($postID, $count_key, $count); } } add_action( 'wp_ajax_svl-ajax-counter', 'svl_ajax_callback' ); add_action( 'wp_ajax_nopriv_svl-ajax-counter', 'svl_ajax_callback' ); function svl_ajax_callback() { if ( !wp_verify_nonce( $_REQUEST['nonce'], "devvn_count_post")) { exit(); } $count = 0; if ( isset( $_GET['p'] ) ) { global $post; $postID = intval($_GET['p']); $post = get_post( $postID ); if($post && !empty($post) && !is_wp_error($post)){ setPostViews($post->ID); $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); } } die($count.' Views'); } add_action( 'wp_footer', 'svl_ajax_script', PHP_INT_MAX ); function svl_ajax_script() { if(!is_single()) return; ?> <script> (function($){ $(document).ready( function() { $('.svl_post_view_count').each( function( i ) { var $id = $(this).data('id'); var $nonce = $(this).data('nonce'); var t = this; $.get('<?php echo admin_url( 'admin-ajax.php' ); ?>?action=svl-ajax-counter&nonce='+$nonce+'&p='+$id, function( html ) { $(t).html( html ); }); }); }); })(jQuery); </script> <?php } |
Tiếp tục mở file single.php và thêm đoạn sau vào vị trí mà bạn muốn hiển thị. Lưu ý đoạn code này không nhất thiết là thêm vào file single.php cái này còn tùy thuộc vào theme của bạn đang sử dụng nữa.
1 |
<span class="count-views"><?php echo getPostViews(get_the_ID()); ?> </span> |
Thêm CSS cho cái hiển thị lượt xem, cái này tùy mỗi bạn có thể tùy chỉnh theo ý của mình hoặc không cần thêm cũng được.
1 2 3 4 5 6 7 8 9 10 11 12 |
.count-views:before { content: "\f06e"; color: #f96e5b; display: inline-block; font-size: 14px; font-family: 'FontAwesome'; margin: auto; padding: 5px; } span.count-views { color: #f96e5b; } |
Như vậy là xong, lưu lại và tận hưởng kết quả thôi.
Code này dành cho bạn nào cần hiển thị lượt xem bài viết trong admin. Ta mở file functions.php rồi thêm vào.
1 2 3 4 5 6 7 8 9 10 11 |
add_filter('manage_posts_columns', 'posts_column_views'); add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2); function posts_column_views($defaults){ $defaults['post_views'] = __( 'Views' , '' ); return $defaults; } function posts_custom_column_views($column_name, $id){ if( $column_name === 'post_views' ) { echo getPostViews( get_the_ID(), false); } } |
Chúc các bạn thành công !
THANKS