Функция, которая проверяет имя пользователя / адрес электронной почты, подключается к фильтру autenticate
с приоритетом 20
. И хуки добавляются через wp-includes/default-filters.php
, как вы можете видеть ниже:
// Default authentication filters
add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
add_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3 );
Таким образом, если вы хотите, чтобы ваши пользовательские функции проверки запускались после этих проверок по умолчанию, вам следует вместо этого подключиться к фильтру authenticate
и использовать 20
(или более высокое значение - 21
, 30
и т. Д.) В качестве приоритета:
add_filter( 'authenticate', 'verify_login_captcha', 21, 3 );
add_filter( 'authenticate', 'custom_authenticate_user', 21 );
И измените объявление функции таким образом, чтобы первый параметр был NULL
или WP_User
экземпляр в случае успеха:
function verify_login_captcha( $user, $username, $password ) {
...your validation...
return $user; // You should return the WP_User instance or a WP_Error instance on error.
}
function custom_authenticate_user( $user ) {
...your validation...
return $user; // You should return the WP_User instance or a WP_Error instance on error.
}
PS: Обязательно проверьте, является ли $user
допустимым пользовательским объектом, прежде чем обращаться к его свойствам и методам. См. здесь для получения более подробной информации. Например ::1030*
function custom_authenticate_user( $user ) {
if ( ! $user ) {
return $user;
}
...
}