My favourite Events Manager for WordPress is RS Events Multiday. If you’re a template hacker like me you’ll find this plugin easy to use and very flexible. Three different functions are provided and output can be conveniently customised using four HTML strings and a series of parameters. The plugin has been developed from Robert Sargant’s original RS Events by Florian Meyer. There’s lots of helpful information on how to use it on the WordPress plugin page and on Florian’s website.

I recently wanted to show events from a series of event categories and style the output differently for each category. This turned out to be a bit beyond the scope of the HTML parameters but Florian very kindly came up with a modified loop that did the job. I’ve reproduced the loop below in case it’s helpful to other users. It’s in use at constantinecornwall.com. I’m sure it could be further adapted to provide many other ways of showing events.

<?php 
/* get IDs of event-posts and store them in an array */
$rs_ids = array();
	$rs_ids = rs_event_id(); 

foreach($rs_ids as $rs_id) {
	 /* define query and start Loop */
	$args = array(
		'p'  => $rs_id
		);
 	$rs_id_query = new WP_Query($args);
 while ($rs_id_query->have_posts()) : $rs_id_query->the_post();
 	?>

<div class="eventlist <?php
/* give div a category id for styling 
and echo category name as title*/
foreach((get_the_category()) as $category) {
     echo 'cat' . $category->cat_ID . ' ';
 } ?>">
	<h3><?php
 		foreach((get_the_category()) as $category) {
 		echo $category->cat_name . ' ';
 		}
 	?></h3>

<?php
/* do some stuff with html and php, e.g. use rs_event_post() */
	$args = array(
		'html_post_v1' 	=>
		'<h4>%DATE% %TIME%</h4>',
 		'html_post_v2' 	=>
		'<h4>%DATE%</h4>',
 		'html_post_v3' 	=>
		'<h4>%DATE% to %ENDDATE%</h4>',
		'html_post_v4' 	=>
		'<h4>%DATE% (multi-day)</h4>',
		'date_format_1'	=> 'l jS F',
		'date_format_2'	=> 'l jS F',
 		'time_format'	=> 'g:ia',
	);
 	rs_event_post($args) ?>

 	<h5><?php the_title(); ?></h5>
	<?php the_content(); ?>
 <div style="clear:both"></div>
</div>
	 <?php
/* end Loop */
	endwhile;
/* end foreach */
 	} ?>