WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版
前几天在修复留言日期显示错误的问题时,突然觉得可以在这个位置集成一下访客信息,因为见到过不少博客的留言板都有了类似的功能。经过搜索、测试并筛选,最终选定了 Show UserAgent 这款插件。在本地测试了一下,感觉还不错!
一、强迫症
在我熟悉了 WordPress 插件机制后,我总是强迫症的想将插件修改为代码集成。实际上插件和代码的差别只在于代码不需要用到一些钩子动作(hook action)和选项数据(option data)。很多人说插件用多了会拖慢速度,没错是有这么回事,但是如果你把同样数量的插件修改成纯代码集成,我想速度也不会快多少!你以为增加的功能是吃白饭的哦?多一个功能就多会一份消耗!
那修改为代码版是为了提升性能嘛?其实也不尽然,我这种强迫症会这样想:看到后台已安装插件黑压压的,就会抓耳挠腮,想尽办法能删一个是一个。所以,我拿到这个插件并测试无误后,第一件时间就是将其修改为代码版,以满足强迫症的心理需求。
二、折腾狂
经过几番折腾,目前已趋近完善:
①、合并 php 代码并去掉了插件所需的冗余代码,如 hook、action 等;
②、轻度汉化了一些信息显示(浏览器名称,部分国籍等),插件是纯英文的;
③、创意性添加诙谐翻译(原创诙谐翻译,请勿盗版哟~哈哈):
④、其他不为人知的折腾细节。
三、自己撸
下面分享部署方法,自己撸去吧:
①、下载我整理好的代码包:
②、解压后将得到的 show-useragent 文件夹一并上传到正在用的 WordPress 主题目录;
③、编辑 WordPress 主题目录下的 functions.php,在第一个<?php 之后或最后一个 ?>之前添加引用语句:
include("show-useragent/show-useragent.php"); //显示访客信息
④、下面这一步有点麻烦,请仔细看;
A. 编辑 WordPress 主题目录下的 comments.php 文件,搜索 wp_list_comments:
比如,知更鸟 HotNewspro 的 comments.php 文件会搜到下面这一串代码
<?php wp_list_comments('type=comment&callback=mytheme_comment&end-callback=mytheme_end_comment'); ?>
如果你发现代码中有一个 callback=xxxxx 回调函数,那么说明你的主题已自定义了评论列表的样式,那么请自行查找 callback 后面接的函数名(一般会在主题目录下的 functions.php 里面),然后在适当的位置插入如下代码:
<?php CID_print_comment_flag(); echo ' ';CID_print_comment_browser(); ?>
比如张戈博客,就是将以上代码添加到了评论者名称的后面,所以我只要在 mytheme_comment 函数里面找到评论者评论代码:
<strong><?php commentauthor(); ?></strong>:
然后在后面添加 UA 显示代码,添加后如下所示:
<strong><?php commentauthor(); ?></strong>:
<?php CID_print_comment_flag(); echo ' ';CID_print_comment_browser(); ?>
B. 如果主题没有自定义评论样式,那就得对 WP 动刀子了,这种情况比较少,本文就不赘述了。
顺便说一下,评论列表这个函数(wp_list_comments)位于 wp-includes/comment-template.php,主题没有自定义评论列表的话,自己去看着文件,慢慢折腾吧!
个人建议,如果主题没有自定义评论主题列表,还是自行定义一个比较好,网上教程也挺多,搜索 mytheme_comment 应该就能找到一大把,自己去折腾吧!
四、补刀手
萝卜白菜,各有所爱!每个人都有自己不同的口味,所以简单说一下拿到代码后如何继续自定义修改。
其实,被我合并代码之后,能修改的基本都一目了然,会中文并能认识简单的一些英文,什么 Windows,MAC OS 啥的。那你就可以自定转换为你想要的中文显示。
基本上,能修改的内容都在合并后的文件里面:show-useragent.php
比如,我把插件定义的 China 临时修改为【来自天朝的朋友】,我只需要找到合理的位置,插入如下代码:
if($name=='China'){
$name = '来自天朝的朋友';
}
当然了,既然你要继续折腾,那你也总得有点基础,别瞎改代码,回头变白板了就来我这投诉我给的东西不能用啥的!喜欢折腾,不会代码,还不爱搜索的人,还是安心写文章吧,别整这些“没用的”!
五、新补充
IP 库更新的方法:http://www.speedfly.cn/9488.html
最新 IP 库下载:http://zhangge.net/wp-content/themes/HotNewspro/show-useragent/ip2c/ip-to-country.bin
下载后替换插件下同名文件即可。
- POI -纯java代码实现导出excel表格
- 程序员必知的8大排序(java实现)
- Struts2 s2-032远程代码执行分析
- 微信企业号二次开发--自定义菜单接口开发--应用中心
- 微信最新自定义菜单事件
- 微信JSSDK分享到朋友圈和朋友自定义内容功能实现
- 无线安全渗透测试套件WiFi-Pumpkin新版本发布
- Java使用QQ邮箱给其他邮箱发邮件
- 从wireshark抓包开始学习https
- 用于时间序列预测的Python环境
- Pandoc安装实现Markdown转PDF (CentOS6)
- String类replaceAll方法正则替换深入分析
- 微信硬件平台对接--蓝牙
- 初试git+github(linux环境)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- IntelljJ最新激活教程,有效期到 2089 年!
- 【从0到1学算法】二分查找法
- Spring事务源码分析专题(二)Mybatis的使用及跟Spring整合原理分析
- IIC
- JVM系列之:Contend注解和false-sharing
- FFmpeg 实现视频 封装 与 解封装
- 万物皆可状态机
- ggplot2折线图展示美国和印度COVID-19单日新增确诊人数变化趋势
- JBrowse安装配置的一些教程
- 对不起,网上找的Redis分布式锁都有漏洞!
- 打卡群刷题总结0722——颜色分类
- 为什么Python没有main函数?
- 构建对象检测模型
- OpenCV4.4 + YOLOv4 真的可以运行了…..
- 基于分类任务的信号(EEG)处理