WPCMS程序基于评论员用户角色样式显示
2014-04-30 10:42
295 查看
本文介绍如何按照Wordpress评论者的角色确定评论的显示样式,以及如何让评论的class更干净。
定义一个按照给定的用户ID返回其角色的函数
/*
Retrieve a commentator's role by the user ID
*/
function cwp_get_user_role( $user_id=null ){
if ( ! isset( $user_id ) ) return null;
$user = new WP_User( $user_id );
$wp_roles = new WP_Roles;
$role_names = $wp_roles->get_names();
$user_role_array = array ();
foreach ( $user->roles as $role ){
if ( isset ( $role_names[ $role ] ) )
$user_role_array[ $role ] = $role_names[ $role ];
}
return key( $user_role_array );
}
为Wordpress的COMMENT_CLASS 添加 工程塑料磁力泵过滤器
/*
Add filter to comment_class for your Wordpress
*/
function cwp_add_comment_author_roles_to_comment_class( $classes, $class, $comment_id, $post_id ){
//Clean out the unnecessary classes for your comment list item.
//if you want to use it,uncomment the following sentence.
/* $classes=cwp_clean_out_unnecessary_comment_classes($classes);*/
$comment = get_comment( $comment_id );
$user_id = (int)$comment->user_id;
if ( 0 != $user_id ){
$role = cwp_get_user_role( $user_id );
if ( ! isset( $role ) || emptyempty( $role ) ) return $classes;
$classes[] = $role;
}
return $classes;
}
add_filter( 'comment_class', 'cwp_add_comment_author_roles_to_comment_class', 10, 4 );
现在看看HTML输出 工程塑料磁力泵情况:
<li class="comment byuser comment-author-pw even thread-odd thread-alt depth-1 contributor" id="comment-18">
<!--此评论的内容部分-->
</li>
看到了吧,代表角色的"contributor"已经按照预想正确输出了,但是comment_class默认输出了很多classes,但是并不是都有用的,下面定义一个清理函数,让清理过的classes仅保留comment:
/*
Clean out the unnecessary classes for your comment list item.
*/
function cwp_clean_out_unnecessary_comment_classes($classes){
foreach( $classes as $key => $class ) {
switch( $class ) {http://www.jscd.gov.cn/
case 'comment':
continue;
default:
unset( $classes[$key] );
continue;
break;
}
}
unset($key,$class);
return $classes;
}
添加了上述代码后,再在'cwp_add_comment_author_roles_to_comment_class'函数中按照说明将被注释掉的那一句启用,然后再看看输出了什么:
<li class="comment contributor" id="comment-18">
<!--the comment item content is here-->
</li>
基于用户角色决定评论样式
剩下要做的事情就是根据上述输出的代表角色的class来定义css了,这个,得你自己按照需要来做。
定义一个按照给定的用户ID返回其角色的函数
/*
Retrieve a commentator's role by the user ID
*/
function cwp_get_user_role( $user_id=null ){
if ( ! isset( $user_id ) ) return null;
$user = new WP_User( $user_id );
$wp_roles = new WP_Roles;
$role_names = $wp_roles->get_names();
$user_role_array = array ();
foreach ( $user->roles as $role ){
if ( isset ( $role_names[ $role ] ) )
$user_role_array[ $role ] = $role_names[ $role ];
}
return key( $user_role_array );
}
为Wordpress的COMMENT_CLASS 添加 工程塑料磁力泵过滤器
/*
Add filter to comment_class for your Wordpress
*/
function cwp_add_comment_author_roles_to_comment_class( $classes, $class, $comment_id, $post_id ){
//Clean out the unnecessary classes for your comment list item.
//if you want to use it,uncomment the following sentence.
/* $classes=cwp_clean_out_unnecessary_comment_classes($classes);*/
$comment = get_comment( $comment_id );
$user_id = (int)$comment->user_id;
if ( 0 != $user_id ){
$role = cwp_get_user_role( $user_id );
if ( ! isset( $role ) || emptyempty( $role ) ) return $classes;
$classes[] = $role;
}
return $classes;
}
add_filter( 'comment_class', 'cwp_add_comment_author_roles_to_comment_class', 10, 4 );
现在看看HTML输出 工程塑料磁力泵情况:
<li class="comment byuser comment-author-pw even thread-odd thread-alt depth-1 contributor" id="comment-18">
<!--此评论的内容部分-->
</li>
看到了吧,代表角色的"contributor"已经按照预想正确输出了,但是comment_class默认输出了很多classes,但是并不是都有用的,下面定义一个清理函数,让清理过的classes仅保留comment:
/*
Clean out the unnecessary classes for your comment list item.
*/
function cwp_clean_out_unnecessary_comment_classes($classes){
foreach( $classes as $key => $class ) {
switch( $class ) {http://www.jscd.gov.cn/
case 'comment':
continue;
default:
unset( $classes[$key] );
continue;
break;
}
}
unset($key,$class);
return $classes;
}
添加了上述代码后,再在'cwp_add_comment_author_roles_to_comment_class'函数中按照说明将被注释掉的那一句启用,然后再看看输出了什么:
<li class="comment contributor" id="comment-18">
<!--the comment item content is here-->
</li>
基于用户角色决定评论样式
剩下要做的事情就是根据上述输出的代表角色的class来定义css了,这个,得你自己按照需要来做。
相关文章推荐
- 基于角色的用户权限设计探讨(非常不错)
- Windows服务(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)
- 5、用户数据报发送 基于UDP 协议的网络程序
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Java集合框架上机练习题(泛型、JFrame)用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- 微信小程序之页面样式以及背景图片显示问题
- 基于FormsAuthentication的用户、角色身份认证
- 不同的角色用户显示不同的页面
- 编写一个单文档界面应用程序,该程序可以测试在鼠标左键按下时鼠标光标的位置是否处在某规定的矩形框内,如果不在该矩形内则计算机的扬声器会发出“叮”的声音,反之则会在用户区显示光标的位置。
- 写一个用户在线显示的程序
- 基于arm7芯片lpc2138的十六进制转换10进制显示程序
- 微信小程序开发记账应用实战服务端之用户注册与登录-基于Yii2描述
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- 基于角色和资源的用户权限控制(用SpringMVC实现)
- 基于操作系统的键盘板显示程序(LPC2103版本)
- mahout实现基于用户的Mahout推荐程序
- 使基于对话框的程序全屏显示
- 编写一个求n个数的平均值及最小值的程序。要求:程序执行时,用户先由键盘输入n的值,之后输入n个数,最后,程序显示平均值和最小值。
- lesson 9:编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。