所以这就是交易......我将Wordpress + bbPress与会员软件(aMember)集成在一起。
在我的bbPress论坛上,在人们的用户名下,我想要显示每个成员的Wordpress角色(不是bbpress角色),还要根据每个成员的角色显示图像。
例如,
如果用户角色是订阅者 - >在bbpress中的用户名下显示角色 - >同时在下面显示图片。
我想展示Wordpress角色(而不是bbpress角色)的原因是我的会员软件(会员)允许我根据用户的订阅设置不同的wordpress角色。我在我的网站上有两个不同的会员计划(一个免费和付费),我想根据他们的计划在我的bbpress论坛中显示不同的图像。
我浏览了bbPress模板,发现了这段代码(在loop-single-reply.php中):
<?php bbp_reply_author_link( array( 'sep' => '<br />', 'show_role' => true ) ); ?> // this shows the bbpress role
<?php echo 'Points: '.cp_getPoints(bbp_get_reply_author_id()); ?> // this shows the member points below the username - I use a points plugin)
现在我如何用代码显示每个用户的Wordpress角色(不是bbpress)替换此代码,并根据角色显示其下的图像。例如:
如果角色是“订阅者” - &gt;在其下显示角色+图像
如果是角色“贡献者” - &gt;在其下显示角色+图像
如果是角色“管理员” - &gt;在其下显示角色+图像
我不是程序员,所以我不知道如何做到这一点。请帮忙。我找到了一些相关的代码,我认为我可以用它来完成这项工作:
<?php if ( current_user_can('contributor') ) : ?>
Content
<?php endif; ?>
现在我失败的尝试看起来像这样:
<?php
$user_roles = $current_user->roles;
$current_user = $bbp_get_reply_author_id; // i think this is wrong :P
$user_role = array_shift($user_roles);
?>
<?php if ($user_role == 'administrator') : ?>
Show Role
Show Image
<?php elseif ($user_role == 'editor') : ?>
Show Role
Show Editor Image
<?php elseif ($user_role == 'author') : ?>
Show Role
Show Author Image
<?php elseif ($user_role == 'contributor') : ?>
Show Role
Show Contributor Image
<?php elseif ($user_role == 'subscriber') : ?>
Show Role
Show Subscriber Image
<?php else : ?>
Show Role
<?php endif ?>
我不知道我在做什么...上面的代码是我在Google上找到的。
有人可以帮忙吗?
我真的很感激。
答案 0 :(得分:11)
如果用户是订阅者,它会看起来像这样。
<?php
global $current_user;
get_currentuserinfo();
if ( user_can( $current_user, "subscriber" ) ){
// Show Role
// Show Subscriber Image
}
在你的情况下,如果你想做多个用户检查,我会使用像这样的开关语句
global $current_user;
get_currentuserinfo();
switch (true) {
case ( user_can( $current_user, "subscriber") ):
// Show Role
// Show Subscriber Image
break;
case ( user_can( $current_user, "contributor") ):
// Show Role
// Show Contributor Image
break;
case ( user_can( $current_user, "administrator") ):
// Show Role
// Show Administrator Image
break;
}
您可以继续使用更多用户角色的switch语句。
<强> EDITED 强>
global $current_user;
get_currentuserinfo();
switch (true) {
case ( user_can( $current_user, "subscriber") ):
echo '<img src="http:www.impho.com/images/001.jpg">';
break;
case ( user_can( $current_user, "contributor") ):
echo '<img src="http:www.impho.com/images/002.jpg">';
break;
case ( user_can( $current_user, "administrator") ):
echo '<img src="http:www.impho.com/images/003.jpg">';
break;
}
好的,应该这样做,用以下代码替换你获得用户名,头像,点和图像的所有代码。
在您的功能中添加
function userLooping($role, $img)
{
$user_query = new WP_User_Query( array( 'role' => $role ) );
// User Loop
if ( !empty( $user_query->results ) ):
foreach ( $user_query->results as $user ):
echo '<p>'. $user->display_name.'</p>'; // display user name
echo '<p>'.get_avatar($user->ID).'</p>'; // display user avatar
//echo '<p>Points: '.cp_getPoints(bbp_get_reply_author_id()).'</p>';
echo '<p>'.$img.'</p>'; //display image based on role
endforeach;
endif;
}
删除//
上方的echo
将以下内容放入模板中
<?php
$args = array( array('role' => 'administrator', 'img' => '<img src="http://placeape.com/100/100">'),array('role' => 'subscriber', 'img' => '<img src="http://placekitten.com/100/100">'));
foreach ($args as $arg):
userLooping($arg['role'],$arg['img']);
endforeach;
?>
添加更多角色和图片,只需在订阅者
之后添加新数组答案 1 :(得分:1)
我发现了一个简单的解决方案:
<?php
global $forumuser;
$forumuser = bbp_get_reply_author_id();
switch (true) {
case ( user_can( $forumuser, "author") ):
echo '<img src="http://www.impho.com/images/image1.png">';
break;
case ( user_can( $forumuser, "premium") ):
echo '<img src="http://www.impho.com/images/image2.png">';
break;
case ( user_can( $forumuser, "starter") ):
echo '<img src="http://www.impho.com/images/image3.png">';
break;
case ( user_can( $forumuser, "subscriber") ):
echo '<img src="http://www.impho.com/images/image4.png">';
break;
}
?>
starter和premium角色是我使用用户角色编辑器插件创建的自定义角色。
现在一切似乎都很好。
答案 2 :(得分:0)
我知道这有点晚了但这是我的解决方案,我相信这是最短和最有效的:
$current_user = new WP_User(wp_get_current_user()->id);
$user_roles = $current_user->roles;
foreach ($user_roles as $role) {
if ($role == 'subscriber' ){
//code here for subscribers
}
if ($role == 'editor' ){
//code here for editors
}
}