shake_error_codes
Позволяет изменить набор ошибок, при возникновении которых форму регистрации/авторизации нужно "встряхнуть".
Код ошибки указывается первым аргументом в методе 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', 'wp_kama_shake_error_codes_filter' ); /** * Function for `shake_error_codes` filter-hook. * * @param string[] $shake_error_codes Error codes that shake the login form. * * @return string[] */ function wp_kama_shake_error_codes_filter( $shake_error_codes ){ // filter... 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 | Введена. |
Где вызывается хук
shake_error_codes
wp-login.php 67
$shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes );