要发送客户重置密码电子邮件通知,请使用用户ID:
$user = new WP_User( intval($user_id) );
$reset_key = get_password_reset_key( $user );
$wc_emails = WC()->mailer()->get_emails();
$wc_emails['WC_Email_Customer_Reset_Password']->trigger( $user->user_login, $reset_key );
看见
this related source code function
.
现在,自从Woocommerce 3+以来,您再也无法获得
WC_Order
属性,而应使用
WC_Order
available methods
â¦
您还应该设置“customer”用户角色
因此,我重新访问了您的代码:
add_action('woocommerce_thankyou', 'wc_register_new_customers', 10, 1);
function wc_register_new_customers( $order_id ) {
if(is_user_logged_in()) return; // Only for unlogged users
// Get an instance of the WC_Order object
$order = wc_get_order($order_id);
// Get the customer billing email from the order
$billing_email = $order->get_billing_email();
// check if there are any users with the billing email as user or email
$email = email_exists( $billing_email );
$user = username_exists( $billing_email );
// if the UID is null, then it's a guest checkout
if ( $user == false && $email == false ) {
$random_password = wp_generate_password();
// Create new user with email as username & newly created pw
$user_id = wp_create_user( $billing_email, $random_password, $billing_email );
// WC guest customer identification
update_user_meta( $user_id, 'guest', 'yes' );
//user's billing data
update_user_meta( $user_id, 'billing_address_1', $order->get_billing_address_1() );
update_user_meta( $user_id, 'billing_address_2', $order->get_billing_address_2() );
update_user_meta( $user_id, 'billing_city', $order->get_billing_city() );
update_user_meta( $user_id, 'billing_company', $order->get_billing_company() );
update_user_meta( $user_id, 'billing_country', $order->get_billing_country() );
update_user_meta( $user_id, 'billing_email', $order->get_billing_email() );
update_user_meta( $user_id, 'billing_first_name', $order->get_billing_first_name() );
update_user_meta( $user_id, 'billing_last_name', $order->get_billing_last_name() );
update_user_meta( $user_id, 'billing_phone', $order->get_billing_phone() );
update_user_meta( $user_id, 'billing_postcode', $order->get_billing_postcode() );
update_user_meta( $user_id, 'billing_state', $order->get_billing_state() );
// user's shipping data
update_user_meta( $user_id, 'shipping_address_1', $order->get_shipping_address_1() );
update_user_meta( $user_id, 'shipping_address_2', $order->get_shipping_address_2() );
update_user_meta( $user_id, 'shipping_city', $order->get_shipping_city() );
update_user_meta( $user_id, 'shipping_company', $order->get_shipping_company() );
update_user_meta( $user_id, 'shipping_country', $order->get_shipping_country() );
update_user_meta( $user_id, 'shipping_first_name', $order->get_shipping_first_name() );
update_user_meta( $user_id, 'shipping_last_name', $order->get_shipping_last_name() );
update_user_meta( $user_id, 'shipping_method', $order->get_shipping_method() );
update_user_meta( $user_id, 'shipping_postcode', $order->get_shipping_postcode() );
update_user_meta( $user_id, 'shipping_state', $order->get_shipping_state() );
// Update to "customer" user role
update_user_meta( $user_id, 'wp_capabilities', array('customer' => true) );
wc_update_new_customer_past_orders( $user_id );
// Get WP_User
$user = new WP_User( intval( $user_id ) );
// Creates, stores, then returns a password reset key for user.
$reset_key = get_password_reset_key( $user );
// Send the WC_email Customer Reset Password
$wc_emails = WC()->mailer()->get_emails();
$wc_emails['WC_Email_Customer_Reset_Password']->trigger( $user->user_login, $reset_key );
}
}
代码进入功能。活动子主题(或活动主题)的php文件。
已测试并正常工作。