Hiro技术站

插件专区新篇—-Hiro.pagenav:自渲染、自解析的分页插件 v1.8更新

WordPress:高亮管理员的留言信息

分类:Hack技巧 发表时间:2009年09月6日 字体大小:12号14号

在wp中有着管理员回复留言者的功能,但是正常的情况下,管理员和评论者的留言信息的样式是一样的,所以一眼看上去没什么区别。只能通过查看是否有admin这个人的留言信息。但是更多的博主们喜欢用自己心仪的英文名来显示,从而代替了默认的admin显示名。那么对阅读者来说,貌似留言都来自于访问者,而没有管理员的回复留言。

那么我总结了两个高亮管理员的留言的方法。方法如下:

方法一、 简单的固定管理员方法:

该方法只有当管理员的邮箱地址是固定不变的时候才可以生效,若改变的管理员的邮箱地址,那么也需要在源代码中修改相应的地址。所以该方法比较适合一个人固定邮箱地址的博客。

打开comments.php文件,若管理员只有一个人,添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
< ?php
      $admin_email = "hiro.zhd@gmail.com";
 
       $admin_comment = false;   //设置一个布尔类型的变量来判断该留言是否为管理员的留言
 
       //如果该留言是管理员的留言
       if($comment->comment_author_email == $admin_email){  
            $admin_comment = true;  
            break;  
       }  
?>

当然若一个博客有多个管理员的话,可以使用一个数组来存放这些管理员的邮箱地址,那么该方法的源代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< ?php  
     $admin_emails = array(
                                "hiro.zhd@gmail.com",
                                "hiro@ihiro.org",
                                "hiro@gmail.com"
                           );     
 
     $admin_comment = false;     //设置一个布尔类型的变量来判断该留言是否为管理员的留言
     foreach ($admin_emails as $admin_email){  
         //如果该留言是管理员的留言 
         if($comment->comment_author_email == $admin_email){  
             $admin_comment = true;  
             break;  
         }  
    };  
 ?>

最后在使用xhtml来控制留言列表时,只需判断$admin_comment的布尔值即可,为真则该留言是管理员的留言,为假,则是来访者的留言,xhtml源码如下:

1
2
3
<li class="<?php if($admin_comment) echo 'admincomment'; ?>">  
     <!-- 这里输出其他的html信息 -->  
</li>

最后,只需对类admincomment样式化即可突出管理员的留言(样式化的css则可以自己随意更改),如:

1
2
3
4
5
.admincomment{
      background:#191919; 
      color:#FFF; 
      border:1px solid #333;
}

方法二、自动侦测管理员邮箱:

只需添加一些与数据库操作的php代码即可自动侦查到博客中所有管理员的邮箱地址,从而存储在一个数组中,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< ?php   
     $user_level = 8;   //默认地,wp有1-10是个数字来控制wp中用户的角色(如管理员、编辑、作者、阅读者等),而管理员的数字则是8
     $admin_emails = array();   //用来存放侦查到的所有管理员邮箱地址的数组 
 
     //从数据库中查找做角色数字为8的所有管理员帐号
     $admin_accounts = $wpdb->get_results("SELECT * FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= $user_level ");  
 
     //获得每个管理员各自的邮箱地址
     foreach ($admin_accounts as $admin_account){  
         $admin_info = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE ID = $admin_account->user_id");  
 
         //将管理员的邮箱地址添加到存放的数组中 
         $admin_emails[$admin_account->user_id] = $admin_info->user_email;  
     }     
?>

既然获得了所有管理员的邮箱地址,那么剩下的工作就和方法一的多个管理员判断一样了,即:

1
2
3
4
5
6
7
8
9
10
< ?php  
     $admin_comment = false;     //设置一个布尔类型的变量来判断该留言是否为管理员的留言
     foreach ($admin_emails as $admin_email){  
         //如果该留言是管理员的留言 
         if($comment->comment_author_email == $admin_email){  
             $admin_comment = true;  
             break;  
         }  
    };  
 ?>

然后xhtml代码:

1
2
3
<li class="<?php if($admin_comment) echo 'admincomment'; ?>">  
     <!-- 这里输出其他的html信息 -->  
</li>

css代码:

1
2
3
4
5
.admincomment{
      background:#191919; 
      color:#FFF; 
      border:1px solid #333;
}

那么到此为止,高亮管理员留言的方法介绍完毕。希望可以给大家带去点帮助!

不错不错,已经有 个评论!
  1. 恩,方法很多,都很方便呵呵

  2. 确实方便

  3. 很强大,学习一下。

  4. 联合国要求hiro放出效果演示图~

    • 看到我的回复留言信息没有,这就是效果啊!!!我样式化我的留言为粉红,并加了下滑线!

    • 我也回复一个来个鲜明对比,哈哈~

    • 偶也测试下这个回复功能。

  5. ca

    看来有时间 我得来实践下

  6. 好炫的颜色啊。

  7. 哈哈 我的已经高亮了。。。。

    • 我早发现了哦!!

  8. 只要评论见血就够了哈!

  9. 很好,加以区别让页面更友好,方便阅读。

  10. 我想知道怎么在最新评论里隐去管理员的评论。。看着和这的判断原理是一样的,但我不会写,大师啥时候有空教一下。。

    • Hiro

      这个简单啊,只需在留言列表的外围加一个if语言判断一下子就好了,如:
      if($comment->comment_author_email != $admin_email)
      留言人的邮箱个管理员邮箱不相等时才显示留言,那么管理员的留言就可以隐去了啊!

  11. 曾几何时,这就是我想要的

  12. 我该学习一下啊 快落伍了

  13. 正迫切需要这个,请问分别修改那些文件啊?因为我是小菜,所以麻烦讲解明白点,谢谢

  14. 学习了~希望会用到!

  15. 博主 你好 代码基本上看明白了 可是不知道该加在哪个文件里还是新建一文件呢?

    • 我在文章中写了啊,修改comments.php文件即可!

  16. 不明白XHTML是哪个文件?说得详细点可以吗??

    <li class="”>

    这个代码不知道放哪里!···

    • 修改comments.php文件

  17. 不好意思,我真的没有看明白您的代码,上面的php判断管理员我已经添加到comments.php中了,但是下面的:
    <li class="”>

    这个到底是如何添加呢?在Comments.php中吗?可是我添加后出错了呀,麻烦您能详细的说一下吗?

    • 因为每个主题的comments.php文件的代码不一样,不过你看到有li标签的地方就都添加了试试啊!

  18. 博客做的不错呀!支持你的博客!

  19. 请问,然后xhtml代码那部分对于一般的WP主题,对应哪个部分?谢谢了

    • 你找到.commentlist列表标签里面li标签,有的主题是调用了functions.php文件里的mytheme_comment函数,所以li标签有时会存在在这个函数中!

  20. Don

    有点复杂,慢慢研究,谢谢技术分享

    • Hello! I agree with you, that this topic is inspirational as is and the sharing in this Blog!!

  21. 博主啊 你这个评论样式不错 可以分享一下吗?呵呵 感激不尽嘿嘿ie

    • 呵呵,这效果和样式都是自己写的,你可以到源代码里去找啊!!!

我要评论

* *