十字星

  • 首页
  • 技术
  • 随笔
  • 瞎折腾
  • 平面设计
  • 文集
  • 留言
  • 其他
    • API测试
  1. 首页
  2. 技术
  3. 正文

WordPress文章阅读量统计和显示(非插件,刷新页面不累加)

2020-08-29 1209点热度 1人点赞 0条评论

每进入一次文章详情页面,就会通过cookie判断该用户是否在cookie有效期内访问过该文章,如果没有访问过,则浏览次数加一.

实现步骤如下:

1.添加如下代码至主题functions.php文件中,在文件最下面加入即可

function post_views_record()
{//设置 post 文章阅读次数
    if (is_singular()) {
        global $post;
        $post_ID = $post->ID;
        if ($post_ID) {            
            if(!isset($_COOKIE['views'.$post_ID.COOKIEHASH]) || $_COOKIE['views'.$post_ID.COOKIEHASH] != '1'){
                $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);
                }
                setcookie('views'.$post_ID.COOKIEHASH,'1');
            }
        }
    }
}

function get_post_views($before = '', $after = '')
{//读取 post 文章阅读次数
    global $post;
    $post_ID = $post->ID;
    $views   = (int) get_post_meta($post_ID, 'views', true);
    if ($views >= 1000) {
        $views = round($views / 1000, 2) . 'K';
    }
    return $before . $views . $after;
}

2,添加如下代码至主题header.php文件中,必须加在该文件最上方,否则setcookie始终返回false,不会生效,原因是setcookie()之前不能有任何HTTP头部输出

post_views_record();

3,添加如下代码至要显示浏览次数的位置,例如文章详情页single.php

<?php echo get_post_views();?>
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: PHP WordPress
最后更新:2020-08-29

cxw

技术宅,最喜瞎折腾.

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
git迁移项目中的某个目录到新项目 winform判断设计模式还是运行时模式 C# 中的where T : class, new() 到底是什么意思? 解决安装.NET失败并提示“无法建立到信任根颁发机构的证书链” 关闭.net4.0的http访问默认代理 删除名称最后带空格的文件夹
WordPress使用Kratos主题,不用插件实现存档模板 [转载]将xls格式Excel批量转换成xlsx格式 记录备忘:WMsg参数常量值 Windows创建软连接 解决安装.NET失败并提示“无法建立到信任根颁发机构的证书链” Visual Studio Code(VSCode)中查看php数组的全部元素
标签聚合
Excel PHP Linux 工具 WordPress C# IT WinForm CentOS W10
最近评论
admin 发布于 4 年前(01月22日) 使用Andi Dittrich作者的插件Enlighter实现
alex 发布于 4 年前(01月22日) 博主,请问把代码贴到博客里可以复制是怎么实现的

COPYRIGHT © 2021 十字星. ALL RIGHTS RESERVED

Theme Kratos Made By Seaton Jiang