在备注部分中,在用户名旁边标识并显示用户是管理员

时间:2013-05-15 作者:Strasbourg

供所有用户查看。不仅仅是管理员的原因。此外,我正在使用一个名为“简单用户排名”的插件来显示用户排名,该排名是根据发布的评论数计算的,因此我需要以某种方式覆盖它;我不想让我的管理员在没有发表太多评论的情况下,有一个像菜鸟或smth这样的状态。用于在我的评论模板中显示排名Im。php

 <?php if( function_exists(\'get_user_rank\') ) echo get_user_rank(); ?>
我想要的是:

  if ( current_user_can(\'...\')) echo \'admin\' else  ( current_user_can(\'....\'))
  else if or end if : ( function_exists(\'get_user_rank\') ) echo get_user_rank(); 
当我添加一个新用户名时,我有多种选择,如:版主、编辑、作者。。。可能有基于这些角色的功能。。

非常感谢。

注意:询问是因为我不知道如何创建这样的函数。

插件的核心:

   if( !function_exists(\'get_user_rank\') ) {

function get_user_rank() 
{   
    if( !$ranks = get_option(\'_user_rank_comments_fields\') ) return false;

    $count = get_transient( \'user_rank_comments_\' . substr(md5( strtolower(get_comment_author_email( $comment_id )) ),0,8) );

    if ( false === $count ) {

        global $wpdb;
        $count = $wpdb->get_var( $wpdb->prepare( \'SELECT COUNT(comment_ID) 
                                                  FROM \' . $wpdb->comments. \' 
                                                  WHERE comment_author_email = %s
                                                    AND comment_approved = 1\'
                                                    , 
                                                    get_comment_author_email()

                                                ) 
                                        );
        set_transient( \'user_rank_comments_\' . substr(md5( strtolower(get_comment_author_email( $comment_id )) ),0,8), $count );
    } 


    foreach( $ranks as $row ) {
        if( $count >= (int)$row[\'count\'] )
            $rank = $row[\'name\'];
        else break;
    }
    return $rank;
}
    }

1 个回复
SO网友:s_ha_dum

从注释循环内部。。。

$author_data = get_user_by(\'login\',$comment->comment_author);
if (!empty($author_data)) {              
  var_dump($author_data->roles);
}
$author_data->roles 是一个数组,因此您需要计算出要对其执行的操作。也就是说,全部打印出来?打印排名最高的角色?

if (array_intersect(array(\'administrator\',\'moderator\'),$author_data->roles)) {
  echo \'admin\';
} elseif (array_intersect(array(\'something\',\'else\'),$author_data->roles)) {
  echo \'something else\';
}

结束

相关推荐

在wp-admin的外观菜单下放置一个直接指向定制样式表的链接

FINAL UPDATE: @birgire更新的代码解决了我的问题。如果您面临类似问题,请阅读公认的答案。ORIGINAL QUESTION IN DETAIL: 目前,在admin的外观菜单下,有一个名为“编辑器”的链接,单击该链接将导致可编辑的主样式表,我的努力是将链接放在自定义样式表上,因为这样更方便,从长远来看,我可以节省大量时间。这个链接可能会显示为外观下的一个子菜单项(直接链接到我的自定义样式表.css),我倾向于比其他任何东西都更频繁地单击它。为了实现这一目标,我按照this articl