Создать пользователя на статус заказа выполнено действие ловушка в WooCommerce 3+ - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь создать нового пользователя в хуке 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 возвращает действительный идентификатор.Создается впечатление, что он создает пользователя, но когда я смотрю на сервер, пользователя там нет.Я даже проверяю базу данных на наличие идентификатора пользователя, и ее там нет.

Если я вызываю ту же функцию в действии woocommerce_after_register_post_type, это создает пользователя.

ЛюбойИдея, что может быть причиной этой проблемы?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

В следующем коде вместо этого используется выделенная функция 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 вашей активной дочерней темы (или активной темы).Проверено и работает.

0 голосов
/ 20 сентября 2018

Похоже, что имя вашей функции не соответствует одному вызову в вашем хуке:

custom_woocommerce_order_status_completed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...