Описание woocommerce_admin_settings_sanitize_option
— Filter
Хук woocommerce_admin_settings_sanitize_option позволяет изменить значения параметров настроек WooCommerce перед их сохранением в базе данных. Он срабатывает во время обработки данных формы настроек в административной панели WooCommerce, что позволяет выполнять валидацию и изменение значений перед их сохранением
Примеры использования
Пример изменения значения настройки перед сохранением:
add_filter('woocommerce_admin_settings_sanitize_option', function($option, $option_name) {
if ($option_name === 'my_custom_setting') {
// Приводим значение к строке и обрезаем пробелы
return trim((string) $option);
}
return $option;
}, 10, 2);
В этом примере мы обрезаем пробелы из значения настройки ‘my_custom_setting’ перед его сохранением
Пример валидации значения настройки:
add_filter('woocommerce_admin_settings_sanitize_option', function($option, $option_name) {
if ($option_name === 'some_numeric_setting') {
// Проверяем, является ли значение числом
return is_numeric($option) ? (int) $option : 0;
}
return $option;
}, 10, 2);
Здесь мы проверяем, является ли значение настройки ‘some_numeric_setting’ числом, и приводим его к целому, либо возвращаем 0
— Лучшие практики
– Использование
Используйте этот хук при необходимости валидации и изменения значений настроек WooCommerce перед их сохранением
– Производительность
Хук не должен значительно влиять на производительность, но избыточные проверки могут замедлить процесс сохранения настроек
– Предупреждения
Убедитесь, что изменения не нарушают логику работы настроек и не приводят к ошибкам в админке
Альтернативы
Тип: action
Этот хук позволяет выполнять действия после обновления настроек, что может быть полезно для выполнения дополнительных операций
Используйте его, если нужно выполнять действия после успешного обновления настроек, а не перед их сохранением
Тип: filter
Данный хук работает аналогично, но применяется к общим настройкам WooCommerce, а не только к админским
Используйте его, если нужно изменить значения настроек, которые не относятся к админской панели