wp_authenticate()
Аутентифікує користувача (перевіряє дані авторизації: логін/email та пароль) та повертає об’єкт користувача, якщо перевірка пройшла успішно.
Функція не авторизує користувача, лише перевіряє дані. Для фактичної авторизації отримані дані потрібно використовувати wp_set_auth_cookie() .
Використовуйте wp_signon() , коли необхідно перевірити логін, пароль і водночас авторизувати користувача.
Це init .
Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.
Хуки з функції
Повертає
WP_User|WP_Error
. Об’єкт даних користувача (WP_User), якщо передані дані пройшли перевірку. Об’єкт WP_Error інакше.
Використання
wp_authenticate($username, $password);
-
$username
(рядок) (обов’язковий) - Логін користувача. З версії 4.5. можна вказувати email.
-
$password
(рядок) (обов’язковий) - Пароль користувача.
Приклади
#1 Перевіримо дані авторизації користувача
Припустимо у нас є логін і пароль користувача і нам потрібно перевірити чи є користувач з таким логіном та паролем.
$username = 'truegamer'; $password = 'live123'; // Пробуємо отримати користувача $ auth = wp_authenticate ($ username, $ password); // Перевірка помилок if ( is_wp_error ( $ auth ) ) { $error_string = $auth->get_error_message(); echo '<div id="message" class="error"><p>' . $error_string . '</p></div>'; } else { // Користувач із зазначеним логіном і паролем існує! // авторизуємо його wp_set_auth_cookie( $auth->ID ); }
#2 Відключення авторизації користувача по логіну
З версії WP 4.5 WordPress поле логін можна також ввести і email. За таку перевірку логіну відповідають дві функції, які вішаються на хук authenticate
у файлі /wp-includes/default-filters.php .
add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3); // Звичайний логін add_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3); // email як логін
Таким чином, щоб відключити авторизацію по логіну, але залишити авторизацію поштою, потрібно просто відключити фільтр пов’язаний з логіном:
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3);
#3 Відключення авторизації користувача по email
І так само, щоб залишити як і було до версії 4.5. авторизацію тільки за логіном ігноруючи email, потрібно видалити фільтр, пов’язаний з email:
remove_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3);
список змін
З версії 2.5.0 | Введено. |
З версії 4.5.0 | $username now accepts an email address. |