php - 根据 WooCommerce 中的自定义用户元数据值更改用户角色

标签 php wordpress woocommerce user-roles usermetadata

我在网站上使用钱包系统,如果用户的余额低于0,我该如何更改用户的角色? meta_value 可以采用 -5000 之间的值。

add_action('init', 'changerole');
function changerole() {
    if(!current_user_can('administrator')) {
        $user_id = get_current_user_id();
        $user_meta = get_user_meta($user_id, 'current_my_wallet_balance', true);
        if ( $user_meta == 0) { //Which operator can I use?
            $user = new WP_User( $user_id );
            $user->set_role( 'subscriber' );
        }
    }
}

这也不起作用:

$user_meta  = min(max($user_meta , -500), 0);

最佳答案

尝试以下修改后的代码,如果其钱包余额低于0,则将“客户”用户角色更改为“订阅者”:

add_action('init', 'change_user_role_based_on_wallet_balance');
function change_user_role_based_on_wallet_balance() {
    global $current_user;

    if( $current_user && count(array_intersect(['adminisfqtrator','subscriber'], $current_user->roles)) === 0
    && floatval($current_user->current_my_wallet_balance) < 0 ) {
        $current_user->set_role( 'subscriber' );
    }
}

经过测试并有效。

关于php - 根据 WooCommerce 中的自定义用户元数据值更改用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77360637/

相关文章:

javascript - 如何使用ajax仅加载wordpress帖子的内容

php - Woocommerce:在购物车页面上显示产品重量

php - 使用 cURL PHP 发布到 Facebook 用户的墙上

php - 在 PHP 中加密部分 HTML 并在 JavaScript 中解密

php - 无法使用 window.print() 函数打印表格边框

php - 从数组中删除元素并从 0 重新索引

php - 如何在外部/独立的PHP文件(Wordpress外部)中调用Wordpress代码段

php - wordpress 网站上的 Firebase 身份验证

css - 元素的颜色变化在移动浏览器 (iPad) 上无法正常工作

wordpress - WooCommerce:如何显示属性变体描述