Feel Accessibility). * * @package Feel_Accessibility */ if ( ! defined( 'ABSPATH' ) ) { exit; } class Feel_Accessibility_Admin { const PAGE_SLUG = 'feel-accessibility'; /** * Engancha los hooks. * * @return void */ public function register() { add_action( 'admin_menu', array( $this, 'add_menu' ) ); add_action( 'admin_init', array( $this, 'register_setting' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) ); add_filter( 'plugin_action_links_' . plugin_basename( FEEL_ACC_FILE ), array( $this, 'action_links' ) ); } /** * Entrada de menú. * * @return void */ public function add_menu() { add_options_page( Feel_Accessibility_I18n::admin( 'page_title' ), Feel_Accessibility_I18n::admin( 'menu_title' ), 'manage_options', self::PAGE_SLUG, array( $this, 'render_page' ) ); } /** * Registra la opción con su función de saneado. * * @return void */ public function register_setting() { register_setting( 'feel_accessibility', Feel_Accessibility_Settings::OPTION, array( 'type' => 'array', 'sanitize_callback' => array( 'Feel_Accessibility_Settings', 'sanitize' ), 'default' => Feel_Accessibility_Settings::defaults(), ) ); } /** * Hoja de estilos solo en nuestra pantalla. * * @param string $hook Pantalla actual. * @return void */ public function enqueue( $hook ) { if ( 'settings_page_' . self::PAGE_SLUG !== $hook ) { return; } wp_enqueue_style( 'feel-accessibility-admin', FEEL_ACC_URL . 'assets/css/admin.css', array(), FEEL_ACC_VERSION ); } /** * Enlace "Ajustes" en la lista de plugins. * * @param array $links Enlaces existentes. * @return array */ public function action_links( $links ) { $url = admin_url( 'options-general.php?page=' . self::PAGE_SLUG ); array_unshift( $links, '' . esc_html( Feel_Accessibility_I18n::admin( 'settings_link' ) ) . '' ); return $links; } /** * Nombre del campo del formulario. * * @param string $key Clave del ajuste. * @return string */ private function field( $key ) { return Feel_Accessibility_Settings::OPTION . '[' . $key . ']'; } /** * Pinta la página. * * @return void */ public function render_page() { if ( ! current_user_can( 'manage_options' ) ) { return; } $t = array( 'Feel_Accessibility_I18n', 'admin' ); $s = Feel_Accessibility_Settings::get(); $icon_color = Feel_Accessibility_Settings::icon_color( $s['color'] ); $ratio = Feel_Accessibility_Settings::contrast_ratio( $icon_color, $s['color'] ); $ratio_text = number_format_i18n( $ratio, 1 ); ?>