Đếm và hiển thị lượt xem bài viết trên wordpress không cần plugin hỗ trợ cache


Đếm và hiển thị lượt xem bài viết trên wordpress không cần plugin hỗ trợ cache

38 Likes 4 Comments

Có rất nhiều plugin hỗ trợ đếm và hiển thị số lượt xem của bài viết trên wordpress nhưng vì một vài lý do nào đó mà nhiều bạn không muốn sử dụng plugin, nên bài viết này mình giới thiệu tới các bạn đếm và hiển thì số lượt xem bài viết không sử dụng plugin. 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.

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.

<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.

.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.

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);
}
}

Đây là kết quả:

Chúc các bạn thành công !

Bài viết liên quan

Chủ bút: Lê Tú

Blog mình lập ra nhằm mục đích viết lại những gì mình đã tìm hiểu, đã đọc được trên mạng, qua bạn bè để mai mốt cần tìm khỏi quên, cũng như chia sẻ những thứ mà mình đã sưu tầm được. Vì mình không phải chuyên lập trình website nên một số bài viết còn sai sót mong mọi người góp ý.

4 Comments

    1. Bạn cứ làm theo hướng dẫn bài viết là đc, nếu thắc mắc chỗ nào bạn cứ gửi tin nhắn nếu hỗ trợ được mình sẵn sàng hỗ trợ bạn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *