roles ) ) ? $user->roles : []; $ignore_user_roles = get_option( 'edacp_ignore_user_roles' ); $interset = ( $user_roles && $ignore_user_roles ) ? array_intersect( $user_roles, $ignore_user_roles ) : false; return ( $interset ); } /** * Add an options page under the Settings submenu */ function edac_add_options_page() { // we don't want to show even the welcome page to subscribers. if ( ! current_user_can( 'edit_posts' ) ) { return; } add_menu_page( __( 'Welcome to Accessibility Checker', 'accessibility-checker' ), __( 'Accessibility Checker', 'accessibility-checker' ), 'read', 'accessibility_checker', 'edac_display_welcome_page', 'dashicons-universal-access-alt' ); if ( ! edac_user_can_ignore() ) { return; } // settings panel filter. $settings_capability = apply_filters( 'edac_filter_settings_capability', 'manage_options' ); add_submenu_page( 'accessibility_checker', __( 'Accessibility Checker Settings', 'accessibility-checker' ), __( 'Settings', 'accessibility-checker' ), $settings_capability, 'accessibility_checker_settings', 'edac_display_options_page' // The submenu doesn't typically require a separate icon. ); } /** * Render the welcome page for plugin */ function edac_display_welcome_page() { include_once plugin_dir_path( __DIR__ ) . 'partials/welcome-page.php'; } /** * Render the options page for plugin */ function edac_display_options_page() { include_once plugin_dir_path( __DIR__ ) . 'partials/settings-page.php'; } /** * Register settings */ function edac_register_setting() { // Add sections. add_settings_section( 'edac_general', __( 'General Settings', 'accessibility-checker' ), 'edac_general_cb', 'edac_settings' ); add_settings_section( 'edac_simplified_summary', __( 'Simplified Summary Settings', 'accessibility-checker' ), 'edac_simplified_summary_cb', 'edac_settings' ); add_settings_section( 'edac_footer_accessibility_statement', __( 'Footer Accessibility Statement', 'accessibility-checker' ), 'edac_footer_accessibility_statement_cb', 'edac_settings' ); // Add fields. add_settings_field( 'edac_post_types', __( 'Post Types To Be Checked', 'accessibility-checker' ), 'edac_post_types_cb', 'edac_settings', 'edac_general', [ 'label_for' => 'edac_post_types' ] ); add_settings_field( 'edac_delete_data', __( 'Delete Data', 'accessibility-checker' ), 'edac_delete_data_cb', 'edac_settings', 'edac_general', [ 'label_for' => 'edac_delete_data' ] ); add_settings_field( 'edac_simplified_summary_prompt', __( 'Prompt for Simplified Summary', 'accessibility-checker' ), 'edac_simplified_summary_prompt_cb', 'edac_settings', 'edac_simplified_summary', [ 'label_for' => 'edac_simplified_summary_prompt' ] ); add_settings_field( 'edac_simplified_summary_position', __( 'Simplified Summary Position', 'accessibility-checker' ), 'edac_simplified_summary_position_cb', 'edac_settings', 'edac_simplified_summary', [ 'label_for' => 'edac_simplified_summary_position' ] ); add_settings_field( 'edac_add_footer_accessibility_statement', __( 'Add Footer Accessibility Statement', 'accessibility-checker' ), 'edac_add_footer_accessibility_statement_cb', 'edac_settings', 'edac_footer_accessibility_statement', [ 'label_for' => 'edac_add_footer_accessibility_statement' ] ); add_settings_field( 'edac_include_accessibility_statement_link', __( 'Include Link to Accessibility Policy', 'accessibility-checker' ), 'edac_include_accessibility_statement_link_cb', 'edac_settings', 'edac_footer_accessibility_statement', [ 'label_for' => 'edac_include_accessibility_statement_link' ] ); add_settings_field( 'edac_accessibility_policy_page', __( 'Accessibility Policy page', 'accessibility-checker' ), 'edac_accessibility_policy_page_cb', 'edac_settings', 'edac_footer_accessibility_statement', [ 'label_for' => 'edac_accessibility_policy_page' ] ); add_settings_field( 'edac_accessibility_statement_preview', __( 'Accessibility Statement Preview', 'accessibility-checker' ), 'edac_accessibility_statement_preview_cb', 'edac_settings', 'edac_footer_accessibility_statement', [ 'label_for' => 'edac_accessibility_statement_preview' ] ); // Register settings. register_setting( 'edac_settings', 'edac_post_types', 'edac_sanitize_post_types' ); register_setting( 'edac_settings', 'edac_delete_data', 'edac_sanitize_checkbox' ); register_setting( 'edac_settings', 'edac_simplified_summary_prompt', [ 'type' => 'string', 'sanitize_callback' => 'edac_sanitize_simplified_summary_prompt', 'default' => 'when required', ] ); register_setting( 'edac_settings', 'edac_simplified_summary_position', [ 'type' => 'string', 'sanitize_callback' => 'edac_sanitize_simplified_summary_position', 'default' => 'after', ] ); register_setting( 'edac_settings', 'edac_add_footer_accessibility_statement', 'edac_sanitize_checkbox' ); register_setting( 'edac_settings', 'edac_include_accessibility_statement_link', 'edac_sanitize_checkbox' ); register_setting( 'edac_settings', 'edac_accessibility_policy_page', 'edac_sanitize_accessibility_policy_page' ); } /** * Render the text for the general section */ function edac_general_cb() { echo '
'; printf( /* translators: %1$s: link to the plugin documentation website. */ esc_html__( 'Use the settings below to configure Accessibility Checker. Additional information about each setting can be found in the %1$s.', 'accessibility-checker' ), '' . esc_html__( 'plugin documentation', 'accessibility-checker' ) . '' ); if ( EDAC_KEY_VALID === false ) { printf( /* translators: %1$s: link to the "Accessibility Checker Pro" website. */ ' ' . esc_html__( 'More features and email support is available with %1$s.', 'accessibility-checker' ), '' . esc_html__( 'Accessibility Checker Pro', 'accessibility-checker' ) . '' ); } echo '
'; } /** * Render the text for the simplified summary section */ function edac_simplified_summary_cb() { printf( '%1$s %2$s
', esc_html__( 'Web Content Accessibility Guidelines (WCAG) at the AAA level require any content with a reading level above 9th grade to have an alternative that is easier to read. Simplified summary text is added on the readability tab in the Accessibility Checker meta box on each post\'s or page\'s edit screen.', 'accessibility-checker' ), '' . esc_html__( 'Learn more about simplified summaries and readability requirements.', 'accessibility-checker' ) . '' ); } /** * Render the text for the footer accessiblity statement section */ function edac_footer_accessibility_statement_cb() { echo ''; echo esc_html__( 'Are you thinking "Wow, this plugin is amazing" and is it helping you make your website more accessible? Share your efforts to make your website more accessible with your customers and let them know you\'re using Accessibility Checker to ensure all people can use your website. Add a small text-only link and statement in the footer of your website.', 'accessibility-checker' ); echo '
'; } /** * Render the radio input field for position option */ function edac_simplified_summary_position_cb() { $position = get_option( 'edac_simplified_summary_position' ); ?>edac_get_simplified_summary($post);
$post_type ) { if ( ! in_array( $post_type, $post_types, true ) ) { unset( $selected_post_types[ $key ] ); } } } // get unselected post types. $unselected_post_types = $post_types; if ( $selected_post_types ) { $unselected_post_types = array_diff( $post_types, $selected_post_types ); } // delete unselected post type issues. if ( $unselected_post_types ) { foreach ( $unselected_post_types as $unselected_post_type ) { Purge_Post_Data::delete_cpt_posts( $unselected_post_type ); } } // clear cached stats if selected posts types change. if ( get_option( 'edac_post_types' ) !== $selected_post_types ) { $scan_stats = new \EDAC\Admin\Scans_Stats(); $scan_stats->clear_cache(); if ( class_exists( '\EDACP\Scans' ) ) { delete_option( 'edacp_fullscan_completed_at' ); } } return $selected_post_types; } /** * Render the checkbox input field for add footer accessibility statement option */ function edac_add_footer_accessibility_statement_cb() { $option = get_option( 'edac_add_footer_accessibility_statement' ) ? get_option( 'edac_add_footer_accessibility_statement' ) : false; ?> get_accessibility_statement() ); } /** * Render the checkbox input field for delete data option */ function edac_delete_data_cb() { $option = get_option( 'edac_delete_data' ) ? get_option( 'edac_delete_data' ) : false; ?>