'array', 'sanitize_callback' => [$this, 'sanitize_settings'], 'default' => $this->get_default_settings(), ] ); } /** * Register settings page. * * @return void */ public function register_settings_page(): void { $this->settings_page_hook = (string) add_submenu_page( 'king-addons', esc_html__('Custom Cursor', 'king-addons'), esc_html__('Custom Cursor', 'king-addons'), 'manage_options', 'king-addons-custom-cursor', [$this, 'render_settings_page'] ); } /** * Enqueue admin assets for the Custom Cursor settings page. * * @param string $hook_suffix Current admin page hook suffix. * * @return void */ public function enqueue_admin_assets(string $hook_suffix): void { if ('' === $this->settings_page_hook) { return; } if ($hook_suffix !== $this->settings_page_hook) { return; } // Required for wp.media modal. wp_enqueue_media(); } /** * Render admin settings page. * * @return void */ public function render_settings_page(): void { if (!current_user_can('manage_options')) { return; } $settings = $this->get_settings(); $is_pro = $this->can_use_pro(); // Theme mode is per-user $theme_mode = get_user_meta(get_current_user_id(), 'king_addons_theme_mode', true); $allowed_theme_modes = ['dark', 'light', 'auto']; if (!in_array($theme_mode, $allowed_theme_modes, true)) { $theme_mode = 'dark'; } // Enqueue shared V3 styles wp_enqueue_style( 'king-addons-admin-v3', KING_ADDONS_URL . 'includes/admin/layouts/shared/admin-v3-styles.css', [], KING_ADDONS_VERSION ); ?>