registration_errors хук-фільтрWP 2.1.0

Дозволяє додати свої перевірки реєстрації. Дозволяє змінити тексти помилок на сторінці реєстрації.

Фільтр отримує об’єкт 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 користувача.

Приклади

0

#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

Використання не знайдено.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *