Как реализовать мой код, чтобы мне не приходилось объявлять массив в каждой функции и заполнить опции через цикл?
add_action('admin_init', 'plugin_settings');
function plugin_settings()
{
$option_groups = [
'option_group' => [
'title' => 'Основные настройки',
'db_name' => 'option_name',
'section_id' => 'section_id',
'options' => [
'primer_field1' => 'Название опции',
'primer_field2' => 'Другая опция'
]
],
'selectors' => [
'title' => 'Селекторы полей',
'db_name' => 'selector',
'section_id' => 'selector_sections',
'options' => [
'date_from' => 'Дата от',
'date_to' => 'Дата до',
'adults' => 'Взрослые',
'childs' => 'Дети'
]
]
];
foreach ( $option_groups as $group => $g_opt) {
// параметры: $option_group, $option_name, $sanitize_callback
register_setting( $group, $g_opt['db_name'], 'sanitize_callback');
// параметры: $id, $title, $callback, $page
add_settings_section($g_opt['section_id'], $g_opt['title'], '', 'primer_page');
foreach ($g_opt['options'] as $opt_id => $opt_title) {
// параметры: $id, $title, $callback, $page, $section, $args
add_settings_field($opt_id, $opt_title, 'fill_option', 'primer_page', $g_opt['section_id']);
}
}
}
/**
* Заполняем опции
*/
function fill_option()
{
foreach ($g_opt['options'] as $opt_id => $opt_title) {
$val = $val ? $val[$opt_id] : null;
?>
<input type="text" name="option_name[<?php echo esc_attr($opt_id) ?>]" value="<?php echo esc_attr($opt_id) ?>" />
<?php
}
}