本文介紹如何按照Wordpress評論者的角色確定評論的顯示樣式,以及如何讓評論的class更干凈。
定義一個按照給定的用戶ID返回其角色的函數(shù)
/*
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 );
現(xiàn)在看看HTML輸出情況:
<li class="comment byuser comment-author-pw even thread-odd thread-alt depth-1 contributor" id="comment-18">
<!--此評論的內容部分-->
</li>
看到了吧,代表角色的”contributor“已經按照預想正確輸出了,但是comment_class默認輸出了很多classes,但是并不是都有用的,下面定義一個清理函數(shù),讓清理過的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‘函數(shù)中按照說明將被注釋掉的那一句啟用,然后再看看輸出了什么:
<li class="comment contributor" id="comment-18">
<!--the comment item content is here-->
</li>
基于用戶角色決定評論樣式
剩下要做的事情就是根據上述輸出的代表角色的class來定義css了,這個,得你自己按照需要來做。
聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯(lián)系我們進行處理。






那可以查看用戶最后登錄時間嗎
自己看下 http://www.ydqwiac.cn/?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這個的樣式怎么做呢?我想實現(xiàn)的是評論者名字后面添加一個小圖片,類似于博客的大v那樣的效果;
這個代碼要如何使用呢?加到主題的functions.php文件里么?加進去之后如何在前臺需要的位置調用出來呢?
哈哈,這個貌似可以實現(xiàn)站長認證,VIP會員之類的代碼…
第二個函數(shù)中的
if ( ! isset( $role ) || emptyempty( $role ) ) return $classes;
應該為empty( $role )
已更正
函數(shù)名字能不能再長一點…………
可以更長一點,哈哈。