container = $container; } public function init() { add_action('admin_menu', [$this, 'add_admin_menu']); add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_assets']); } public function add_admin_menu() { // Replace the old plugin's menu add_menu_page( __('Advanced Woo Ajax Search', 'awas-woo'), __('Awas Search', 'awas-woo'), 'manage_options', 'advanced-woo-option-setting', [$this, 'render_settings_page'], 'dashicons-search', 56 ); } public function enqueue_admin_assets($hook) { if (strpos($hook, 'advanced-woo-option-setting') === false) { return; } // We will enqueue a clean, modern CSS file for our settings page. $css_url = AWAS_WOO_URL . 'modules/AdvancedSearch/assets/css/admin-settings.css'; wp_enqueue_style('awas-advanced-search-admin', $css_url, [], '1.0.0'); $js_url = AWAS_WOO_URL . 'modules/AdvancedSearch/assets/js/admin-settings.js'; wp_enqueue_script('awas-advanced-search-admin', $js_url, [], '1.0.0', true); wp_localize_script('awas-advanced-search-admin', 'awasAdminConfig', [ 'nonce' => wp_create_nonce('wp_rest') ]); } public function render_settings_page() { // Handle form submission if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['awas_settings']) && isset($_POST['awas_nonce'])) { if (wp_verify_nonce($_POST['awas_nonce'], 'awas_save_settings')) { // Sanitize and save settings // For a complex nested array, we ideally sanitize recursively. // For this prototype, we'll use a basic map deep. $settings = map_deep(wp_unslash($_POST['awas_settings']), 'sanitize_text_field'); update_option('awas_settings', $settings); echo '
' . __('Settings saved successfully.', 'awas-woo') . '