昨天发现了一个问题,也许这个不能称之为一个问题(bug?),只是个人思考方式的不同罢了。关于这个问题的描述是这样的:
我在用户组中新建了一个用户,权限设置为“编辑”,然后发了一篇文章。当我在这篇文章下用管理员账号回复评论时,居然发现我设置的管理员账号样式居然不起作用(可以参见此篇文章)。经过具体排查,原来是函数中get_the_author_email(),获取的是作者的Email账号,所以当我用管理员回复时,邮箱地址和这个新用户作者的邮箱不匹配,所以被当成了普通评论者。但是,让我无法忍受的是,这本来应该是模板的问题,居然我收到了一封评论审核通知,居然要审核我的管理员账户所发的评论!这个应该就是WordPress这个程序的代码问题了吧。靠,我自己审核我自己?
这个问题应该说是一个很特别的例子,因为我是想让不同作者所写的文章我用管理员账号回复时都显示的是特殊定义的样式,而大多数的人我想不会这么做吧,甚至很少设两个用户的吧,除了那些开放写作协议的网站。所以最简单的方法是直接将get_the_author_email()改为 你的管理员Email ,前后注意加上半角单引号。
临发这篇文章时,我随手搜了一下,貌似get_the_admin_email()即可以获取管理员邮箱。所以也可以改为这个。如果想让作者回复也可以应用特别样式,可以用get_the_admin_email() || get_the_author_email(),用一个与符号连接这连个。哈哈,我对php不懂,仅凭一点C知识,以上除了直接替换为邮箱我测试过,其它我都没测试。有心的人可以自己去试试。出了错别找我哈。。。
——————————————————分隔符————————————————————
又想到一点,这一点管理员样式与普通回复样式是用if语句区别的,我们也可以再嵌套一个if语句,将get_the_author_email()和get_the_admin_email()都if进去,然后分别给予作者和管理员不同的样式属性,通过css定义,这样也可以区分普通评论者、作者、管理员三者的样式了。有这方面需求的不妨也试试。
再次声明,以上为个人YY,测试者请注意备份。
————————————————10月19日21:00测试——————————————————
根据以上想法,我测试成功。具体的就是将评论样式<li></li>之间定义作者的代码(如果你的模板没有也可以自行添加)修改如下:
<li class=”comment <?php if($comment->comment_author_email == get_the_author_email()) {echo ‘authorcomment’;} if($comment->comment_author_email == ‘你的管理员邮箱’) {echo ‘admincomment’;} else {echo ‘regularcomment’;} ?>” id=”comment-<?php comment_ID() ?>”>
。。。。。。。
</li>
即可成功应用管理员与作者不同的评论样式。如果再加上普通评论的双色控制,就可以在你的评论列表里实现四色控制。
具体效果如下(第二个作者author右上角的那个标志是在css中自行定义,我懒得改了,所以只改了个颜色):

后面三个名字都是author,可能有人看不懂了,我来解释一下,我比较懒,测试时忘记换名字了。这四条评论应用的是不同的邮箱,第一个是管理员账号邮箱,第二个是本篇日志作者的邮箱,后两个都是随手瞎写的邮箱。
这个不一定适合每个人,我自己就没这么做,这个适合有多个作者的博客。并且,如果需要,你可以自行添加if来实现更加具体的作者样式控制。
——————————————分割线—————————————
为了更具体,待会儿我自己测试一下。
请注意看清本篇文章的发布者与本站的管理员。
本文作者作者是traveler,本站管理员是qiqiboy。
作者样式我是改变了右上角logo,请注意看。
一下前四条(1到4楼)评论是我自己测试所发。请注意观察,每条评论一种样式。
你添加了以后,可记得css中还要添加样式属性,别css中没加样式控制就说没效果没效果:lol: