如何从WordPress数据库中获取会员级别?

时间:2016-11-17 作者:Bexx

我有一个简短的问题,我希望你们中的一些人能帮助我。

问题是我有一个插件,可以手动将徽章添加到个人资料图片中。但由于我的网站是一个社区,如果我必须为每个具有特定角色的用户手动放置徽章,那将是一种痛苦。

我尝试自动完成这项工作,但在需要从所有高级用户(s2member\\u level1)获取用户ID的部分,我被卡住了,这样我就可以自动选中后端的一个框。

我在这里搜索执行此逻辑的正确代码:

<input type="checkbox" name="verified" value="1" 
  <?php  
    if (get all users with membership level "s2member_level1") {echo \'checked\'; }
    else {echo\'\';} 
   ?> 
/>
目前我所拥有的是:

<td><input type="checkbox" name="verified" value="1" <?php    echo \'checked="checked"\'; ?> />
下面是一个屏幕截图,显示了如果用户具有s2member\\u level1,它应该是什么样子:

screenshot

我在管理员处查过了。插件BuddyVerified版本2.2的php。这是管理员提供的相关代码。生成屏幕截图中所示表单的php:

function buddyverified_inner_meta_box() {

$user_id = isset($_GET[\'user_id\']) ? $_GET[\'user_id\'] : 0;
$meta = get_user_meta( $user_id, \'bp-verified\', true) ? get_user_meta( $user_id, \'bp-verified\', true) : null ;
$verified = get_user_meta( $user_id, \'bp-profile-verified\', true) ? get_user_meta( $user_id, \'bp-profile-verified\', true) : null ;

?>


<table cellspacing="3px" style="border-collapse: collapse;">
    <thead>
        <tr>
            <th></th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <td style="vertical-align:middle">Verify User:</td>
            <td><input type="checkbox" name="verified" value="1" <?php  echo \'checked="checked"\'; ?> />
            </td>
        </tr>
        <tr class="alt">
            <td style="vertical-align:middle">Badge:</td>
            <td><img src="<?php echo VERIFIED_URL; ?>/images/5.png"></td>
        </tr>
        <tr class="alt">
            <td></td>

            <td><input type="radio" name="verified_image" value="5" <?php if ($meta[\'image\'] == \'5\') echo \'checked="checked"\' ?> /></td>
        </tr>
        <tr>
            <td style="vertical-align:middle">Badge Text:</td>
            <td><input type="text" id="verified_text" name="verified_text" placeholder="Verified User" value="<?php echo $meta[\'text\'] ?>" size="25" /></td>
        </tr>
        <tr class="alt">
            <td >Activity Badge:</td>
            <td><input type="radio" name="verified_activity" value="yes" <?php echo \'checked="checked"\' ?> />Yes </td>
            <td><p>Adds badge to activity stream avatar</p></td>
        </tr>
        <tr>
            <td >Profile Badge:</td>
            <td><input type="radio" name="verified_profile" value="yes" <?php if ( $meta[\'profile\'] == \'yes\') echo \'checked="checked"\' ?> />Yes </td>
            <td><p>Adds badge to profile avatar</p></td>
        </tr>
    </tbody>
</table>    

<?php

}
我目前正在使用Wordpress版本4.6.1、Buddypress 2.7.2和s2Member Framework版本2.7.3

谢谢你的帮助。

1 个回复
SO网友:tillinberlin

似乎s2Member并没有将功能带出包装箱。因此,我可能无法直接回答您的问题,但有几点建议:

在你的情况下,我可能会尝试将s2Member与myCred结合起来(https://mycred.me/add-ons/badges/) 例如:获得“积分”的唯一方法是升级到pro帐户/角色。然后分别应用和显示徽章。

另一种选择是get_queried_object 要获取用户角色,请相应地调整输出:“Show different badge based upon the user role“”

第三个可能更复杂的选择是使用插件BadgeOS:“…一个强大的免费WordPress插件,可以让您轻松创建成就,并在用户成功时发布可共享的徽章。”(http://badgeos.org/)

最后但并非最不重要的一点:我个人实际上使用的是PMPro而不是s2members,他们提供了一个插件,可以做到这一点:“为每个成员级别分配唯一的成员徽章(图像),并通过快捷码或模板PHP函数显示”(https://www.paidmembershipspro.com/add-ons/plus-add-ons/member-badges/)