= 80 ? '#22c55e' : ( $accessiq_score >= 60 ? '#f59e0b' : '#ef4444' );
// Passed = total checks (8) minus checks that had issues (unique wcag_ids with issues)
$accessiq_wcag_with_issues = count( array_unique( array_map( fn( $accessiq_item ) => $accessiq_item->wcag_id, $accessiq_issues ) ) );
// Real number of checks run for this scan (older scans lack the meta; fall back to 9, the current JS engine count).
$accessiq_total_checks = (int) get_post_meta( $accessiq_scan_id, '_accessiq_checks', true ) ?: 9;
$accessiq_passed = max( 0, $accessiq_total_checks - $accessiq_wcag_with_issues );
$accessiq_standard = AccessIQ_Scanner::standard_label( $accessiq_scan_id );
// Group the rows already loaded (no extra queries): severity, then WCAG level.
$accessiq_buckets = array(
'error' => array( 'A' => array(), 'AA' => array(), 'AAA' => array() ),
'warning' => array( 'A' => array(), 'AA' => array(), 'AAA' => array() ),
);
$accessiq_ignored_count = 0;
foreach ( $accessiq_issues as $accessiq_row ) {
$accessiq_row_sev = ( 'warning' === $accessiq_row->severity ) ? 'warning' : 'error';
$accessiq_row_lvl = isset( $accessiq_buckets[ $accessiq_row_sev ][ $accessiq_row->level ] ) ? $accessiq_row->level : 'A';
$accessiq_buckets[ $accessiq_row_sev ][ $accessiq_row_lvl ][] = $accessiq_row;
if ( ! empty( $accessiq_row->dismissed_at ) ) {
++$accessiq_ignored_count;
}
}
$accessiq_fix_first = AccessIQ_Rule_Help::fix_first( $accessiq_issues, 5 );
?>
= 80 ? '✅ Excellent' : ( $accessiq_score >= 50 ? '⚠️ Needs Work' : '❌ Critical' );
$accessiq_grade_class = $accessiq_score >= 80 ? 'green' : ( $accessiq_score >= 50 ? 'amber' : 'red' );
// Calculate total checks (errors + warnings + passed)
$accessiq_total_conducted = $accessiq_errors + $accessiq_warnings + $accessiq_passed;
?>
$accessiq_by_level ) :
$accessiq_sev_total = count( $accessiq_by_level['A'] ) + count( $accessiq_by_level['AA'] ) + count( $accessiq_by_level['AAA'] );
if ( ! $accessiq_sev_total ) {
continue;
}
$accessiq_sev_active = 0;
foreach ( $accessiq_by_level as $accessiq_lv_rows ) {
foreach ( $accessiq_lv_rows as $accessiq_row ) {
if ( empty( $accessiq_row->dismissed_at ) ) {
++$accessiq_sev_active;
}
}
}
?>
' . (int) $accessiq_sev_active . '';
if ( 'warning' === $accessiq_sev ) {
/* translators: %s: number of warnings */
echo wp_kses( sprintf( __( 'Warnings (%s)', 'accessiq' ), $accessiq_n_html ), array( 'span' => array( 'class' => true ) ) );
} else {
/* translators: %s: number of errors */
echo wp_kses( sprintf( __( 'Errors (%s)', 'accessiq' ), $accessiq_n_html ), array( 'span' => array( 'class' => true ) ) );
}
?>
$accessiq_lv_rows ) :
if ( empty( $accessiq_lv_rows ) ) {
continue;
}
$accessiq_lv_active = 0;
foreach ( $accessiq_lv_rows as $accessiq_row ) {
if ( empty( $accessiq_row->dismissed_at ) ) {
++$accessiq_lv_active;
}
}
?>
' . (int) $accessiq_lv_active . '';
/* translators: 1: WCAG level (A, AA or AAA), 2: number of issues */
echo wp_kses( sprintf( __( 'Level %1$s (%2$s)', 'accessiq' ), esc_html( $accessiq_lvl ), $accessiq_n_html ), array( 'span' => array( 'class' => true ) ) );
?>
severity );
$accessiq_ignored = ! empty( $accessiq_issue->dismissed_at );
$accessiq_bg_color = $accessiq_is_err ? 'rgba(248,113,113,0.07)' : 'rgba(251,191,36,0.07)';
$accessiq_border_color = $accessiq_is_err ? '#f87171' : '#fbbf24';
$accessiq_issue_key = (string) ( $accessiq_issue->wcag_id . '-' . (int) $accessiq_issue->id );
$accessiq_help = AccessIQ_Rule_Help::get( $accessiq_issue->wcag_id, $accessiq_issue->issue_type );
$accessiq_type_label = AccessIQ_Rule_Help::normalise_type( $accessiq_issue->issue_type );
$accessiq_help_id = 'aiq-help-' . (int) $accessiq_issue->id;
?>
WCAG wcag_id ); ?>
issue_type ); ?>
>
level ); ?>
ACCESSIQ_SCAN_CPT,
'posts_per_page' => -1,
'post_status' => 'publish',
) );
$accessiq_total_scans = count( $accessiq_all_scans );
$accessiq_total_score = 0;
$accessiq_urls = array();
$accessiq_total_issues = 0;
foreach ( $accessiq_all_scans as $accessiq_scan ) {
$accessiq_total_score += (int) get_post_meta( $accessiq_scan->ID, '_accessiq_score', true );
$accessiq_urls[] = get_post_meta( $accessiq_scan->ID, '_accessiq_url', true );
$accessiq_total_issues += (int) get_post_meta( $accessiq_scan->ID, '_accessiq_errors', true ) + (int) get_post_meta( $accessiq_scan->ID, '_accessiq_warnings', true );
}
$accessiq_avg_score = $accessiq_total_scans > 0 ? round( $accessiq_total_score / $accessiq_total_scans ) : 0;
$accessiq_unique_pages = count( array_unique( array_filter( $accessiq_urls ) ) );
?>