我正在使用wordpress与woocommerce,我想自动执行以下步骤。订单完成后,我想将与该订单ID关联的用户角色从“客户”更改为“订户”。
通过搜索,我认为我应该能够通过在functions.php中使用钩子来实现这一点:
add_action( 'woocommerce_order_status_completed', 'change_role_from_customer_to_subscriber' );
然后添加功能:
function change_role_from_customer_to_subscriber($order_id){
// code to change role to subscriber
}
在代码中,我认为我需要做两件事:
1)获取与该订单ID相关联的用户ID
2)将该用户ID的角色更改为订阅者
我已经尝试了很多,但我无法让它工作(既没有获得正确的用户ID,也没有改变用户ID的角色)。所以任何帮助将不胜感激!在堆栈溢出之前,我已经看过2个相关问题,但不幸的是那里的答案对我来说不起作用。我希望有人可以帮助我!
非常感谢! :)
答案 0 :(得分:2)
来自wordpress答案的Helgatheviking提出了这段代码:
function wpa_120656_convert_paying_customer( $order_id ) {
$order = new WC_Order( $order_id );
if ( $order->user_id > 0 ) {
update_user_meta( $order->user_id, 'paying_customer', 1 );
$user = new WP_User( $order->user_id );
// Remove role
$user->remove_role( 'customer' );
// Add role
$user->add_role( 'subscriber' );
}
}
add_action( 'woocommerce_order_status_completed', 'wpa_120656_convert_paying_customer' );
由于某种未知的原因,它需要多次尝试,但它有效!谢谢大家的帮助! :)
答案 1 :(得分:0)
您可以执行以下操作:
$current_user = wp_get_current_user();
$user_data = array(
'ID' => $current_user->ID,
'role' => 'New Role Here'
);
wp_update_user( $user_data );
将此添加到您的上述功能,它将完成这一操作。