settings_errors()WP 3.0.0

Выводит на экран сообщения (уведомления и ошибки) зарегистрированные функцией add_settings_error().

Эта функция является одной из группы функций API настроек.

settings_errors() функция вызывается WordPress автоматически, когда загружается любая страница настроек (страница раздела админ-панели "Параметры"). Если в массиве ошибок (global $wp_settings_errors) есть зарегистрированные сообщения они будут выведены в admin_notice.

Сообщения о результатах проверки значений опций нужно регистрировать в момент обработки этих значений - это параметр $sanitize_callback в функции register_setting( $option_group, $option_name, $sanitize_callback ).

WordPress автоматически выводит все зарегистрированные сообщения на страницах настроек, поэтому обычно нет необходимости вызывать эту функцию - она вызывается автоматически. Однако, если вы выводите настройки например в плагине, то вывод ошибок нужно вызывать этой функцией.

Работает на основе: get_settings_errors()

Хуков нет.

Возвращает

null. Выводит на экран HTML код сообщений об ошибке.

Использование

settings_errors( $setting, $sanitize, $hide_on_update );
$setting(строка)
Идентификатор группы сообщений, обычно это название опции. Должен совпадать с параметром $setting из add_settings_error( $setting ). Если не указать ничего, то будут возвращены все зарегистрированные ошибки.
По умолчанию: ''
$sanitize(логический)
Укажите true, чтобы активировать функцию sanitize_option() - очищает опцию по фильтру указанному в sanitize_option() (для каждой опции свой фильтр). Если опция не проходит проверку, автоматически регистрируется соответствующее сообщение об ошибке.
По умолчанию: false
$hide_on_update(логический)
Укажите true, чтобы скрывать все сообщения, при сохранении опций. Сообщения о валидации данных нужно будет выводить при первом заходе на страницу настроек.Если пользователь сохранил новые значения, сообщения об ошибках будут спрятаны, чтобы избежать повторения сообщений, которые уже были показаны до сохранения настроек. Это полезно, когда нужно показывать важные ошибки, при возвращении на страницу настроек, например: опция не может быть пустой.
По умолчанию: false

Примеры

0

#1 Выведем все сообщения, зарегистрированные для наше опции my_setting_error:

function your_admin_notices_action() {
	settings_errors( 'my_setting_error' );
}
add_action( 'admin_notices', 'your_admin_notices_action' );

Список изменений

С версии 3.0.0 Введена.
С версии 5.3.0 Legacy error and updated CSS classes are mapped to notice-error and notice-success.

Код settings_errors() WP 6.4.3

function settings_errors( $setting = '', $sanitize = false, $hide_on_update = false ) {

	if ( $hide_on_update && ! empty( $_GET['settings-updated'] ) ) {
		return;
	}

	$settings_errors = get_settings_errors( $setting, $sanitize );

	if ( empty( $settings_errors ) ) {
		return;
	}

	$output = '';

	foreach ( $settings_errors as $key => $details ) {
		if ( 'updated' === $details['type'] ) {
			$details['type'] = 'success';
		}

		if ( in_array( $details['type'], array( 'error', 'success', 'warning', 'info' ), true ) ) {
			$details['type'] = 'notice-' . $details['type'];
		}

		$css_id    = sprintf(
			'setting-error-%s',
			esc_attr( $details['code'] )
		);
		$css_class = sprintf(
			'notice %s settings-error is-dismissible',
			esc_attr( $details['type'] )
		);

		$output .= "<div id='$css_id' class='$css_class'> \n";
		$output .= "<p><strong>{$details['message']}</strong></p>";
		$output .= "</div> \n";
	}

	echo $output;
}