WordPress как на ладони
Новые WordPress шаблоны Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

authenticate хук-фильтр . WP 2.8.0

Позволяет дополнительно проверить данные авторизации (логин/пароль) пользователя, до того как он будет авторизован.

Фильтр срабатывает всякий раз, когда юзер входит на сайт (авторизируется на сайте).

Функция обработчик должна вернуть объект WP_User, если проверка логина/пароля пройдена. В противном случае должны возвращаться объект WP_Error или null.

Этот фильтр является базовой проверкой логина/пароля в WordPress.

Если нужно сделать дополнительные проверки авторизации после базовой проверки WordPress, но до того, как пользователь будет авторизован, используйте хук wp_authenticate_user.

Использование

add_filter( 'authenticate', 'filter_function_name_4601', 10, 3 );
function filter_function_name_4601( $user, $username, $password ){
	// filter...

	return $user;
}
$user(null/WP_User/WP_Error)

Объект WP_User, если пользователь прошел проверку.

Объект WP_Error или null.

  • null - означает что проверки аутентификации еще не было.
  • WP_Error - означает, что проверка была, но данные не прошил эту проверку.
  • WP_User - означает что проверка пройдена и можно перейти к следующим проверкам.
$username(cтрока)
Логин или email. Email работает с версии WP 4.5.0 до этого можно было указать только логин.
$password(cтрока)
Пароль в НЕ зашифрованном виде.

Примеры

#1 Базовая проверка авторизации в WordPress

Для базовой проверки на хук authenticate прицеплены 3 функции:

Из файла: /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 );
add_filter( 'authenticate', 'wp_authenticate_spam_check',         99    );

Где используется хук

wp_authenticate() остальные хуки:

Код хука-фильтра authenticate

Фрагмент из: wp-includes/pluggable.php VER 4.9.8
...

	/**
	 * Filters whether a set of user login credentials are valid.
	 *
	 * A WP_User object is returned if the credentials authenticate a user.
	 * WP_Error or null otherwise.
	 *
	 * @since 2.8.0
	 * @since 4.5.0 `$username` now accepts an email address.
	 *
	 * @param null|WP_User|WP_Error $user     WP_User if the user is authenticated.
	 *                                        WP_Error or null otherwise.
	 * @param string                $username Username or email address.
	 * @param string                $password User password
	 */
	$user = apply_filters( 'authenticate', null, $username, $password );

	if ( $user == null ) {
		// TODO what should the error message be? (Or would these even happen?)
		// Only needed if all authentication handlers fail to return anything.
		$user = new WP_Error( 'authentication_failed', __( '<strong>ERROR</strong>: Invalid username, email address or incorrect password.' ) );
	}

	$ignore_codes = array('empty_username', 'empty_password');

	if (is_wp_error($user) && !in_array($user->get_error_code(), $ignore_codes) ) {
		/**
		 * Fires after a user login has failed.
		 *
		 * @since 2.5.0
		 * @since 4.5.0 The value of `$username` can now be an email address.
...
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться