id ) ) {
return;
}
$screens = [
'toplevel_page_accessibility_checker',
'accessibility-checker_page_accessibility_checker_issues',
'accessibility-checker_page_accessibility_checker_ignored',
'accessibility-checker_page_accessibility_checker_settings',
];
/**
* Filter the screens where admin notices should be removed.
*
* @since 1.14.0
*
* @param array $screens The screens where admin notices should be removed.
*/
$screens = apply_filters( 'edac_filter_remove_admin_notices_screens', $screens );
if ( ! is_array( $screens ) ) {
$screens = [];
}
if ( in_array( $current_screen->id, $screens, true ) ) {
remove_all_actions( 'admin_notices' );
remove_all_actions( 'all_admin_notices' );
}
}
/**
* Black Friday Admin Notice
*
* @return void
*/
public function edac_black_friday_notice() {
// Check if Accessibility Checker Pro is active.
if ( defined( 'EDACP_VERSION' ) ) {
return;
}
// Check if the notice has been dismissed.
if ( absint( get_option( 'edac_black_friday_2025_notice_dismiss', 0 ) ) ) {
return;
}
// Show from November 24 to December 03.
$current_date = date_i18n( 'Ymd' ); // Use date_i18n for localization.
$start_date = '20251124';
$end_date = '20251203';
if ( $current_date >= $start_date && $current_date <= $end_date ) {
// Get the promotional message from a separate function/file.
$message = $this->edac_get_black_friday_message();
// Output the message with appropriate sanitization.
echo wp_kses_post( $message );
}
}
/**
* Get Black Friday Promo Message
*
* @return string
*/
public function edac_get_black_friday_message() {
// Construct the promotional message.
$message = '
';
return $message;
}
/**
* Black Friday Admin Notice Ajax
*
* @return void
*
* - '-1' means that nonce could not be varified
* - '-2' means that update option wasn't successful
*/
public function edac_black_friday_notice_ajax() {
// nonce security.
if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'ajax-nonce' ) ) {
$error = new \WP_Error( '-1', __( 'Permission Denied', 'accessibility-checker' ) );
wp_send_json_error( $error );
}
$results = update_option( 'edac_black_friday_2025_notice_dismiss', true );
// Delete old options if they exist.
delete_option( 'edac_black_friday_2024_notice_dismiss' );
delete_option( 'edac_black_friday_2023_notice_dismiss' );
if ( ! $results ) {
$error = new \WP_Error( '-2', __( 'Update option wasn\'t successful', 'accessibility-checker' ) );
wp_send_json_error( $error );
}
wp_send_json_success( wp_json_encode( $results ) );
}
/**
* GAAD Notice
*
* @return void
*/
public function edac_gaad_notice() {
// Define constants for start and end dates.
// The banner appears on May 13 (one week early) to build anticipation; the actual sale runs May 20-22.
define( 'EDAC_GAAD_NOTICE_START_DATE', '2026-05-13' );
define( 'EDAC_GAAD_NOTICE_END_DATE', '2026-05-22' );
// Get the value of the 'edac_gaad_notice_dismiss' option and sanitize it.
$dismissed = absint( get_option( 'edac_gaad_notice_dismiss_2026', 0 ) );
// Check if the notice has been dismissed.
if ( $dismissed ) {
return;
}
// Get the current date in the 'Y-m-d' format.
$current_date = gmdate( 'Y-m-d' );
// Check if the current date is within the specified range.
if ( $current_date >= EDAC_GAAD_NOTICE_START_DATE && $current_date <= EDAC_GAAD_NOTICE_END_DATE ) {
// Get the promotional message from a separate function/file.
$message = $this->edac_get_gaad_promo_message();
// Output the message with appropriate sanitization.
echo wp_kses_post( $message );
}
}
/**
* Get GAAD Promo Message
*
* @return string
*/
public function edac_get_gaad_promo_message() {
// Construct the promotional message.
$message = '';
$message .= '
' . esc_html__( '⚡️ Global Accessibility Awareness Day Flash Sale', 'accessibility-checker' ) . '
';
if ( defined( 'EDACP_VERSION' ) && edac_is_pro() ) {
// Message for users who already have Accessibility Checker Pro active (valid license).
$message .= sprintf(
/* translators: 1: opening anchor tag for accessibility courses link, 2: closing anchor tag, 3: opening anchor tag for ArchiveWP link, 4: closing anchor tag */
esc_html__( '3 days only: Save 15%% on %1$saccessibility courses%2$s and Equalize Digital\'s %3$sArchiveWP plugin%4$s. Go further with accessibility.', 'accessibility-checker' ),
'',
'',
'',
''
) . '
';
$message .= esc_html__( 'Limited-time offer • May 20–22 • Use coupon code ', 'accessibility-checker' ) . 'GAAD2026
';
$message .= '' . esc_html__( 'Grab the Deal Before It Ends', 'accessibility-checker' ) . '
';
} else {
// Message for users who do not have Accessibility Checker Pro active.
$message .= esc_html__( '3 days only: Save 15% when you upgrade to Accessibility Checker Pro with coupon code', 'accessibility-checker' );
$message .= '
GAAD2026.';
$message .= esc_html__( 'Limited-time offer • May 20–22', 'accessibility-checker' ) . '
';
$message .= '
' . esc_html__( 'Upgrade Now', 'accessibility-checker' ) . '';
}
$message .= '
';
return $message;
}
/**
* GAAD Admin Notice Ajax
*
* @return void
*
* - '-1' means that nonce could not be varified
* - '-2' means that update option wasn't successful
*/
public function edac_gaad_notice_ajax() {
// nonce security.
if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'ajax-nonce' ) ) {
$error = new \WP_Error( '-1', __( 'Permission Denied', 'accessibility-checker' ) );
wp_send_json_error( $error );
}
$results = update_option( 'edac_gaad_notice_dismiss_2026', true );
// Delete old meta keys if they exist.
delete_option( 'edac_gaad_notice_dismiss_2025' );
delete_option( 'edac_gaad_notice_dismiss_2024' );
delete_option( 'edac_gaad_notice_dismiss' );
if ( ! $results ) {
$error = new \WP_Error( '-2', __( 'Update option wasn\'t successful', 'accessibility-checker' ) );
wp_send_json_error( $error );
}
wp_send_json_success( wp_json_encode( $results ) );
}
/**
* Review Admin Notice
*
* @return void
*/
public function edac_review_notice() {
$option = 'edac_review_notice';
$edac_review_notice = get_option( $option );
// exit if option is set to stop.
if ( 'stop' === $edac_review_notice ) {
return;
}
$transient = 'edac_review_notice_reminder';
$edac_review_notice_reminder = get_transient( $transient );
// first time if notice has never been shown wait 14 days.
if ( false === $edac_review_notice_reminder && empty( $edac_review_notice ) ) {
// if option isn't set and plugin has been active for more than 14 days show notice. This is for current users.
if ( edac_days_active() > 14 ) {
update_option( $option, 'play' );
} else {
// if plugin has been active less than 14 days set transient for 14 days.
set_transient( $transient, true, 14 * DAY_IN_SECONDS );
// set option to pause.
update_option( $option, 'pause' );
}
}
// if transient has expired and option is set to pause update option to play.
if ( false === $edac_review_notice_reminder && 'pause' === $edac_review_notice ) {
update_option( $option, 'play' );
}
// if option is not set to play exit.
if ( get_option( $option ) !== 'play' ) {
return;
}
?>
get_fixes_settings();
$options_keys = [];
foreach ( $fixes_settings as $fix ) {
$options_keys = array_merge( $options_keys, array_keys( $fix['fields'] ) );
}
if ( in_array( $option, $options_keys, true ) ) {
// Set a custom transient as a flag.
set_transient( 'edac_fixes_settings_saved', true, 60 );
}
}
}