【问题标题】:Switch user role on subscription expiration in Woocommerce在 Woocommerce 中的订阅到期时切换用户角色
【发布时间】:2019-08-09 08:58:46
【问题描述】:

在 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 更改回 agencia 和 @987654329 @ 或 talento_pro_plustalento?

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

谢谢。

【问题讨论】:

标签: php wordpress woocommerce subscription user-roles


【解决方案1】:

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 文件中。经过测试,它应该可以工作。

【讨论】:

  • 谢谢,是的,我正在使用这个插件pt.wordpress.org/plugins/yith-woocommerce-subscription我会试试看
  • add_action( 'subscription_expired'代替add_action( 'woocommerce_subscription_status_expired'有什么问题吗?
  • 您知道任何可以让您了解网站上所有可用钩子的 wordpress 插件吗?或者这样我可以看到任何插件的可用钩子?
  • @SteveKess 我已经访问了免费插件的源代码,但没有可用的动作挂钩......所以 YITH Woocommerce 免费订阅插件似乎不可能使用挂钩来改变用户角色......现在官方商业 Woocommerce 订阅插件允许这样做。
  • 你知道Woocommerce官方订阅插件是否免费吗?
猜你喜欢
  • 2019-01-03
  • 2019-07-19
  • 2020-11-14
  • 2016-06-07
  • 2012-09-18
  • 2017-08-28
  • 2016-08-21
  • 2017-11-30
  • 1970-01-01
相关资源
最近更新 更多