在 WooCommerce 3+ 中根据订单状态创建用户完成操作挂钩
Create user on order status completed action hook in WooCommerce 3+
我正在尝试在 woocommerce_order_status_completed
挂钩中创建一个新用户。
add_action( 'woocommerce_order_status_completed', 'custom_woocommerce_order_status_completed', 10, 1 );
function custom_woocommerce_order_status_completed( $order_id )
{
$password = wp_generate_password( 16, true );
$user_id = wp_create_user( 'usertest@gmail.com', $password, 'usertest@gmail.com' );
}
$user_id
returns 一个真实的 ID。它似乎创建了用户,但是当我查看后端时,用户不在那里。我什至检查了数据库中的用户 ID,但它不存在。
如果我在操作 woocommerce_after_register_post_type
上调用相同的函数,它会创建用户。
知道是什么导致了这个问题吗?
您的函数名称似乎与您的挂钩中的调用不匹配:
custom_woocommerce_order_status_completed
以下代码改为使用 Woocommerce wc_create_new_customer()
专用函数:
add_action( 'woocommerce_order_status_completed', 'action_on_order_status_completed', 20, 2 );
function action_on_order_status_completed( $order_id, $order ){
$password = wp_generate_password( 16, true );
$user_name = $user_email = 'usertest@gmail.com';
// $user_name = $user_email = $order->get_billing_email();
$customer_id = wc_create_new_customer( $user_email, $user_name, $password );
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
我正在尝试在 woocommerce_order_status_completed
挂钩中创建一个新用户。
add_action( 'woocommerce_order_status_completed', 'custom_woocommerce_order_status_completed', 10, 1 );
function custom_woocommerce_order_status_completed( $order_id )
{
$password = wp_generate_password( 16, true );
$user_id = wp_create_user( 'usertest@gmail.com', $password, 'usertest@gmail.com' );
}
$user_id
returns 一个真实的 ID。它似乎创建了用户,但是当我查看后端时,用户不在那里。我什至检查了数据库中的用户 ID,但它不存在。
如果我在操作 woocommerce_after_register_post_type
上调用相同的函数,它会创建用户。
知道是什么导致了这个问题吗?
您的函数名称似乎与您的挂钩中的调用不匹配:
custom_woocommerce_order_status_completed
以下代码改为使用 Woocommerce wc_create_new_customer()
专用函数:
add_action( 'woocommerce_order_status_completed', 'action_on_order_status_completed', 20, 2 );
function action_on_order_status_completed( $order_id, $order ){
$password = wp_generate_password( 16, true );
$user_name = $user_email = 'usertest@gmail.com';
// $user_name = $user_email = $order->get_billing_email();
$customer_id = wc_create_new_customer( $user_email, $user_name, $password );
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。