$tab], $base_url), 'aicont_switch_tab', 'aicont_tab_nonce');
};
// Generate nonce for form
$tab_nonce = wp_create_nonce('aicont_switch_tab');
// Handle form submission and redirect manually
if (
isset($_POST['aicont_dashboard_nonce']) &&
wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['aicont_dashboard_nonce'])), 'aicont_save_dashboard_settings') &&
isset($_POST['tab']) &&
isset($_POST['aicont_tab_nonce']) &&
wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['aicont_tab_nonce'])), 'aicont_switch_tab')
) {
$tab = sanitize_text_field(wp_unslash($_POST['tab']));
if (in_array($tab, $valid_tabs, true)) {
add_filter('wp_redirect', function($location) use ($tab) {
return wp_nonce_url(
add_query_arg([
'page' => 'aicont-dashboard-settings',
'tab' => $tab,
'settings-updated' => 'true'
], admin_url('admin.php')),
'aicont_switch_tab',
'aicont_tab_nonce'
);
});
}
}
?>
'sanitize_text_field', 'default' => 'ready']);
register_setting('aicont_plugin_settings_group', 'aicont_plugin_site_language', ['sanitize_callback' => 'sanitize_text_field', 'default' => 'en_US']);
register_setting('aicont_plugin_settings_group', 'aicont_plugin_site_title', [
'sanitize_callback' => function($value) {
$value = sanitize_text_field($value);
if (empty($value)) {
add_settings_error('aicont_plugin_site_title', 'empty', esc_html__('Brand title cannot be empty.', 'aicontify'), 'error');
}
return $value;
},
'default' => ''
]);
// Prompt fields
$prompt_fields = [
'content_prompt_custom',
'content_page_prompt_custom',
'content_product_prompt_custom',
'short_description_prompt_custom',
'faq_prompt_custom',
'faq_page_prompt_custom',
'faq_product_prompt_custom',
'seo_title_prompt_custom',
'seo_page_title_prompt_custom',
'seo_product_title_prompt_custom',
'seo_meta_prompt_custom',
'seo_meta_page_prompt_custom',
'seo_meta_product_prompt_custom'
];
foreach ($prompt_fields as $field) {
$option_name = "aicont_plugin_{$field}";
$callback = function($v) use ($validate_prompt, $option_name, $field) {
if ($field === 'short_description_prompt_custom' && $v !== '') {
if (strlen($v) > 300) {
add_settings_error($option_name, 'too_long', esc_html__('Max 300 characters.', 'aicontify'), 'error');
}
}
return $validate_prompt($v, $option_name);
};
register_setting('aicont_plugin_settings_group', $option_name, ['sanitize_callback' => $callback, 'default' => '']);
}
// ACF fields
$acf_fields = [
'faq_article_id',
'faq_question_id',
'faq_answer_id',
'faq_page_article_id',
'faq_page_question_id',
'faq_page_answer_id',
'faq_product_article_id',
'faq_product_question_id',
'faq_product_answer_id'
];
foreach ($acf_fields as $field) {
register_setting('aicont_plugin_settings_group', "aicont_plugin_{$field}", ['sanitize_callback' => 'sanitize_text_field', 'default' => '']);
}
add_settings_section('aicont_plugin_main_settings', '', null, 'aicont_plugin_settings_group');
});