在Woocommerce中在订阅到期时切换用户角色

时间:2019-03-18 22:05:18

标签: php wordpress woocommerce subscription user-roles

在Woocommerce中,我正在使用YITH WooCommerce Subscription插件,并且想要在订阅到期时更改用户角色。

为此,我知道我必须使用此钩子:

add_action( 'subscription_expired', 'my_function', 10, 2 );

function my_function( $user_id, $subscription_key ) {
    $sub= wcs_get_subscription_from_key( $subscription_key );
    // do something
}

现在我有两个基本角色,agenciatalento,如何使它成为订阅者到期时的角色,它将用户角色从agencia_proagencia_pro_plus更改返回agenciatalento_pro还是talento_pro_plustalento

如何创建一个功能来检查用户角色,并根据其当前用户角色将其更改为talentoagencia

谢谢。

1 个答案:

答案 0 :(得分:0)

YITH Woocommerce免费订阅插件似乎已关闭,并且不允许自定义 ...

对于官方Woocommerce Subscriptions plugin,请使用以下命令:

add_action( 'woocommerce_subscription_status_expired', 'change_user_role_on_subscription_expired', 10, 1 );
function change_user_role_on_subscription_expired( $subscription ) {
    // Get WP_User Object from subscription
    $user = new WP_User($subscription->get_user_id());

    if ( in_array('agencia_pro', $user->roles) ) {
        $user->remove_role( 'agencia_pro' );
        $user->add_role( 'agencia' );
    }
    elseif ( in_array('agencia_pro_plus', $user->roles) ) {
        $user->remove_role( 'agencia_pro_plus' );
        $user->add_role( 'agencia' );
    }
    elseif ( in_array('talento_pro', $user->roles) ) {
        $user->remove_role( 'talento_pro' );
        $user->add_role( 'talento' );
    }
    elseif ( in_array('talento_pro_plus', $user->roles) ) {
        $user->remove_role( 'talento_pro_plus' );
        $user->add_role( 'talento' );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,应该可以。