# settings_errors()

URL: https://chugunov.pro/api-wordpress/functions/settings_errors/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 3.0.0.

## Сигнатура

```php
settings_errors( string $setting = '', bool $sanitize = false, bool $hide_on_update = false )
```

## Описание

Часть Settings API. Выводит div для каждой ошибки, полученной через get_settings_errors() .
Вызывается автоматически после отправки страницы настроек, основанной на Settings API. Ошибки следует добавлять в функции обратного вызова валидации для настройки, определённой в register_setting() .
Опция $sanitize передаётся в get_settings_errors() и повторно запускает очистку настройки для её текущего значения.
Опция $hide_on_update приводит к тому, что ошибки показываются только при первой загрузке страницы настроек. Если пользователь уже сохранил новые значения, ошибки будут скрыты, чтобы не повторять сообщения, уже показанные при стандартном выводе ошибок после отправки. Это полезно для показа общих ошибок, таких как отсутствующие настройки, когда пользователь заходит на страницу настроек.

## Параметры

- `$setting` `string` — необязательный, по умолчанию `''`. Необязательный слаг конкретной настройки, ошибки которой нужны.
- `$sanitize` `bool` — необязательный, по умолчанию `false`. Нужно ли повторно очистить значение настройки перед возвратом ошибок.
- `$hide_on_update` `bool` — необязательный, по умолчанию `false`. Если задано значение true, ошибки не будут показаны, если страница настроек уже была отправлена.

## Исходный код

Файл: `wp-admin/includes/template.php:1985`

```php
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;
}
```

## История изменений

- 5.3.0 — Legacy error and updated CSS classes are mapped to notice-error and notice-success.
- 3.0.0 — Introduced.

## Связанные

Использует: [`get_settings_errors`](https://chugunov.pro/api-wordpress/functions/get_settings_errors/), [`add_settings_error`](https://chugunov.pro/api-wordpress/functions/add_settings_error/), [`esc_attr`](https://chugunov.pro/api-wordpress/functions/esc_attr/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/settings_errors/
