如何在 WordPress 评论中显示每位用户的国家、浏览器版本、操作系统版本信息
关键词:WordPress、UA、评论、浏览器版本、操作系统、IP地址、城市、User-Agent、WPDiscuz、自定义主题
WordPress 评论显示 UA 效果展示,可识别各主流浏览器、操作系统和手机型号,可识别 IP 地理位置。
支持识别QQ、微信、知乎、微信电脑版等………
WordPress 评论显示 UA 所需文件下载
show-useragent
目录放在主题根目录下show-useragent.php
,放在 show-useragent
目录下ua-style.css
,放在 show-useragent
目录下functions.php
文件中 include("./show-useragent/show-useragent.php")
,然后按主题格式调用相应的输出函数“按主题格式调用相应的输出函数”这句话可能会难倒一大批用户,但是确实每个主题甚至评论插件的形式都不一样,我只能以 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-">
你可以按照你自己主题的评论输出格式,在恰当的位置加上 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);
希望大家都能打造出漂亮的评论区。