get_settings_errors() WP 3.0.0

Отримує повідомлення, зареєстровані функцією add_settings_error() .

Ця функція є однією з групи функцій settings_errors() .

Перевіряє масив $wp_settings_errors на наявність доданих при завантаженні сторінки повідомлень (помилок) і повертає їх.

Ми можемо зберігати повідомлення в тимчасову опцію: set_transient( 'settings_errors' ), щоб, використовуючи get_transient(), під час перезавантаження сторінки або нового заходу на сторінку налаштувань, ми могли отримати помилки попередніх перевірок даних. WordPress розуміє цю тимчасову опцію і якщо в параметрі GET запиту буде встановлений параметр ?settings-updated=true(він встановлюється автоматично при вдалому збереженні опцій, то наша тимчасова опція зі збереженими в ній повідомленнями буде злита з поточним масивом повідомлень і тимчасова опція settings_errors буде видалена. Ось частина коду функції get_settings_errors () відповідальна за ці дії:

// If settings були passed back from options.php then use them
if (
	isset( $_GET['settings-updated'] ) &&
	$_GET['settings-updated'] &&
	get_transient( 'settings_errors' )
)
{
	$wp_settings_errors = array_merge(
		(array) $wp_settings_errors,
		get_transient( 'settings_errors' )
	);

	delete_transient( 'settings_errors');
}
Основа для:
settings_errors()

Хуків немає.

Повертає

Массив. Масив, що містить дані про повідомлення:

array(
	'setting' => $setting,
	'code' => $code,
	'message' => $message,
	'type' => $type
);

Використання

get_settings_errors($ setting, $sanitize);
$setting
(рядок)
Ідентифікатор, який повинен збігатися з $setting з
add_settings_error() . Буде отримано зазначену групу помилок. Якщо не вказати жодного ідентифікатора, то функція отримає всі зареєстровані помилки.


За замовчуванням: ”
$ Sanitize
(логічний)
Чи потрібно очистити значення опції вказаної опції: true (так, очистити ще раз) або false (ні, очищати не треба). невідомі функції опцій потрібно реєструвати окремо, див. опис sanitize_option()). Якщо опція не проходить перевірку, автоматично реєструється повідомлення про помилку. Це може стати в нагоді, коли потрібно перевірити дані форми до того, як вони зберігатимуться, наприклад, при простому заході на сторінку налаштувань. Повідомлення виводяться щоразу, коли в масиві помилок є зареєстровані повідомлення.


Типово: false

Приклади

0

#1 Приклад роботи функції

Виведемо повідомлення для поля опції “my_option_name”, які були зареєстровані при спробі зберегти опцію. Якщо значення полів опції не пройшли перевірку, повідомлення про помилку були зареєстровані функцією add_settings_error() під час перевірки даних форми, збереження опцій. Після того, як дані форми були надіслані, ми можемо отримати ці повідомлення функцією get_settings_errors() і вивести їх через хук admin_notices. Для цього напишемо свою функцію, що обробляє результат get_settings_errors() і виводить всі повідомлення на екран:

function your_admin_notices_action() {

	$settings_errors = get_settings_errors( 'my_option_name' );

	if ( empty( $settings_errors ) )
		return;

	$output = '';
	foreach ( $settings_errors as $key => $details ) {
		$css_id = 'setting-error-' . $details['code'];
		$css_class = $details['type'] . 'settings-error';
		$output .= "<div id='$css_id' class='$css_class'> n";
		$output .= "<p><strong>{$details['message']}</strong></p>";
		$output .= "</div> n";
	}
	echo $output;
}

add_action( 'admin_notices', 'your_admin_notices_action' );

Це просто демонстрація роботи функції. Зареєстровані повідомлення автоматично виводяться WordPress при збереженні даних, для цього потрібно просто перевірити дані перед збереженням та зареєструвати повідомлення функцією add_settings_error(), якщо потрібно. Окремо виводити повідомлення, як у цьому прикладі, зазвичай, немає необхідності.

нотатки

  • Global. Масив. $wp_settings_errors Storage array of errors затриманий протягом цієї pageload

список змін

З версії 3.0.0Введено.

Код get_settings_errors() WP 6.0.2

function get_settings_errors( $setting = '', $sanitize = false ) {
	global $wp_settings_errors;

	/*
	 * Якщо $sanitize is true, manually re-run the sanitization for this option
	 * Це дозволить $sanitize_callback from register_setting() to run, adding
	 * any settings errors you want to show by default.
	 */
	if ($ sanitize) {
		sanitize_option ($ setting, get_option ($ setting));
	}

	// If settings були passed back from options.php then use them.
	if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] && get_transient( 'settings_errors' ) ) {
		$wp_settings_errors = array_merge((array) $wp_settings_errors, get_transient( 'settings_errors' ) );
		delete_transient( 'settings_errors');
	}

	// Check global in case errors have been added on this pageload.
	if ( empty( $wp_settings_errors ) ) {
		return array();
	}

	// Filter results to those of a specific setting if one was set.
	if ($ setting) {
		$setting_errors = array();

		foreach ((array) $wp_settings_errors as $key => $details ) {
			if ( $setting === $details['setting'] ) {
				$setting_errors[] = $wp_settings_errors[ $key ];
			}
		}

		return $setting_errors;
	}

	return $wp_settings_errors;
}

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

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