registration_errors
Дозволяє додати свої перевірки реєстрації. Дозволяє змінити тексти помилок на сторінці реєстрації.
Фільтр отримує об’єкт WP_Error , який може містити помилки (користувач вже існує, пошта невалідна і т.д.) або може бути порожнім (не мати помилок). В обох випадках об’єкт WP_Error слід повернути, інакше виникне 500 помилка.
Якщо WP_Error містить дані, реєстрація користувача буде перервана. Це дозволяє додати свої перевірки реєстрації та якщо потрібно перервати реєстрацію з помилкою.
При успішній реєстрації об’єкт WP_Error порожній – має вигляд:
WP_Error Object ( [errors] => Array() [error_data] => Array() )
А так виглядає WP_Error при помилках реєстрації (наприклад, не введено ім’я та пошта):
WP_Error Object ( [errors] => Array ( [empty_username] => Array ( [0] => <strong>ПОМИЛКА</strong>: Будь ласка, введіть ім'я користувача. ) [empty_email] => Array ( [0] => <strong>ПОМИЛКА</strong>: Будь ласка, введіть вашу електронну адресу. ) ) [error_data] => Array() )
Використання
add_filter( 'registration_errors', 'wp_kama_registration_errors_filter', 10, 3); /** * Function for `registration_errors` filter-hook. * * @param . * @param string $sanitized_user_login User's username after it has been sanitized. * @param string $user_email User's email. * * @return WP_Error */ function wp_kama_registration_errors_filter( $errors, $sanitized_user_login, $user_email ){ // Filter... return $errors; }
-
$errors
(WP_Error) - Об’єкт WP_Error, помилки реєстрації або порожній.
-
$sanitized_user_login
(рядок) - Очищене ім’я користувача (username).
-
$user_email
(рядок) - Email користувача.
Приклади
#1 Простий варіант захисту від спаму під час реєстрації
Додамо чекбокс і перевіримо, чи він був помічений. Якщо ні – виведемо помилку:
<?php add_filter( 'registration_errors', 'add_registration_errors'); add_action( 'register_form', 'register_form_add_field'); /** * Додає помилку, якщо чекбокс під час реєстрації не був натиснутий. * * @param WP_Error $errors * * @return WP_Error */ 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 }
Використовуйте фільтр shake_error_codes , щоб струснути форму при появі цієї помилки.
список змін
З версії 2.1.0 | Введено. |
Де викликається хук
Де використовується хук у WordPress
Використання не знайдено.