Создание пункта настроек в меню админки
// Регистрация настроек
function custom_coupons_settings_init() {
register_setting('custom_coupons_settings', 'custom_coupons_list');
add_settings_section(
'custom_coupons_section',
'Список купонов',
null,
'custom-coupons'
);
add_settings_field(
'custom_coupons_field',
'Купоны (вводите по одному на строку)',
'custom_coupons_field_callback',
'custom-coupons',
'custom_coupons_section'
);
}
add_action('admin_init', 'custom_coupons_settings_init');
function custom_coupons_field_callback() {
$coupons = get_option('custom_coupons_list', '');
echo '<textarea name="custom_coupons_list" rows="10" cols="50" class="large-text code">' . esc_textarea($coupons) . '</textarea>';
}
Добавление валидации поля купон
function validate_coupon_code($record, $handler) {
// Получаем данные формы
$raw_fields = $record->get('fields');
$coupon_code = $raw_fields['coupon_code']['value'];
// Получаем список купонов из настроек
$coupons = get_option('custom_coupons_list', '');
$valid_coupons = array_map('trim', explode("\n", $coupons));
// Проверка, является ли введенный купон допустимым
if (!in_array($coupon_code, $valid_coupons)) {
// Если купон недействителен, добавляем ошибку к полю
$handler->add_error( $raw_fields['coupon_code']['id'], 'Введенный промокод недействителен.' );
}
}
add_action('elementor_pro/forms/validation', 'validate_coupon_code', 10, 2);
ка