Hiển thị lượt xem bài viết hoặc sản phẩm không cần dùng plugin

Để bài viết hoặc sản phẩm có thêm độ “trust” cho người đọc, chúng ta có thể cho hiển thị lượt xem tại vị trí phù hợp. Để làm được điều này, bạn có thể sử dụng plugin như Post Views Counter hoặc sử dụng code PHP theo chia sẻ dưới đây

Bước 1: Thêm đoạn code sau vào file functions.php

// Post View Count
add_filter ('use_block_editor_for_post', '__return_false'); 
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.'</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</span>';
}
return '<span class="svl_post_view_count" data-id="'.$postID.'" data-nonce="'.$nonce.'">'.$count.'</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.'');
}
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
}

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'] = __( '' , '' );
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if( $column_name === 'post_views' ) {
echo getPostViews( get_the_ID(), false);
}
}

Bước 2: Thêm đoạn code sau vào vị trí muốn hiển thị lượt xem

<span class="postview"><i class="fa fa-eye"></i><?php echo getPostViews(get_the_ID()); ?></span>

Bước 3: Chỉnh sửa CSS để đạt được kiểu hiển thị mong muốn

Kết quả:

 

Về tôi

Minh Anh

Xin chia sẻ những phần việc nhỏ ở các dự án đã triển khai để tiện sử dụng lại ở những dự án khác, giúp rút ngắn thời gian hoàn thành sản phẩm, giảm chi phí cho đối tác và khách hàng.
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Danh mục bài viết

Khám phá những nội dung mới nhất

0
Rất thích suy nghĩ của bạn, hãy bình luận.x