*/ class Age_Sentry_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct( $plugin_name, $version ) { $this->plugin_name = $plugin_name; $this->version = $version; } /** * Register the admin settings page under a top-level menu item. * * @since 1.0.0 */ public function add_admin_menu() { add_menu_page( __( 'Age Sentry', 'age-sentry' ), __( 'Age Sentry', 'age-sentry' ), 'manage_options', 'age-sentry', array( $this, 'display_plugin_admin_page' ), 'dashicons-shield-alt' ); } /** * Render the plugin's settings page. * * @since 1.0.0 */ public function display_plugin_admin_page() { require_once plugin_dir_path( __FILE__ ) . 'partials/age-sentry-admin-display.php'; } /** * Register the plugin settings, sanitization callbacks, and default values. * * @since 1.0.0 */ public function register_settings() { register_setting( 'age_sentry-settings', 'age_sentry_logo', 'esc_url_raw' ); register_setting( 'age_sentry-settings', 'age_sentry_title', 'sanitize_text_field' ); register_setting( 'age_sentry-settings', 'age_sentry_subtitle', 'sanitize_textarea_field' ); register_setting( 'age_sentry-settings', 'age_sentry_warning_text', 'sanitize_textarea_field' ); register_setting( 'age_sentry-settings', 'age_sentry_enter_text', 'sanitize_text_field' ); register_setting( 'age_sentry-settings', 'age_sentry_exit_text', 'sanitize_text_field' ); register_setting( 'age_sentry-settings', 'age_sentry_redirect_url', 'esc_url_raw' ); register_setting( 'age_sentry-settings', 'age_sentry_cookie_duration', 'absint' ); register_setting( 'age_sentry-settings', 'age_sentry_verification_method', 'sanitize_text_field' ); register_setting( 'age_sentry-settings', 'age_sentry_min_age', 'absint' ); register_setting( 'age_sentry-settings', 'age_sentry_bypass_logged_in', 'sanitize_text_field' ); register_setting( 'age_sentry-settings', 'age_sentry_bypass_crawlers', 'sanitize_text_field' ); register_setting( 'age_sentry-settings', 'age_sentry_show_remember_me', 'sanitize_text_field' ); // Color settings. register_setting( 'age_sentry-settings', 'age_sentry_color_popup_bg', 'sanitize_hex_color' ); register_setting( 'age_sentry-settings', 'age_sentry_color_primary', 'sanitize_hex_color' ); register_setting( 'age_sentry-settings', 'age_sentry_color_text', 'sanitize_hex_color' ); register_setting( 'age_sentry-settings', 'age_sentry_color_text_muted', 'sanitize_hex_color' ); } /** * Register the stylesheets and scripts for the admin area. * * Only loads on this plugin's own settings page (checked via the * `page` query var, which is the most reliable way to target a single * top-level admin page), and pulls in the WordPress media uploader and * color picker that the settings screen depends on. * * @since 1.0.0 */ public function enqueue_scripts() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only page check, not form processing. if ( ! isset( $_GET['page'] ) || 'age-sentry' !== $_GET['page'] ) { return; } wp_enqueue_media(); wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'wp-color-picker' ); wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/age-sentry-admin.css', array( 'wp-color-picker' ), $this->version, 'all' ); wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/age-sentry-admin.js', array( 'jquery', 'wp-color-picker' ), $this->version, true ); wp_localize_script( $this->plugin_name, 'age_sentryAdminData', array( 'chooseLogoTitle' => __( 'Choose Logo', 'age-sentry' ), 'chooseLogoButton' => __( 'Choose Logo', 'age-sentry' ), ) ); } /** * Add a "Settings" link to this plugin's entry on the Plugins screen, * placed before the default "Deactivate" link. * * @since 1.0.0 * @param array $links The existing list of plugin action links. * @return array The modified list of plugin action links. */ public function add_action_links( $links ) { $settings_link = sprintf( '%s', esc_url( admin_url( 'admin.php?page=age-sentry' ) ), esc_html__( 'Settings', 'age-sentry' ) ); array_unshift( $links, $settings_link ); return $links; } }