博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wordpress中非插件统计文章浏览次数
阅读量:6489 次
发布时间:2019-06-24

本文共 2863 字,大约阅读时间需要 9 分钟。

非插件统计文章浏览次数

1.在主题的 functions.php文件的最后一个 ?> 前面添加下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 访问计数 */
function 
record_visitors(){
    
if 
(is_singular())
    
{
      
global 
$post
;
      
$post_ID 
$post
->ID;
      
if
(
$post_ID
)
      
{
          
$post_views 
= (int)get_post_meta(
$post_ID
'views'
, true);
          
if
(!update_post_meta(
$post_ID
'views'
, (
$post_views
+1)))
          
{
            
add_post_meta(
$post_ID
'views'
, 1, true);
          
}
      
}
    
}}add_action(
'wp_head'
'record_visitors'
); 
/// 函数名称:post_views/// 函数作用:取得文章的阅读次数function post_views($before = '(点击 ', $after = ' 次)', $echo = 1){
  
global 
$post
;
  
$post_ID 
$post
->ID;
  
$views 
= (int)get_post_meta(
$post_ID
'views'
, true);
  
if 
(
$echo
echo 
$before
, number_format(
$views
), 
$after
;
  
else 
return 
$views
;}

2.在需要显示该统计次数的地方使用下面的代码调用:

1
阅读:<?php post_views(
' '
' 次'
); ?>

获取浏览次数最多的文章

如果要获取上面的函数统计出来的浏览次数最多的文章,可以在 functions.php文件的最后一个 ?> 前面添加下面的代码:

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
/// get_most_viewed_format/// 函数作用:取得阅读最多的文章function get_most_viewed_format($mode = '', $limit = 10, $show_date = 0, $term_id = 0, $beforetitle= '(', $aftertitle = ')', $beforedate= '(', $afterdate = ')', $beforecount= '(', $aftercount = ')') {
  
global 
$wpdb
$post
;
  
$output 
''
;
  
$mode 
= (
$mode 
== 
''
) ? 
'post' 
$mode
;
  
$type_sql 
= (
$mode 
!= 
'both'
) ? 
"AND post_type='$mode'" 
''
;
  
$term_sql 
= (
is_array
(
$term_id
)) ? 
"AND $wpdb->term_taxonomy.term_id IN (" 
. join(
','
$term_id
) . 
')' 
: (
$term_id 
!= 0 ? 
"AND $wpdb->term_taxonomy.term_id = $term_id" 
''
);
  
$term_sql
.= 
$term_id 
" AND $wpdb->term_taxonomy.taxonomy != 'link_category'" 
''
;
  
$inr_join 
$term_id 
"INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)" 
''
;   
// database query
  
$most_viewed 
$wpdb
->get_results(
"SELECT ID, post_date, post_title, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) $inr_join WHERE post_status = 'publish' AND post_password = '' $term_sql $type_sql AND meta_key = 'views' GROUP BY ID ORDER BY views DESC LIMIT $limit"
);
  
if 
(
$most_viewed
) {
   
foreach 
(
$most_viewed 
as 
$viewed
) {
    
$post_ID    
$viewed
->ID;
    
$post_views 
= number_format(
$viewed
->views);
    
$post_title 
= esc_attr(
$viewed
->post_title);
    
$get_permalink 
= esc_attr(get_permalink(
$post_ID
));
    
$output 
.= 
"<li>$beforetitle$post_title$aftertitle"
;
    
if 
(
$show_date
) {
      
$posted 
date
(get_option(
'date_format'
), 
strtotime
(
$viewed
->post_date));
      
$output 
.= 
"$beforedate $posted $afterdate"
;
    
}
    
$output 
.= 
"$beforecount $post_views $aftercount</li>"
;
   
}
  
else 
{
   
$output 
"<li>N/A</li>n"
;
  
}
  
echo 
$output
;}

然后使用下面的函数调用:

1
<?php get_most_viewed_format(); ?>
本文转自 IT阿飞 51CTO博客,原文链接:http://blog.51cto.com/itafei/1886331

转载地址:http://tcouo.baihongyu.com/

你可能感兴趣的文章
算法笔记_080:蓝桥杯练习 队列操作(Java)
查看>>
Solidworks 如何绘制投影曲线
查看>>
Linux 文件夹含义(转)
查看>>
c++构造函数具体解释
查看>>
利用ROS工具从bag文件中提取图片
查看>>
JDBC2.0操作:结果集,更新,插入,删除,批处理语句
查看>>
HDU 1710 Binary Tree Traversals(二叉树)
查看>>
C#知识点总结系列
查看>>
POJ 3463 Sightseeing
查看>>
[转]真正了解CSS3背景下的@font face规则
查看>>
loadrunner下的putty和plink
查看>>
鼠标右键添加"在此处打开命令窗口"
查看>>
exadata(硬件更换文档部分)
查看>>
Asp.Net Core WebAPI入门整理(一)
查看>>
CSS Text
查看>>
Android 防内存泄露handler
查看>>
Redis整合Spring结合使用缓存实例
查看>>
【POJ 3292】 Semi-prime H-numbers
查看>>
时空的乐章
查看>>
Linux中Sed的用法
查看>>