WordPress 评论显示 UA

如何在 WordPress 评论中显示每位用户的国家、浏览器版本、操作系统版本信息

关键词:WordPress、UA、评论、浏览器版本、操作系统、IP地址、城市、User-Agent、WPDiscuz、自定义主题

效果展示

WordPress 评论显示 UA 效果展示,可识别各主流浏览器、操作系统和手机型号,可识别 IP 地理位置。

支持识别QQ、微信、知乎、微信电脑版等………

WordPress 评论显示 UA_第1张图片

WordPress 评论显示 UA_第2张图片

 

 

 

 

所需文件

WordPress 评论显示 UA​ 所需文件下载

使用方法

  • 下载资源文件并解压,将 show-useragent 目录放在主题根目录下
  • 下载代码,重命名为 show-useragent.php,放在 show-useragent 目录下
  • 下载样式,重命名为 ua-style.css,放在 show-useragent 目录下
  • 在主题 functions.php 文件中 include("./show-useragent/show-useragent.php"),然后按主题格式调用相应的输出函数

说明

  • 感谢 Phower 的 show-useragent 精简版
  • 我增加了QQ、微信、微信电脑版、知乎等常用设备的识别,增加了华东师范大学的 IP 检测以及华东师范大学的图标
  • 我增加了可供 WpDiscuz 调用的接口,将返回值更改为合适的格式
  • 我删掉了重复的代码,修复了一些潜在的逻辑错误(主要是操作系统、手机型号识别的部分)
  • 由于代码和样式经常更新,所以以代码片段的形式提供,确保每次访问都可以看到最新版本,你可以自行复制粘贴到文件
  • 由于资源文件不常修改,所以直接以压缩包的形式提供,但你仍然可以根据自己的需求增加更多的图标,以及更新 IP 地理数据库
  • 中国特别行政区(香港、澳门、台湾)的文字提示都修改为了“中国香港”等形式,旗子左侧也都贴上了中国国旗
  • 你可以根据仔细需要随意修改和使用这些资源

示例说明

“按主题格式调用相应的输出函数”这句话可能会难倒一大批用户,但是确实每个主题甚至评论插件的形式都不一样,我只能以 3 个例子来说一说应该怎么使用这个功能

例1

比较常见的形式是在主题提供了 comments.php 文件来专门处理评论,这个文件可能仅仅包括了评论区域前后样式和简单逻辑,但它有一个核心函数调用,是依次输出评论。

wp_list_comments( 'type=comment&callback=XXX', $comments_arr );

在 wp_list_comments 调用了 WordPress 的评论输出功率,将所有类型为 comments 的内容输出,其中 callback 为回调函数,主要是告诉 WordPress,要以什么样的样式来输出这些评论。

我们只需要在这里把 callback 设置为一个自定义函数的名称,例如 callback=showCommentsWithUserAgent

然后在 functions.php 实现这个自定义函数。

function showCommentsWithUserAgent($comment, $args, $depth)
{
    if ('div' === $args['style']) {
        $tag = 'div';
        $add_below = 'comment';
    } else {
        $tag = 'li';
        $add_below = 'div-comment';
    }
?>
    < id="comment-">
    
	    
%s'), get_comment_author_link()); ?> %1$s · %2$s'), get_comment_date('Y-n-j'), get_comment_time('G:i')); ?>
user_id == '1') // user_id 是发表评论的用户的 ID (对于已登录用户),未登录的访客评论时 user_id 值为 0,因此判断该 ID 是否为 1 即可判断是不是站长本人,可区分有访客冒用站长 ID 来发表评论 echo ''; ?> pin_top == '1') echo ''; ?> comment_approved == '0') : ?>

你可以按照你自己主题的评论输出格式,在恰当的位置加上 CID_print_comment_flag(); 和 CID_print_comment_browser();

例2

如果是使用 WPDiscuz 5.X 插件来实现评论功能的,那么与上面类似,只需要在 wpDiscuzSearchFormWalker.php 文件中的恰当位置按照 例1 所示,调用 show-useragent 即可。

需要注意这里不能直接 echo 了,所以我适配了 2 个函数,将处理结直接返回,这样就可以 append 到 WPDiscuz 的 commentOutput 中。

// 显示国别
$commentOutput .= CID_return_comment_flag_by_id($comment->comment_ID);
// 显示浏览器和操作系统
$commentOutput .= CID_return_comment_browser_by_id($comment->comment_ID);
例3

例3

WPDiscuz 7.X 开始对输出样式做了极大的修改。

首先修改 wpdiscuz/themes/default/layouts/<你使用的样式 ID>/author.html,在 {AUTHOR} 后增加 UA 相关的占位符。

{AUTHOR} {UA_COUNTRY} {UA_OS}

然后在 /wpdiscuz/themes/default/class.WpdiscuzWalker.php 输出 UA。

在 $user["authorNameHtml"] .= apply_filters("wpdiscuz_after_comment_author", "", $comment, $user["user"]); 之后,$search[] = "{AUTHOR_WRAPPER_CLASSES}"; 之前,加入:

$search[] = "{UA_COUNTRY}";
$search[] = "{UA_OS}";
$replace[] = CID_return_comment_flag_by_id_wpdiscuz_7($comment->comment_ID);
$replace[] = CID_return_comment_browser_by_id($comment->comment_ID);

希望大家都能打造出漂亮的评论区。

你可能感兴趣的:(博客)