Das ist eher was für Fortgeschrittene. Zunächst brauchst Du ein benutzerdefiniertes Feld, in den Du das Datum der Veranstaltung einträgst, meinetwegen end-date, damit WP das Datum der Veranstaltung auslesen kann.
Und dann, ungefähr so (ungetestet):
PHP
$today = date('Ymd');
$args = array(
'post_type' => 'post',
'meta_key' => 'end-date',
'meta_query' => array(
array(
'key' => 'end-date'
),
array(
'key' => 'end-date',
'value' => $today,
'compare' => '>='
)
),
'orderby' => 'meta_value',
'order' => 'ASC'
);
$custom_query = new WP_Query($args);
Alles anzeigen
Und das schreibst Du jetzt vor den Loop, so dass Du jetzt sowas im Loop hast
PHP
?php while ($custom_query->have_posts()) : $custom_query->the_post(); ?>
<!-- Do code stuff... -->
<?php endwhile; ?>
Am besten fertigst Du dir dafür ein Custom-Template an, indem Du index.php kopierst und das vor den Loop schreibst und an den Anfang
Dann legst Du eine neue Seite an und schaust. WP müsste jetzt die Posts anzeigen, die vom end-date später oder gleich heute sind und diese nach end-date aufsteigend ordnen.