我找到了this thread,但它并没有完全符合我的要求。
我的问题是,如何更改默认的Woocommerce角色" customer"例如, "订户"对于新注册用户。 然后,如果用户签出(购买产品),请更改" Subscriber"到"客户"。
我问这个因为我想为每个用户角色展示不同的内容:"注册客户"和"订阅(付费)客户"。
答案 0 :(得分:0)
问题的第一部分是更改由WooCommerce创建的用户的默认角色。老实说,我可能会将默认角色留作客户。然后为购买特定产品的人员创建新的角色/功能。
add_filter( 'woocommerce_new_customer_data', 'so_29647785_default_role' );
function so_29647785_default_role( $data ){
$data['role'] = 'subscriber'; // the new default role
return $data;
}
正如您在我的其他答案中所看到的(我的重新发布的答案),您可以在用户完成付款后执行操作,但可以挂钩woocommerce_order_status_completed
挂钩。
要使该代码适应特定产品的特定内容,您需要遍历订单商品并根据产品ID进行检查。将999替换为相关产品的ID。
add_action( 'woocommerce_order_status_completed', 'so_29647785_convert_customer_role' );
function so_29647785_convert_customer_role( $order_id ) {
$order = new WC_Order( $order_id );
if ( $order->user_id > 0 ) {
foreach ( $order->get_items() as $order_item ) {
if( 999 == $order_item[ 'product_id' ] ) {
$user = new WP_User( $order->user_id );
// Remove existing role
$user->remove_role( 'customer' );
// Add new role
$user->add_role( 'subscriber' );
}
}
}
}
注意:完全未经测试,但在理论上似乎是正确的。