本文介绍如何按照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 ) || empty( $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 ) {
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了,这个,得你自己按照需要来做。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
那可以查看用户最后登录时间吗
自己看下 https://www.wpdaxue.com/?s=%E7%94%A8%E6%88%B7%E5%88%97%E8%A1%A8
怎么查看某个用户的所有评论啊大神
这个页面大概讲到了思路,自己去看看,可以调用指定id的10条最新评论 https://wordpress.stackexchange.com/questions/212459/list-user-comments-in-author-page
我想问下,如何让这个css只修改comment-author vcard这个的样式怎么做呢?我想实现的是评论者名字后面添加一个小图片,类似于博客的大v那样的效果;
这个代码要如何使用呢?加到主题的functions.php文件里么?加进去之后如何在前台需要的位置调用出来呢?
哈哈,这个貌似可以实现站长认证,VIP会员之类的代码…
第二个函数中的
if ( ! isset( $role ) || emptyempty( $role ) ) return $classes;
应该为empty( $role )
已更正
函数名字能不能再长一点…………
可以更长一点,哈哈。