WordPress.org

Ready to get started?Download WordPress

Plugin Directory

AM Events

Adds an event post type with an interface and template tags similar to normal posts. Also includes a customizable widget for upcoming events.

Widget

Here are the shortcodes available in the upcoming events widget template.

  • [event-title]
  • [start-date]
  • [end-date]
  • [event-venue]
  • [event-category]
  • [content]
  • [excerpt]
  • [permalink]

Conditional shortcodes:

  • [if cond="startdate-is-enddate"]
  • [if cond="startdate-not-enddate"]
  • [if cond="startday-is-endday"]
  • [if cond="startday-not-endday"]

The title can be linked to the event post with the 'link' attribute, e.g. [event-title link=true]

The category and venue can also be linked similarly to their respective archive pages using the 'link' attribute, e.g. [event-category link=true]

The number of words displayed in the title, content or excerpt can be limited by the 'limit' attribute, e.g. [content limit=25] or [event-title limit=10].

The dates can be formatted using the 'format' attribute, e.g. [start-date format='d.m.Y H:i'] (see PHP date for formatting options). If no format is given, the default WordPress date format is used.

You can use any shortcode as many times as needed in a single template. To separate date and time of start date for example you could write:

[start-date format='d.m.Y'] 
<span>divider</span>
[start-date format='H:i']

Example usage of conditional shortcode:

[start-date format='D d.m.Y H:s'] 
[if cond='startdate-not-enddate']
 - [end-date format='D d.m.Y H:s'] 
[/if]

Template tags

Template tags were introduced in version 1.3.0 and are listed below. More documentation can be found in the source files.

// Template tags for getting and displaying event dates
am_the_startdate($format = 'Y-m-d H:i:s', $before = '', $after = '', $echo = true)
am_get_the_startdate( $format = 'Y-m-d H:i:s', $post = 0 )
am_the_enddate($format = 'Y-m-d H:i:s', $before = '', $after = '', $echo = true)
am_get_the_enddate( $format = 'Y-m-d H:i:s', $post = 0 )

// Template tags for getting and displaying event venues
am_get_the_venue( $id = false )
am_in_venue( $venue, $post = null )
am_get_the_venue_list( $separator = '', $parents='', $post_id = false )
am_the_venue( $separator = '', $parents='', $post_id = false )

// Template tags for getting and displaying event categories
am_get_the_event_category( $id = false )
am_get_the_event_category_list( $separator = '', $parents='', $post_id = false )
am_in_event_category( $eventCategory, $post = null )
am_the_event_category( $separator = '', $parents='', $post_id = false )

Example of displaying the first category of the current event post:

$categoryArray = am_get_the_event_category();
echo $categoryArray[0]->name;

Creating a WP_Query

The custom post type is named 'am_event' The taxonomies are named 'am_venues' and 'am_event_categories'.

The event post has metadata named 'am_startdate' and 'am_enddate' that are formatted like 'yyyy-mm-dd hh:mm'

So suppose I wanted to display all events with a category of 'other' and venue 'mcdonalds'. I would then make a WP_Query like this:

$args = array(
        'post_type' => 'am_event',
        'post_status' => 'publish',
        'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'am_venues',
                    'field' => 'name',
                    'terms' => 'mcdonalds',
                ),
                array(
                    'taxonomy' => 'am_event_categories',
                    'field' => 'name',
                    'terms' => 'other'
                ),
        ),
    );

$the_query = new WP_Query($args);

if ($the_query->have_posts()) {
    while ($the_query->have_posts()) {
        $the_query->the_post();

        $postId = $post->ID;

        // Use template tags to get start and end date
        $startDate = am_get_the_startdate('Y-m-d H:i:s');
        $endDate = am_get_the_enddate('Y-m-d H:i:s');

        // Use template tags to get venues and categories in an array
        $venues = am_get_the_venue( $postId );
        $eventCategories = am_get_the_category( $postId );

        // All the other functions used for posts like
        // the_title() and the_content() work just like with normal posts.

        // ...  DISPLAY POST CONTENT HERE ... //

    }
}

If you want the events ordered by start date, add the following to $args:

'orderby' => 'meta_value',
'meta_key' => 'am_startdate',
'order' => 'ASC',

If you need to display only upcoming events, add the following meta_query argument to $args:

'meta_query' => array(
        array(
            'key' => 'am_enddate',
            'value' => date('Y-m-d H:i:s', time()),
            'compare' => ">",
        ),
),

The plugin folder also contains a file "examples.php", which contains an example function for displaying upcoming events in a table.

Requires: 3.3.1 or higher
Compatible up to: 3.9.2
Last Updated: 2014-5-27
Downloads: 3,866

Ratings

5 stars
5 out of 5 stars

Support

0 of 1 support threads in the last two months have been resolved.

Got something to say? Need help?

Compatibility

+
=
Not enough data

0 people say it works.
0 people say it's broken.

100,1,1
100,1,1 100,1,1
100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1
100,2,2
100,1,1 100,1,1