=== AM Events === Contributors: Moisture Tags: events, event, venue, calendar, dates, date, list, workshop, concert, meeting, summit, class, upcoming, widget Requires at least: 3.3.1 Tested up to: 4.8.3 Stable tag: 1.13.1 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Manage and display your events. Allows fully customizable layouts and includes a widget for upcoming events. == Description == The purpose of this plugin is to add an event type similar to the normal post type. By design this plugin doesn't provide any ready-made layouts, and allows the events to be fully integrated and customized to the theme of your choosing. === Current Features === * Admin pages to view/create/modify events. * Available data fields for events: start date, end date, venue, category * Create weekly or biweekly recurring events * Fully customizable widget for displaying upcoming events. The custom post type created by the plugin is named 'am_event' and has two taxonomies: 'am_event_categories' and 'am_venues'. Dates are stored as post metadata. Displaying the events is done in the theme files using WP_Query and the template tags provided by the plugin. This allows full control over the layout and what elements to show. The widget for displaying upcoming events uses a simple template system for full control of the layout. If you think something critical is missing, feel free to send me a request. The plugin is available in the following languages (pot-file included for additional translations): * English * French * Norwegian * Finnish == Installation == This section describes how to install the plugin and get it working. 1. Upload folder `am-events` to the `/wp-content/plugins/` directory 2. Activate the plugin through the 'Plugins' menu in WordPress == Screenshots == 1. Creating an event 2. Widget administration 3. Example page with events and the widget. == Changelog == = 1.13.1 = * Fix PHP debug error on some admin pages = 1.13.0 = * Replace jQuery datetimepicker with flatpickr = 1.12.0 = * Updated jQuery UI date/time picker = 1.11.0 = * Added new conditional shortcodes for venues and categories = 1.10.0 = * Added hooks for including extra fields to event posts * Added [meta] shortcode for widget = 1.9.8 = * Fixed problem with tags = 1.9.7 = * Fixed admin panel event list ordering = 1.9.6 = * Fixed tags being stripped from recurring events = 1.9.5 = * Fixed compatibility with WordPress 4.3 = 1.9.4 = * Fixed date localization issues = 1.9.3 = * Fixed widget category and venue filtering bug = 1.9.2 = * Translation fixes. * Added thumbnail shortcode to widget = 1.9.1 = * Fixed bug when removing event categories from recurring events = 1.9.0 = * Improved handling of recurring events * Added start and end dates to quick edit = 1.8.0 = * Added conditional tags for the widget = 1.7.1 = * Added French language = 1.7.0 = * Added option to change slug for event posts * Added [excerpt] shortcode for the widget * Added customizable "No upcoming events" message to widget * Added option to change how long passed events are shown in the widget = 1.6.0 = * Added option to change time picker minute step * Fixed featured image and excerpts not copying when creating recurrent events = 1.5.1 = * Fixed a few minor bugs = 1.5.0 = * Added support for thumbnail and excerpt for event posts = 1.4.0 = * Added new improved widget template shortcode system = 1.3.1 = * Fixed minor bugs in template tags = 1.3.0 = * Added template tags for getting and displaying event data = 1.2.1 = * Fixed localization typos * Added simple WP_Query tutorial in 'Other Notes' = 1.2.0 = * Added support for PHP 5.2 (previously needed 5.3) * Fixed multiple bugs = 1.1.0 = * Added localization to date format = 1.0.1 = * Fixed bugs in the upcoming events -widget * Added missing examples.php = 1.0.0 = * First released/stable version == Upgrade Notice == = 1.13.1 = * Fixes a debug PHP error on some admin pages = 1.13.0 = * Replaces jQuery datepicker with flatpickr = 1.12.0 = * Updates jQuery UI date/time picker = 1.11.0 = * Adds new conditional shortcodes for venues and categories = 1.10.0 = * Adds hooks for including extra fields to event posts * Adds [meta] shortcode for widget = 1.9.8 = * Fixes problems with tags = 1.9.7 = * Fixes admin panel event list ordering = 1.9.6 = * Fixes tags being stripped from recurring events = 1.9.5 = * Fixes compatibility with WordPress 4.3 = 1.9.4 = * Fixes date localization issues. = 1.9.3 = * Fixes widget category and venue filtering bug = 1.9.2 = * Adds thumbnail shortcode for widget * Fixes some translations = 1.9.1 = * Fixes a bug when removing event categories from recurring events = 1.9.0 = * Improves handling of recurring events * Adds start and end date to quick edit * Many small improvements = 1.8.0 = * Adds conditional tags for the widget = 1.7.1 = * Adds French language = 1.7.0 = * Adds option to change slug for event posts * Adds [excerpt] shortcode for the widget * Adds customizable "No upcoming events" message to widget * Adds option to change offset for events shown in the widget = 1.6.0 = * Adds option to change time picker minute step * Fixes featured image and excerpts not copying when creating recurrent events = 1.5.1 = * Fixes a few minor bugs = 1.5.0 = * Adds support for thumbnails and excerpts = 1.4.0 = * Adds new improved widget shortcode system = 1.3.1 = * Fixes minor bugs in template tags = 1.3.0 = * Adds template tags for getting/displaying event data = 1.2.1 = * Fixes localization typos * Adds simple WP_Query tutorial to readme.txt = 1.2.0 = * Adds support for php 5.2 (previously needed 5.3) * Fixes bugs. = 1.1.0 = * Adds localization support for date format. = 1.0.1 = * Fixes bugs in the upcoming events -widget == TUTORIAL == For integrating AM Events to an existing theme, I suggest creating a [child theme](http://codex.wordpress.org/Child_Themes) with custom page templates. You can find an example of a working Twenty Twelve child theme from [https://github.com/attemoi/am-events-child-theme](https://github.com/attemoi/am-events-child-theme) containing three different page templates for event pages. = Widget = Here are the shortcodes available in the upcoming events widget template. * [event-title] * [start-date] * [end-date] * [event-venue] * [event-category] * [content] * [thumbnail] * [excerpt] * [permalink] * [meta] Conditional shortcodes: * [if cond="startdate-is-enddate"] * [if cond="startdate-not-enddate"] * [if cond="startday-is-endday"] * [if cond="startday-not-endday"] * [if cond="has-venue"] * [if cond="has-category"] 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](http://php.net/manual/en/function.date.php) 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'] divider [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.