WP отправляет почтовое уведомление новому пользователю, созданному программно

У меня есть сценарий для создания нового пользователя WordPress, проверяя электронную почту и пароль во внешней базе данных. У меня есть сценарий, позволяющий войти в систему с адресом электронной почты.

Сценарий для добавления пользователей из внешней базы данных работает так, как предполагается, но в уведомлениях нет.

Я пробовал (пароль хранится в открытом тексте во внешнем db – я знаю, что он вообще не рекомендуется):

wp_new_user_notification($new_user_id, $result->det->USR_PASSWORD); wp_new_user_notification($user->ID, $result->det->USR_PASSWORD); wp_new_user_notification($user->data->ID, $result->det->USR_PASSWORD); 

Ничто не работает. Вот полный сценарий, который я использую:

 add_filter('authenticate', 'uj_auth', 20, 3); function uj_auth( $user, $username, $password ){ if ( is_a($user, 'WP_User') ) { return $user; } //check if existing user if ( empty($username) || empty($password) ) { $error = new WP_Error(); if ( empty($username) ) $error->add('empty_username', __('<strong>ERROR</strong>: The username field is empty.')); if ( empty($password) ) $error->add('empty_password', __('<strong>ERROR</strong>: The password field is empty.')); return $error; } $userdata = get_user_by('login', $username); if ( !$userdata ): //if not an existing user $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,"http://webstite.com"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_FORBID_REUSE, true); curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POSTFIELDS,"apikey=apikey&username=$username&password=$password"); $json = curl_exec ($ch); curl_close ($ch); $result = json_decode($json); //the result array from the external api if ($result->result == 'OK'): //if user and pass match those in database result is OK //Verify if the username is not NULL. User user-id instead if(is_null($result->det->USR_USERNAME)) $result->det->USR_USERNAME = $result->det->USR_ID; // Setup the required user information $userdata = array( 'user_email' => $result->det->USR_EMAIL, 'user_pass' => $result->det->USR_PASSWORD, 'user_login' => $result->det->USR_USERNAME, 'first_name' => $result->det->USR_PRENUME, 'last_name' => $result->det->USR_NUME ); // A new user has been created $new_user_id = wp_insert_user( $userdata ); // Load the new user info $user = new WP_User ($new_user_id); // Email the user wp_new_user_notification($new_user_id, $result->det->USR_PASSWORD); else: return new WP_Error('invalid_username', sprintf(__('<strong>ERROR</strong>: Utilizator și/sau parolă introduse greșit sau inexistente. <a href="'.site_url('inregistrare').'" title="Inregistreaza-te">Inregistrează-te!</a>'))); endif; else: $userdata = apply_filters('wp_authenticate_user', $userdata, $password); if ( is_wp_error($userdata) ) return $userdata; if ( !wp_check_password($password, $userdata->user_pass, $userdata->ID) ) return new WP_Error( 'incorrect_password', sprintf( __( '<strong>ERROR</strong>: The password you entered for the username <strong>%1$s</strong> is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?' ), $username, wp_lostpassword_url() ) ); $user = new WP_User($userdata->ID); endif; //remove_action('authenticate', 'wp_authenticate_username_password', 20); return $user; } 

Так что я делаю неправильно?

Хорошо, я выяснил, что случилось.

Использование переменной $ new_user_id или $ user не будет работать.

Но использование этой функции будет работать. У меня были проблемы с почтовыми рассылками, и поэтому он не работал в первый раз, когда я пробовал эти параметры:

 wp_new_user_notification($user->ID, $result->det->USR_PASSWORD); 

или

 wp_new_user_notification($user->data->ID, $result->det->USR_PASSWORD);