'schedule', 'posts_per_page' => -1, 'meta_key' => 'day', 'orderby' => 'meta_value', 'order' => 'ASC', ]; $query = new WP_Query($args); $schedules_by_day = []; if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $day = get_field('day'); // Format: Y-m-d if (!$day) continue; $schedules_by_day[$day][] = [ 'post_id' => get_the_ID(), 'topic' => get_field('topic'), 'start_time' => get_field('start_time'), 'end_time' => get_field('end_time'), 'speakers' => get_field('speakers'), ]; } wp_reset_postdata(); } if (empty($schedules_by_day)) { return '

No schedules found.

'; } // Build tabs UI echo '
'; $day_index = 1; foreach ($schedules_by_day as $day => $sessions) { $tab_id = 'day-' . $day_index; $formatted_date = strtoupper(date_i18n('M j, Y', strtotime($day))); echo ''; $day_index++; } echo '
'; // Tab content containers echo '
'; $day_index = 1; foreach ($schedules_by_day as $day => $sessions) { // Sort sessions by start time (earliest first) usort($sessions, function ($a, $b) { return strtotime($a['start_time']) - strtotime($b['start_time']); }); $tab_id = 'day-' . $day_index; echo '
'; echo '
'; foreach ($sessions as $session) { echo '
'; echo '
'; echo '

' . strtoupper(esc_html($session['start_time']) . ' - ' . esc_html($session['end_time'])) . '

'; echo '
' . esc_html(get_field('type', $session['post_id'])) . '
'; echo '
'; echo '
'; echo '

' . esc_html($session['topic']) . '

'; if (!empty($session['speakers'])) { echo '
'; foreach ($session['speakers'] as $speaker) { echo '
'; echo '
' . get_the_post_thumbnail($speaker->ID, 'thumbnail') . '
'; echo '
' . esc_html(get_the_title($speaker->ID)) . '
'; echo '
'; } echo '
'; } echo '
'; echo '
'; } echo '
'; $day_index++; } echo '
'; // JS for tab switching ?>