供所有用户查看。不仅仅是管理员的原因。此外,我正在使用一个名为“简单用户排名”的插件来显示用户排名,该排名是根据发布的评论数计算的,因此我需要以某种方式覆盖它;我不想让我的管理员在没有发表太多评论的情况下,有一个像菜鸟或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;
}
}
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\';
}