【问题标题】:Keep custom user role after order status is completed in Woocommerce在 Woocommerce 中完成订单状态后保留自定义用户角色
【发布时间】:2020-11-08 23:34:12
【问题描述】:

情况如下:我最初将用户设置为,一旦他们完成了表单,他们的用户角色就会设置为“已采访”。

当订阅付款被续订(用户角色回到“订阅者”)或出现一些临时付款续订问题(用户角色设置为“客户”)时,就会出现问题。

如果订单状态为已完成,我需要用户的角色保持“已采访”。

这就是我想出的:

add_action( 'woocommerce_order_status_completed', 'keep_role_interviewed' );
function keep_role_interviewed( $order_id ) {
    $order = wc_get_order( $order_id );

    if ( $order->user_id > 0 ) {
         $user = new WP_User( $order->user_id );
         $user_data = array( 'ID' => $user->ID,'role' => 'Interviewed' );

         wp_update_user( $user_data );  
    }
}

但它不起作用。

【问题讨论】:

    标签: php wordpress woocommerce user-roles woocommerce-subscriptions


    【解决方案1】:

    我终于成功了。

    add_action( 'woocommerce_subscription_status_updated', 'keep_interviewed_role' );
    function keep_interviewed_role( $subscription) {
        
        
        // Get the WC_Order Object from subscription
        $order = wc_get_order( $subscription->get_parent_id() );
        $order_status = $order->get_status();
        
        // Get an instance of the customer WP_User Object
        $user = $order->get_user();
    
    
            if( is_a( $user, 'WP_User' ) && !in_array('interviewed', $user->roles)
                 && $order_status == ('completed')); {
    
                 $user->set_role( 'interviewed' );
            }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-01
      • 2016-04-17
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 2021-01-30
      • 2019-08-27
      • 2018-12-30
      相关资源
      最近更新 更多