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 | Введено. |