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

shake_error_codes хук-фильтр . WP 3.0.0

Позволяет изменить набор ошибок, при возникновении которых форму регистрации/авторизации нужно "встряхнуть".

Код ошибки указывается первым аргументом в методе WP_Error::add():

$error = new WP_Error;
$error->add( 'invalid_email', 'Некорректный email' );

Фильтр получает массив с кодами подобных ошибок. По умолчанию он содержит следующие коды ошибок:

Array (
	[0] => empty_password
	[1] => empty_email
	[2] => invalid_email
	[3] => invalidcombo
	[4] => empty_username
	[5] => invalid_username
	[6] => incorrect_password
)

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

add_filter( 'shake_error_codes', 'filter_function_name_7930' );
function filter_function_name_7930( $shake_error_codes ){
	// Изменяем...

	return $shake_error_codes;
}
$shake_error_codes(массив)
Набор ошибок.

Примеры

#1 Встряхнем форму, если произвольное поле не заполнено

Воспользуемся примером создания простого вариант защиты от спама при регистрации и добавим эффект встряхивания, если чекбокс "Я человек" не был нажат.

add_filter( 'registration_errors', 'add_registration_errors' );
add_action( 'register_form', 'register_form_add_field' );
add_filter( 'shake_error_codes', 'add_shake_error_code' );

/**
 * Добавляет ошибку, если чекбокс при регистрации не был нажат.
 *
 * @param WP_Error $errors
 *
 * @return mixed
 */
function add_registration_errors( $errors ) {
	if ( filter_input( INPUT_POST, 'i-not-robot' ) !== 'yes' ) {
		$errors->add( 'robot_detected', '<strong>ОШИБКА</strong>: Роботам здесь не место!' );
	}

	return $errors;
}

/**
 * Выводит чекбокс в дефолтной форме регистрации.
 *
 * @return void
 */
function register_form_add_field() {
	?>
	<p>
		<label>
			<input type="checkbox" name="i-not-robot" value="yes"> Я человек!
		</label>
	</p>
	<br>
	<?php
}

/**
 * Добавляет в набор код ошибки, при которой форму надо "встряхнуть".
 *
 * @param array $shake_error_codes
 *
 * @return array
 */
function add_shake_error_code( $shake_error_codes ) {
	return array_merge( $shake_error_codes, [ 'robot_detected' ] );
}

Список изменений

С версии 3.0.0 Введена.

Где вызывается хук

login_header()
shake_error_codes
wp-login.php 56
$shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes );

Где используется хук (в ядре WP)

Использование не найдено.
campusboy 3409youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 7533
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться