options = get_option('ash_options'); } public function enqueue_admin_assets($hook) { if ($hook != 'settings_page_abdal-security-headers') { return; } // Enqueue Bootstrap wp_enqueue_style('bootstrap', 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css'); wp_enqueue_script('bootstrap', 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js', array('jquery'), null, true); // Enqueue SweetAlert2 wp_enqueue_style('sweetalert2', 'https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css'); wp_enqueue_script('sweetalert2', 'https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.all.min.js', array(), null, true); // Enqueue our custom styles wp_enqueue_style('ash-admin-styles', ASH_PLUGIN_URL . 'assets/css/admin.css', array('bootstrap', 'sweetalert2'), ASH_VERSION); // Enqueue our custom scripts wp_enqueue_script('ash-admin-scripts', ASH_PLUGIN_URL . 'assets/js/admin.js', array('jquery', 'bootstrap', 'sweetalert2'), ASH_VERSION, true); // Add translation strings for JavaScript wp_localize_script('ash-admin-scripts', 'ashStrings', array( 'confirmSave' => esc_html__('Are you sure you want to save these settings?', 'abdal-security-headers'), 'yes' => esc_html__('Yes', 'abdal-security-headers'), 'no' => esc_html__('No', 'abdal-security-headers'), 'success' => esc_html__('Settings saved successfully', 'abdal-security-headers'), 'ok' => esc_html__('OK', 'abdal-security-headers'), 'error' => esc_html__('Error', 'abdal-security-headers'), 'errorMessage' => esc_html__('An error occurred while saving the settings. Please try again.', 'abdal-security-headers') )); } public function add_plugin_page() { add_options_page( esc_html__('Abdal Security Headers', 'abdal-security-headers'), esc_html__('Security Headers', 'abdal-security-headers'), 'manage_options', 'abdal-security-headers', array($this, 'create_admin_page') ); } public function create_admin_page() { ?>


                                
'ash-submit-button')); ?>
add_checkbox_field('x_xss_protection', esc_html__('X-XSS-Protection', 'abdal-security-headers'), 'ash_basic_headers'); $this->add_checkbox_field('x_content_type_options', esc_html__('X-Content-Type-Options', 'abdal-security-headers'), 'ash_basic_headers'); $this->add_checkbox_field('strict_transport_security', esc_html__('Strict-Transport-Security', 'abdal-security-headers'), 'ash_basic_headers'); $this->add_checkbox_field('permissions_policy', esc_html__('Permissions-Policy', 'abdal-security-headers'), 'ash_basic_headers'); $this->add_checkbox_field('x_frame_options', esc_html__('X-Frame-Options', 'abdal-security-headers'), 'ash_basic_headers'); $this->add_checkbox_field('referrer_policy', esc_html__('Referrer-Policy', 'abdal-security-headers'), 'ash_basic_headers'); // Additional Security Section add_settings_section( 'ash_additional_security', esc_html__('Additional Security Features', 'abdal-security-headers'), array($this, 'print_additional_section_info'), 'abdal-security-headers' ); // New Security Options $this->add_checkbox_field('remove_x_powered_by', esc_html__('Remove X-Powered-By Header', 'abdal-security-headers'), 'ash_additional_security'); $this->add_checkbox_field('hide_wp_version', esc_html__('Hide WordPress Version', 'abdal-security-headers'), 'ash_additional_security'); $this->add_checkbox_field('remove_login_errors', esc_html__('Remove Login Error Messages', 'abdal-security-headers'), 'ash_additional_security'); $this->add_checkbox_field('disable_xmlrpc', esc_html__('Disable XML-RPC', 'abdal-security-headers'), 'ash_additional_security'); $this->add_checkbox_field('remove_x_pingback', esc_html__('Remove X-Pingback Header', 'abdal-security-headers'), 'ash_additional_security'); $this->add_checkbox_field('restrict_rest_api', esc_html__('Restrict REST API Access', 'abdal-security-headers'), 'ash_additional_security'); // CSP Section add_settings_section( 'ash_csp_section', esc_html__('Content Security Policy', 'abdal-security-headers'), array($this, 'print_csp_section_info'), 'abdal-security-headers' ); // CSP Fields $csp_fields = array( 'default-src' => esc_html__('Default Source', 'abdal-security-headers'), 'script-src' => esc_html__('Script Source', 'abdal-security-headers'), 'style-src' => esc_html__('Style Source', 'abdal-security-headers'), 'img-src' => esc_html__('Image Source', 'abdal-security-headers'), 'connect-src' => esc_html__('Connect Source', 'abdal-security-headers'), 'font-src' => esc_html__('Font Source', 'abdal-security-headers'), 'object-src' => esc_html__('Object Source', 'abdal-security-headers'), 'media-src' => esc_html__('Media Source', 'abdal-security-headers'), 'frame-src' => esc_html__('Frame Source', 'abdal-security-headers'), 'worker-src' => esc_html__('Worker Source', 'abdal-security-headers'), 'form-action' => esc_html__('Form Action', 'abdal-security-headers'), 'base-uri' => esc_html__('Base URI', 'abdal-security-headers'), 'sandbox' => esc_html__('Sandbox', 'abdal-security-headers'), 'report-uri' => esc_html__('Report URI', 'abdal-security-headers'), 'report-to' => esc_html__('Report To', 'abdal-security-headers') ); foreach ($csp_fields as $key => $label) { $this->add_text_field('csp_' . str_replace('-', '_', $key), $label, 'ash_csp_section'); } } private function add_checkbox_field($id, $title, $section) { add_settings_field( $id, $title, array($this, 'checkbox_callback'), 'abdal-security-headers', $section, array('id' => $id) ); } private function add_text_field($id, $title, $section) { add_settings_field( $id, $title, array($this, 'text_callback'), 'abdal-security-headers', $section, array('id' => $id) ); } public function checkbox_callback($args) { $id = $args['id']; $checked = isset($this->options[$id]) ? $this->options[$id] : '0'; ?>
options[$id]) ? $this->options[$id] : ''; ?>