SarahMoyer
3/26/2019 - 12:54 PM

Shortcode - The Events Calendar by Modern Tribe - WordPress plugin

offset events, show event date

How to use this shortcode

Here is info on how to use and customize the events shortcode for The Events Calendar by Modern Tribe WordPress plugin. The events shortcode displays a list of your events wherever you want them to appear on your site.

All parameters of the shortcode:

[my_events cat='art-gallery' offset='1' limit='3' featured='yes' past='yes']

For example of a specific use, here is the shortcode to show next 8 events in the category festival:

[my-events cat='festival' limit='8']

Basic shortcode

[my-events]

Shortcode Options

cat

Represents single event category. Do not use multiple categories in the same shortcode.

[my-events cat='festival']

offset

To skip or pass over events (for example, if you pull in the first event elsewhere on the page). Default is 0.

[my-events cat='festival' offset='1']

limit

Total number of events to show. Default is all upcoming events.

[my-events cat='festival' limit='3']

featured

Show large image above text

[my-events cat='festival' featured='yes']

past

Show outdated events (ie. events that have already happened)

[my-events cat='festival' past='yes']

Display events the way you need to

Use case

This shortcode is useful to offset events or show event date rather than date posted. The shortcode can be used anywhere that shortcodes can be: on a WordPress page, post, widget, etc.

You can, of course, add to the shortcode to make it how you like.

References

For WP Query: https://codex.wordpress.org/Class_Reference/WP_Query

For past events parameter: https://support.theeventscalendar.com/666307-Using-tribe_get_events

//* Add Shortcode [my_events cat='art-gallery' offset='1' limit='3' featured='yes' past='yes']
add_shortcode( 'my-events', 'my_events_function' );
function my_events_function( $atts ){

  // Add shortcode attributes
  $a = shortcode_atts( array(
      'cat' => '',
      'offset' => 0,
      'limit' => -1,
      'featured' => '',
      'past' => '',
  ), $atts );
    
	// Variables for the attributes
  $my_events_cat = "{$a['cat']}";
  $my_events_offset = "{$a['offset']}";
  $my_events_limit = "{$a['limit']}";
  $my_events_featured = "{$a['featured']}";
  $my_events_past = "{$a['past']}";
	
	// Variables for featured layout
	if( $antioch_events_featured === 'yes' ) {
		$my_events_class = 'antioch-events-featured';
		$my_events_content = 'yes';
		$my_events_img_size = 'et-pb-post-main-image';
	} else {
		$my_events_class = 'antioch-events';
		$my_events_content = '';
		$my_events_img_size = 'thumbnail';
	}
	
	// Variables for past events
	if( $my_events_past === 'yes' ) {
		$my_events_eventDisplay = 'past';
	} else {
		$my_events_eventDisplay = 'upcoming';
	}	

	// Query arguments if no category is entered
	if ( empty( $antioch_events_cat ) ) {
		$args = array( 
			'post_type' 		=> 'tribe_events', 
			'posts_per_page' => $my_events_limit,
			'eventDisplay' 	=> $my_events_eventDisplay, // this parameter is from TEC plugin, must have to show past events
			'offset' 		=> $my_events_offset,
		);

	// Query arguments if category is entered
	} else {		
		$args = array( 
			'post_type' 		=> 'tribe_events', 
			'posts_per_page' => $my_events_limit,
			'eventDisplay' 	=> $my_events_eventDisplay,
			'offset' 		=> $my_events_offset,
			'tax_query' 		=> array( array(
				'taxonomy' 		=> 'tribe_events_cat',
				'field'    		=> 'slug',
				'terms'    		=> $my_events_cat,
			), ),
		);
	}
	
	// The loop
	$loop = new WP_Query( $args );
	
		$data = ''; // init
		$data .= sprintf( '<div class="clearfix %s">', $my_events_class );				
		
		while ( $loop->have_posts() ) : $loop->the_post();
					
			// Get Featured Image for later, otherwise get placeholder image
			$thumbnail = get_the_post_thumbnail( $loop->ID, $my_events_img_size );

			// If no Featured Image and Featured layout, get large placeholder image for later
			if ( empty( $thumbnail ) && $my_events_featured != 'yes' ) 
				$thumbnail = '<img src="/wp-content/uploads/placeholder-150x150.jpg" alt="Placeholder" width="150" height="150">';

			// If no Featured Image and not Featured layout, get small placeholder image for later
			if ( empty( $thumbnail ) && $my_events_featured === 'yes' ) 
				$thumbnail = '<img src="/wp-content/uploads/placeholder-400x250.jpg" alt="Placeholder" width="400" height="250">';

    	$data .= sprintf( '<article class="et_pb_post clearfix">' );
		  $data .= sprintf( '<div class="et_pb_image_container"><a href="%s" title="See event details">%s</a></div>', get_permalink(), $thumbnail ); 
		    
			// If Featured layout, display title, date, content
			if( $antioch_events_featured === 'yes' ) {
			    $data .= sprintf( '<h4 class="entry-title"><a href="%s" title="See event details">%s</a></h4>', get_permalink(), get_the_title() ); 
			    $data .= sprintf( '<p class="event-meta"><a href="%s" title="See event details">%s</a></p>', get_permalink(), tribe_events_event_schedule_details() ); 
			    $data .= sprintf( '<div class="post-content"><p>%s</p><a href="%s" class="more-link">Read More</a></div>', get_the_excerpt(), get_permalink() ); 
			}
		    
			// If not Featured layout, display date, title
			if( $my_events_featured != 'yes' ) {
			    $data .= sprintf( '<p class="event-meta">%s</p>', tribe_events_event_schedule_details() ); 
			    $data .= sprintf( '<h4 class="entry-title">%s</h4>', get_the_title() ); 
			}
			
			$data .= sprintf( '</article>' ); // END et_pb_post class
			
		endwhile; 
	
		$data .= sprintf( '</div>' ); // END my-events class
				
		return $data; // spits data out on the page
	
	wp_reset_postdata();
	
} // END my_events_function

[ file under: Notes ]

The Events Calendar

Pull in events using various options.

Shortcode options:

[my_events cat='art-gallery' offset='1' limit='3' featured='yes' past='yes']

Here is info on how to use and customize the shortcode: