Я настроил Woocommerce для автоматической регистрации нового клиента при завершении заказа.
Теперь я хочу отправить пароль и другие вещи, которые были сгенерированы третьей стороне, с помощью запроса API POST для созданияодна и та же учетная запись пользователя.
Вещи, которые мне нужно отправить из сгенерированной учетной записи Woocommerce:
- Адрес электронной почты (используется для электронной почты и входа на сторонний веб-сайт)
- Имя
- Фамилия
- Пароль (необходимо хешировать, так же, как используется в электронной почте новой учетной записи)
Может кто-нибудь показать мне пример, как получить этосделанный?Или указать мне правильное направление?Я просто не могу найти ничего, с чего начать.
Я подумал, добавив Curl на веб-крючок на странице Woocommerce.Но это не отправит пароль без изменений, он просто останется пустым.
Надеюсь, кто-нибудь знает простой способ сделать это.
Спасибо!
Последнее обновление: код, используемый в моих функциях.PHP
class NewCustomerRegistration
{
private $credentials;
public function __construct()
{
// Use PHP_INT_MAX so that it is the last filter run on this data
// in case there are other filter changing the password, for example
add_filter(
'woocommerce_new_customer_data',
[$this, 'when_user_is_created'],
1,
PHP_INT_MAX
);
add_action('woocommerce_new_customer', [$this, 'when_customer_is_created']);
}
public function when_user_is_created($customerData)
{
$this->credentials = [
'email' => $customerData['user_email'],
'password' => $customerData['user_pass'],
];
return $customerData;
}
public function when_customer_is_created($customerId)
{
$customer = get_userdata($customerId);
/**
* Perform the required actions with collected data
*
* Email: $this->credentials['email']
* Password: $this->credentials['password']
* First Name: $customer->first_name
* Last Name: $customer->last_name
*/
// Testing sending email function
$subject = "Test Email with data";
$email = "info@mydomain.com";
$message = "Hello, {$customer->first_name}\n\n";
$message .= "Here are your login details for {$customer->first_name} {$customer->last_name}\n\n";
$message .= "Your company is: {$customer->company}\n\n";
$message .= "Your username is: {$this->credentials['email']}\n\n";
$message .= "Your password is: {$this->credentials['password']}\n\n";
$message .= "Your email is: {$this->credentials['email']}\n\n";
$message .= "Your role is: {$customer->role}\n\n";
$headers = array();
add_filter( 'wp_mail_content_type', function( $content_type ) {return 'text/html';});
$headers[] = 'From: My Wordpress Website <info@mydomain.com>'."\r\n";
wp_mail( $email, $subject, $message, $headers);
// Reset content-type to avoid conflicts
remove_filter( 'wp_mail_content_type', 'set_html_content_type' );
}
}