eventsmanager

Prevent duplicate recerrence when using [events_list]

Sep 2nd, 2026
10,060
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4. * Prevent duplicate recerrence when using [events_list view="grid" scope="future"]
  5. */
  6.  
  7. add_filter( 'em_events_output_events', function( $events, $events_count, $args ) {
  8.  
  9. $unique_events = array();
  10. $seen_recurrences = array();
  11. $today = current_time( 'Y-m-d' );
  12.  
  13. foreach ( $events as $EM_Event ) {
  14.  
  15. if (
  16. ! empty( $EM_Event->event_type ) &&
  17. $EM_Event->event_type === 'recurrence' &&
  18. in_array( $args['scope'] ?? '', array( 'all', 'future' ), true )
  19. ) {
  20.  
  21. $recurrence_id = $EM_Event->post_id;
  22.  
  23. // Skip past recurrence events.
  24. if ( $EM_Event->event_end_date < $today ) {
  25. continue;
  26. }
  27.  
  28. // Skip duplicate recurrence events.
  29. if ( in_array( $recurrence_id, $seen_recurrences, true ) ) {
  30. continue;
  31. }
  32.  
  33. // Mark this recurrence as seen.
  34. $seen_recurrences[] = $recurrence_id;
  35. }
  36.  
  37. $unique_events[] = $EM_Event;
  38. }
  39.  
  40. return $unique_events;
  41.  
  42. }, 10, 3 );
Advertisement