<?php
/*
* Prevent duplicate recerrence when using [events_list view="grid" scope="future"]
*/
add_filter( 'em_events_output_events', function( $events, $events_count, $args ) {
$unique_events = array();
$seen_recurrences = array();
$today = current_time( 'Y-m-d' );
foreach ( $events as $EM_Event ) {
if (
! empty( $EM_Event->event_type ) &&
$EM_Event->event_type === 'recurrence' &&
in_array( $args['scope'] ?? '', array( 'all', 'future' ), true )
) {
$recurrence_id = $EM_Event->post_id;
// Skip past recurrence events.
if ( $EM_Event->event_end_date < $today ) {
continue;
}
// Skip duplicate recurrence events.
if ( in_array( $recurrence_id, $seen_recurrences, true ) ) {
continue;
}
// Mark this recurrence as seen.
$seen_recurrences[] = $recurrence_id;
}
$unique_events[] = $EM_Event;
}
return $unique_events;
}, 10, 3 );
Comments
0 B
|0 👍
/0 👎