Hello,
I can help give you some information on the global filter/function of some sort that will hide “past events” from a query.
Our queries to get events include this:
'eventDisplay' => 'upcoming'
That is our argument to only get upcoming events. You can use ‘past’ and ‘all’.
Since that is done in a query it is not used on the Single Events Template.
There are many conditionals to use if you would like to check if an event has passed, here is a good source:
https://gist.github.com/jo-snips/2415009
You could then follow our themer’s guide to make modifications to the single-event template to hide content after the event is over.
https://theeventscalendar.com/support/documentation/events-calendar-themers-guide/
There is also an unofficial plugin called Event Rocket that cleans up past events if you would like to remove them.
Event Rocket
Does that help?
Thanks