'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
?>