. */ if (!defined('ABSPATH')) exit; class AccessibilityHelper { public function __construct() { add_action('admin_menu', [$this, 'add_settings_page']); add_action('admin_init', [$this, 'register_settings']); add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_scripts']); add_action('wp_enqueue_scripts', [$this, 'enqueue_scripts']); add_action('wp_body_open', [$this, 'open_page_wrapper'], 0); add_action('wp_footer', [$this, 'close_page_wrapper'], 9998); add_action('wp_footer', [$this, 'print_accessibility_ui'], 9999); } public function open_page_wrapper() { echo '
'; } public function close_page_wrapper() { echo '
'; } public function enqueue_scripts() { wp_enqueue_style('open-dyslexic',plugins_url('assets/fonts/open-dyslexic/open-dyslexic.css', __FILE__),[],'1.0'); wp_enqueue_style('accessibility-helper-style', plugins_url('assets/css/style.css', __FILE__),[],'2.1'); wp_enqueue_script('accessibility-helper-js', plugins_url('assets/js/accessibility-helper.js', __FILE__), ['jquery'], '1.2', true); $options = get_option('settings', []); $defaults = [ 'position' => 'bottom-left', 'bg_color' => '#ffffff', 'text_color' => '#000000', 'button_color' => '#626fc4', ]; $settings = array_merge($defaults, $options); wp_localize_script('accessibility-helper-js', 'Settings', [ 'position' => esc_attr($settings['position']), 'bgColor' => esc_attr($settings['bg_color']), 'textColor' => esc_attr($settings['text_color']), 'buttonColor' => esc_attr($settings['button_color']), ]); } public function enqueue_admin_scripts($hook) { if ($hook === 'toplevel_page_accessibility-helper') { wp_enqueue_style('wp-color-picker'); wp_enqueue_script('color-picker', plugins_url('assets/js/color-picker-init.js', __FILE__), ['wp-color-picker'], '2.1', true); } } # Structure of panel public function print_accessibility_ui() { $icon_url = plugins_url('assets/images/accessLogo.jpg', __FILE__); ?>
'bg_color']); add_settings_field('text_color', 'Text Color', [$this, 'input_field'], 'accessibility-helper', 'main_section', ['id' => 'text_color']); add_settings_field('button_color', 'Button Color', [$this, 'input_field'], 'accessibility-helper', 'main_section', ['id' => 'button_color']); } public function sanitize_settings($input) { $output = []; $allowed_positions = ['bottom-right', 'bottom-left', 'top-right', 'top-left']; $output['position'] = in_array($input['position'], $allowed_positions) ? $input['position'] : 'bottom-left'; foreach (['bg_color', 'text_color', 'button_color'] as $color) { $output[$color] = sanitize_hex_color($input[$color]) ?: '#000000'; } return $output; } # Admin panel (Back-end) public function render_settings_page() { ?>

Accessibility Helper Settings

Settings reset to defaults.

'; } ?>
'#ffffff', 'text_color' => '#000000', 'button_color' => '#626fc4', ]; $value = esc_attr($options[$id] ?? $defaults[$id]); $class = in_array($id, ['bg_color', 'text_color', 'button_color']) ? 'color-field' : ''; echo ""; if ($id === 'button_color') { echo ''; echo ''; echo ''; } } } new AccessibilityHelper();