.
*/
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();