Title: Mayo Events Manager
Author: bmltenabled
Published: <strong>March 18, 2025</strong>
Last modified: August 19, 2026

---

Search plugins

![](https://ps.w.org/mayo-events-manager/assets/banner-772x250.png?rev=3286993)

![](https://ps.w.org/mayo-events-manager/assets/icon-256x256.png?rev=3286993)

# Mayo Events Manager

 By [bmltenabled](https://profiles.wordpress.org/bmltenabled/)

[Download](https://downloads.wordpress.org/plugin/mayo-events-manager.1.9.5.zip)

 * [Details](https://vec.wordpress.org/plugins/mayo-events-manager/#description)
 * [Reviews](https://vec.wordpress.org/plugins/mayo-events-manager/#reviews)
 *  [Installation](https://vec.wordpress.org/plugins/mayo-events-manager/#installation)
 * [Development](https://vec.wordpress.org/plugins/mayo-events-manager/#developers)

 [Support](https://wordpress.org/support/plugin/mayo-events-manager/)

## Description

Pronounced “my-oh”. Referring to the Spanish word “mayo” which means “May” in English.
Mayo Event Manager is a comprehensive WordPress plugin designed to facilitate the
management of events with a focus on community engagement and administrative oversight.
This plugin allows users to submit events for approval, supports recurring event
schedules, and integrates seamlessly with WordPress’s native features like featured
images and custom post types. Mayo is meant to be simple, and does not provide all
the functionality of a typical event management system. It is designed to be used
in conjunction with a BMLT server to provide a simple way to submit events for a
specific service body. Also we will not be implementing a calendar view, but rather
a list view. There are plenty of other plugins that provide calendar views, and 
you can make use of the calendar RSS to import the feeds you want.

Dependency on Pretty Permalinks: The REST API utilizes the same URL rewriting functionalities
that pretty permalinks employ to map its human-readable routes (like /wp-json/wp/
v2/posts) to the appropriate internal processes. If your site uses the “Plain” permalink
setting (which is the default in some cases), the REST API endpoint may not function
correctly, leading to 404 errors when attempting to access /wp-json/.

 1.  Event Submission and Approval:
 2.   * Users can submit events through a public-facing form.
      * Submitted events are saved as pending, requiring admin approval before they
        are published.
      * Admins receive email notifications upon new event submissions, ensuring timely
        review and approval.
 3.  Recurring Events:
 4.   * Supports daily, weekly, and monthly recurring event patterns.
      * Users can specify recurrence intervals and end dates.
      * Recurring events are automatically generated based on the specified pattern.
 5.  Event Details and Customization:
 6.   * Events can include detailed information such as event type, start and end dates,
        times, and location details.
      * Supports the use of WordPress’s featured image functionality to visually represent
        events.
      * Allows categorization and tagging of events for better organization and filtering.
 7.  Service Body Integration:
 8.   * Integrates with external service bodies, allowing users to associate events
        with specific service organizations.
      * Fetches and displays service body information dynamically.
 9.  Email Notifications:
 10.  * Sends email notifications to the site admin when a new event is submitted.
      * Ensures that admins are promptly informed of new submissions for review.
 11. REST API Integration:
 12.  * Provides REST API endpoints for submitting events, retrieving event details,
        and managing settings.
      * Facilitates integration with other systems and custom front-end applications.
 13. User-Friendly Interface:
 14.  * Intuitive form interface for event submission, including validation for required
        fields like email.
      * Admin interface for managing events, including viewing, editing, and approving
        submissions.
 15. Event Announcements:
 16.  * Display event-based announcements as banners or modals to highlight important
        information.
      * Use events to announce meeting closures, moves, new meetings, or promote upcoming
        events.
      * Events show as announcements when today’s date falls between the event’s start
        and end dates.
      * Supports filtering by categories and tags to control which events appear as
        announcements.
      * Dismissable with 24-hour persistence – users can re-open via a bell icon.

### Announcement Feature

The announcement feature allows you to display event-based announcements prominently
on your site. This is useful for:
 * Meeting closures or changes * New meeting announcements*
Breaking news or important updates * Promoting upcoming events

Shortcode Usage:

    ```
    [mayo_announcement] - Display announcements with default settings (banner mode)

    [mayo_announcement mode="modal"] - Display as a modal popup instead of banner

    [mayo_announcement categories="announcements,alerts"] - Filter by category slugs

    [mayo_announcement tags="urgent,featured"] - Filter by tag slugs

    [mayo_announcement time_format="24hour"] - Use 24-hour time format

    [mayo_announcement background_color="#ff6600" text_color="#ffffff"] - Custom colors

    [mayo_announcement background_color="#dc3545" text_color="#fff" categories="alerts"] - Red alert style
    ```

Parameters:
 * mode – “banner” (sticky top bar) or “modal” (popup). Default: “banner”*
categories – Comma-separated category slugs to filter events * tags – Comma-separated
tag slugs to filter events * time_format – “12hour” or “24hour”. Default: “12hour”*
background_color – Custom background color (hex, e.g., “#ff6600”). Default: CSS 
default * text_color – Custom text color (hex, e.g., “#ffffff”). Default: CSS default

Widget Usage:

For site-wide announcements without editing templates, use the “Mayo Event Announcements”
widget:
 1. Go to Appearance > Widgets 2. Add the “Mayo Event Announcements” widget
to any widget area (footer recommended for site-wide display) 3. Configure the display
mode, categories, tags, and time format

How It Works:
 * Events appear as announcements when today’s date is between the
event’s start_date and end_date * Banner mode shows a fixed bar at the top of the
viewport with carousel navigation for multiple events * Modal mode shows a centered
popup with a list of all matching events * When dismissed, announcements stay hidden
for 24 hours but can be re-opened via a bell icon in the bottom-right corner

### Additional Information

Mayo WordPress Plugin

A WordPress plugin for managing and displaying events from a BMLT root server.

CSS Documentation

The plugin includes documentation for the dynamic CSS classes used in the Event 
Card component. This helps developers understand and customize the appearance of
events on their site.

Important Note About Styling

This plugin does not include a built-in CSS editor. To style the event cards, you
need to use another plugin like “Simple Custom CSS” or add CSS to your theme’s stylesheet.
The documentation is provided to help you understand which CSS classes are available
for styling.

Viewing the Documentation

The CSS documentation is available in the WordPress admin area under the Mayo menu.
It includes:

 * Dynamic classes generated based on event properties
 * Examples of how to customize the appearance

Customization

You can customize the appearance of events by adding CSS rules to your theme or 
using a custom CSS plugin. The documentation provides examples of common customizations,
such as:

 * Styling specific categories or tags
 * Customizing the appearance of different event types
 * Adding styles for specific service bodies

Recommended CSS Plugins

 * Simple Custom CSS (https://wordpress.org/plugins/simple-custom-css/)
 * Custom CSS and JS (https://wordpress.org/plugins/custom-css-js/)
 * Advanced Custom CSS (https://wordpress.org/plugins/advanced-custom-css/)

Development

Prerequisites

 * Node.js (v14 or higher)
 * npm (v6 or higher)

Installation

 1. Clone the repository
 2. Install dependencies:
 3. npm install
 4. Build the plugin:
 5. npm run build

Development Workflow

 1. Start the development server:
 2. npm run dev
 3. Make changes to the code
 4. Rebuild the plugin as needed

License

This project is licensed under the GPL v2 or later.

### Technical Details

 * Custom Post Type: Utilizes a custom post type `mayo_event` to store and manage
   events.
 * JavaScript Components: Built with React and integrated into the WordPress admin
   and front-end using Gutenberg components.
 * Email Handling: Uses WordPress’s `wp_mail` function to send notifications.
 * Data Storage: Stores event metadata using WordPress’s post meta system, ensuring
   compatibility and scalability.

## Installation

 1. Installation:
 2.  * Upload the plugin files to the `/wp-content/plugins/mayo-event-manager` directory.
     * Activate the plugin through the ‘Plugins’ menu in WordPress.
 3. Configuration:
 4.  * Set up the BMLT root server URL in the plugin settings for service body integration.
     * Configure email settings to ensure notifications are sent correctly.
 5. Usage:
 6.  * Use the provided shortcode or block to display the event submission form on 
       any page.
     * Manage submitted events from the WordPress admin dashboard, where you can approve,
       edit, or delete events.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Mayo Events Manager” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ bmltenabled ](https://profiles.wordpress.org/bmltenabled/)
 *   [ radius314 ](https://profiles.wordpress.org/radius314/)

[Translate “Mayo Events Manager” into your language.](https://translate.wordpress.org/projects/wp-plugins/mayo-events-manager)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/mayo-events-manager/),
check out the [SVN repository](https://plugins.svn.wordpress.org/mayo-events-manager/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/mayo-events-manager/)
by [RSS](https://plugins.trac.wordpress.org/log/mayo-events-manager/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.9.5

 * Fixed the event and announcement submission forms overflowing their container
   and clipping the Hour/Minute/AM-PM time dropdowns when the form is placed in 
   a narrow column, such as a page with a fixed or sticky sidebar. The date and 
   time controls now wrap to fit the space available and the dropdowns keep a legible
   minimum width, so the “Hour” and “Min” labels and selected values are no longer
   cut off. [#328]

#### 1.9.4

 * Fixed event submission form showing empty Categories or Tags section headers 
   when `categories="none"` or `tags="none"` is used in `[mayo_event_form]`. [#325]
 * Documented that category and tag names with spaces should use dashes in shortcode
   parameters (e.g., a category named “Cell Awareness” is specified as `cell-awareness`
   in `[mayo_announcement_form]`). [#321]
 * Fixed required start/end date and time fields on the announcement submission 
   form not showing an asterisk (*) on their labels when marked required via `additional_required_fields`.
   The optional “Leave empty to…” hints are now hidden when those fields are required.[#
   319]
 * Fixed the event filters resetting the calendar back to the current month: selecting
   a Service Body, Category, Tag, or Event Type filter now keeps the month you had
   navigated to instead of jumping back to today. [#251]
 * Fixed the filter dropdown staying open after you pick a value; it now closes 
   automatically so it no longer covers the first days of the calendar. [#251]
 * Fixed external feed sources ignoring the Event Type filter: filtering on Service(
   or Activity) now actually hides the other types coming from external feeds, even
   when the remote runs an older version or isn’t a Mayo site. [#251]

#### 1.9.3

 * Fixed display filters not combining correctly across local and external event
   feeds: selecting a category or tag that exists only on an external source now
   hides all local events instead of showing every local match for the other facets.[#
   323]
 * Fixed external feed events not being re-filtered locally for Service Body and
   Tag selections, which could let non-matching events leak through from older or
   non-Mayo remote sites. [#323]
 * Added a “Relative to a monthly day” monthly recurrence option so committee meetings
   can be scheduled relative to a monthly anchor (e.g. the Monday before the 3rd
   Tuesday, or the Thursday after it). Available in the block-editor Event sidebar.[#
   312]

#### 1.9.2

 * Fixed the event and announcement submission forms overlapping the End Date/Time
   field on top of the Start Date/Time field, which happened after Start/End time
   became Hour/Minute/AM-PM dropdowns. [#310]
 * Added date defaults to the event submission form: the Start Date now pre-fills
   to today’s date and the End Date automatically matches the Start Date (until 
   you set a different end date), so single-day events need only one date entry.[#
   301]
 * Added a JavaScript example (docs/rest-api-javascript-example.md) showing how 
   to pull events from the REST API filtered by service body and tag, resolving 
   the human-readable names to the id/slug the API expects via the facets endpoint.[#
   302]
 * Fixed the event and announcement submission forms forcing 24-hour (“military”)
   time entry regardless of site settings. Start/End time now follow the WordPress“
   Time Format” setting (Settings  General), showing 12-hour Hour/Minute/AM-PM selects
   by default, and can be overridden per form with a new `time_format="12hour|24hour"`
   shortcode option. [#300]
 * Fixed the calendar view showing an unnecessary scrollbar on every day cell. Day
   cells now only scroll internally when they actually contain more events than 
   fit. [#298]
 * Added event-type exclusion to the event list: prefix a type with “-” to hide 
   it (e.g. `event_type="-Celebration"` shows Service and Activity events), or list
   the types to keep (`event_type="Service,Activity"`). Exclusion is future-proof—
   any event types added later stay visible automatically. [#296]
 * Fixed external feed sources ignoring their configured category filter: a category
   set on an external source now actually narrows which events are imported, even
   when the remote site runs an older version, isn’t a Mayo site, or uses different
   category slugs. Previously an unmatched category was silently dropped and the
   source returned all of its events. Sources with no category configured are unaffected.[#
   292]

#### 1.9.1

 * Fixed the event list filter bar omitting event types that had no currently scheduled
   events; the Event Type filter now always offers the full set (Service, Activity,
   Celebration) regardless of what’s on the calendar. [#290]
 * Fixed a race where toggling filters while the event list was still loading could
   leave the selection in an inconsistent state; the filter bar is now disabled (
   greyed out) while a request is in flight. [#290]
 * Added an optional private phone-number contact field to the event and announcement
   submission forms. It is hidden by default and enabled per-form with the new `
   show_phone` shortcode option; add `phone` to `additional_required_fields` to 
   make it mandatory. Like the contact email, the number is stored privately for
   organizers and is never displayed publicly. [#288]
 * Bumped declared WordPress compatibility to 7.0 (Tested up to) and added matching`
   Requires at least` and `Tested up to` headers to the main plugin file so the 
   WordPress.org parser sees consistent values. [#286]
 * Updated the build-time axios dependency to resolve npm security advisories. The
   dependency is dev-only and never ships to site visitors. [#284]
 * Added validation of the BMLT root server URL on save: malformed URLs and hosts
   that aren’t a reachable BMLT root server are now rejected with a clear error 
   instead of being saved silently, plus a “Test connection” button in Settings 
   to verify the server without saving. [#282]
 * Fixed external feed sources ignoring the visitor’s event type and service body
   filters; user-selected filters now override each source’s admin-pinned defaults
   so a “Service” filter no longer surfaces “Activity” events pulled from a remote
   feed. [#279]
 * Added a subscribable ICS calendar feed so Google Calendar, Apple Calendar, and
   Outlook keep syncing newly approved events automatically. The calendar icon on
   the event list now opens a Subscribe panel with the feed URL, a webcal:// quick-
   subscribe link, a one-time .ics download, and Google Calendar instructions. Recurring
   events now emit proper RRULE/EXDATE so series display as a single repeating event
   in subscribers’ calendars instead of one-shot duplicates, and each event’s original
   timezone is preserved via VTIMEZONE blocks. [#277]

#### 1.9.0

 * Added a filter bar above the event list and calendar. Visitors pick filters from
   compact dropdowns (event type, service body, category, tag); selected values 
   appear as removable chips and combine with OR semantics within a facet and AND
   across facets. Options are populated from the actual events in scope, including
   service bodies surfaced by external feeds, and any filter pinned by a shortcode
   attribute stays locked. [#251]
 * Fixed issue with long caching mechanisms like Cloudflare to avoid using nonces
   for readonly API calls [#271]
 * Added multilingual support: the plugin now declares the `mayo-events-manager`
   text domain, ships a `languages/mayo-events-manager.pot` template, and loads 
   PHP and JavaScript translations so events, announcements, forms, subscription
   pages, and admin labels can be translated into any locale. [#268]
 * Added pre-populated translation files for Spanish (es_ES), Portuguese-Brazil (
   pt_BR), and French (fr_FR) with best-guess translations for all 354 strings. [#
   268]
 * Generate compiled translation files (`.mo`, per-handle `.json`) at release time
   from `.po` sources instead of committing them, keeping the repository free of
   derived artifacts. [#273]

#### 1.8.9

 * Added “Celebration” as a third event type option, allowing users to mark clean-
   time celebration dates/times alongside Service and Activity events.
 * Fixed archive mode incorrectly showing future multi-day events. Archive now requires
   both start and end dates to be before today. [#265]
 * Fixed mayo-public script and style cache never invalidating across plugin upgrades
   by using MAYO_VERSION for cache-busting. [#264]
 * Fixed calendar/event list failing to load on CDN-cached pages due to stale nonce
   in API requests. Public GET endpoints no longer send X-WP-Nonce header. [#271]

#### 1.8.8

 * Fixed release workflow fetching release-notes-tool from stale `master` branch
   instead of `main`, which caused GitHub Release notes to be truncated.
 * Added copy-to-clipboard button for external source IDs in Settings, making IDs
   easier to select and copy. [#254]
 * Improved external source layout with ID displayed in a distinct box on its own
   row.
 * Added diagnostic timing instrumentation to the events API for debugging slow 
   external source requests. Append `&debug=1` to see per-call timing breakdown.
 * Improved performance of external source fetching by parallelizing HTTP requests.
   Sites with multiple external sources will see significantly faster load times.
 * Changed external source event type dropdown from “Select an event type” to “All
   Event Types” to clarify that leaving it blank fetches all types.
 * Added support for comma-separated event types in the REST API (e.g., `event_type
   =Activity,Service`), enabling a single external source to fetch multiple event
   types in one request.
 * Fixed admin events list page taking minutes to load when many events exist by
   caching service body lookups instead of making an HTTP request per row.
 * Added server health check warning on settings page when PHP curl extension is
   missing, which causes significantly slower external source requests.

#### 1.8.7

 * Fixed announcement form flyer upload field never appearing even when `show_flyer
   ="true"` shortcode attribute was set. [#252]

#### 1.8.6

 * Fixed custom URLs in announcements having ampersands incorrectly HTML-encoded,
   causing links with query parameters to fail. [#249]

#### 1.8.5

 * Fixed external feed events not displaying service body names correctly. [#234]
 * Fixed events and announcements remaining visible after their scheduled end time
   passes. Previously only the end date was checked, ignoring the end time. [#237]

#### 1.8.4

 * Added custom URL/link support for announcements with selectable icons. [#227]

#### 1.8.3

 * Fixed ampersand and other HTML entities not displaying properly in announcement
   sidebar widget titles. [#222]
 * Fixed multiple announcement shortcodes on same page having conflicting dismissal
   state and overlapping bell icons.
 * Added tag AND/exclusion syntax documentation to announcement shortcode.

#### 1.8.2

 * Added category_relation parameter (AND/OR) for event list and announcement shortcodes
   to control multi-category filtering.

#### 1.8.1

 * Added start and end time fields for announcements in addition to dates.
 * Added announcement sort order options via shortcode attributes (orderby, order)
   and widget settings. Sort by date, title, or created date.
 * Some styling improvements

#### 1.8.0

 * Added email subscription feature for announcements via [mayo_subscribe] shortcode
   with double opt-in.
 * Added [mayo_announcement_form] shortcode for public announcement submissions 
   with start/end date fields.
 * Added support for linking announcements to external events from other Mayo sites.
 * Added service body tagging for announcements.
 * Added single announcement template page at /announcement/{slug}.
 * Added “Hide past events” filter to linked events modal (checked by default).
 * Fixed linked event search on the announcement page.
 * Improved calendar view to show more events per day with compact styling.
 * Added instant hover tooltips on calendar events showing time, location, type,
   and service body.

#### 1.7.0

 * Added dedicated Announcements post type (mayo_announcement) for flexible announcement
   management. [#195]
 * Announcements now have independent display windows (display_start_date/display_end_date)
   separate from events.
 * Added priority levels (low/normal/high/urgent) for announcements with priority-
   based styling and sort order.
 * Announcements can optionally be linked to one or more events for event promotions
   or recaps.
 * Added bidirectional linking UI: link events from announcement editor, view linked
   announcements from event editor.
 * Added “Create Announcement” button in event editor to quickly create an announcement
   for a specific event.
 * New REST API endpoints: GET /announcements, GET /announcement/{id}, GET /announcements/
   for-event/{event_id}.
 * Updated [mayo_announcement] shortcode with new parameters: priority, show_linked_events.
 * Added admin columns for announcement display window, priority, status (active/
   scheduled/expired), and linked events.
 * Added admin filter dropdown to filter announcements by status.
 * Updated shortcode documentation with new announcement features.
 * Fixed archive list not showing past occurrences of recurring events. [#168]
 * Fixed second event submission failing when single service body is configured.[#
   177]
 * Moved Mayo menu higher in admin sidebar (above Appearance) for easier access.

#### 1.6.1

 * Added API documentation page in the admin menu (Mayo > API) with comprehensive
   REST API reference.

#### 1.6.0

 * Added announcement feature for displaying event-based announcements as banners
   or modals.
 * Added background_color and text_color parameters to [mayo_announcement] shortcode
   and widget for custom styling.
 * New [mayo_announcement] shortcode with support for mode (banner/modal), categories,
   tags, and time_format parameters.
 * Banner mode displays a fixed top bar with carousel navigation for multiple announcements.
 * Modal mode displays a popup with a list of all active announcements.
 * Announcements use event start_date as embargo (don’t show until then) and end_date
   as expiration.
 * Added dismissal feature with 24-hour persistence – dismissed announcements show
   a bell icon with badge count to re-open.
 * New “Mayo Event Announcements” widget for displaying announcements site-wide 
   without editing templates.
 * You can now exclude categories and tags on [mayo_event_list] using the minus 
   sign.

#### 1.5.1

 * Calendar view now uses full width instead of being constrained to 800px.
 * Added dynamic CSS classes to calendar view events for custom styling by category,
   tag, event type, and service body. [#174]
 * Multi-day events now display on all days they span in calendar view, with visual
   styling to indicate start, middle, and end days. [#175]
 * Increased calendar day cell height to better accommodate multiple events.
 * Calendar view now loads events on-demand by month instead of using pagination,
   fixing issue where navigating months would not show events beyond the first page.[#
   173]
 * Moved list/calendar view toggle to the left side of the header for better visual
   hierarchy.
 * Fixed calendar view in archive mode not showing past events when navigating to
   previous months.

#### 1.5.0

 * Added calendar view for event lists – toggle between list and calendar views 
   using buttons in the header.
 * Added ‘view’ parameter to [mayo_event_list] shortcode to set default view mode(
   list or calendar).
 * Calendar view displays events in a monthly grid with navigation buttons for previous/
   next month and “Today”.
 * Clicking an event in the calendar opens a modal popup with event details instead
   of navigating away from the page.
 * Calendar view supports querystring override (?view=calendar) for dynamic view
   switching.

#### 1.4.7

 * Fixed event list display order when using order=DESC parameter – frontend now
   correctly trusts the REST API sort order instead of re-sorting events.

#### 1.4.6

 * Fix for events that have timezone set. No longer selects default timezone in 
   admin interface or shows a timezone. [#161]
 * Added ‘order’ parameter to [mayo_event_list] shortcode allowing events to be 
   sorted in ascending (ASC, earliest first) or descending (DESC, latest first) 
   order.
 * Fixed archive mode (archive=true) to show ONLY past events that have ended, excluding
   current and future events.
 * Added event filtering dropdown in admin backend to filter events by Upcoming,
   Past, or Recurring status for easier event management.

#### 1.4.5

 * Added sortable columns (Event Type, Date & Time, Service Body, Status) in WordPress
   admin backend for easier event management. [#153]
 * Improved multi-day event display to show full date range (e.g., “Oct 31, 9:00
   AM – Nov 2, 12:00 PM (EDT)”) instead of just time. [#152]
 * Fixed incorrect 24-hr format on event details page [#156]

#### 1.4.4

 * Added RSS feed functionality for Mayo events that automatically activates on 
   pages with Mayo event shortcodes or archives.
 * RSS feed accessible via standard /feed endpoint on any page containing Mayo events(
   inherits shortcode parameters).
 * RSS feed includes rich content in CDATA format with event details, location, 
   contact info, and service body information.
 * RSS feed links directly to individual event permalinks instead of external systems.
 * RSS feed descriptions now include all active parameters for transparency (status,
   per_page, event_type, service_body, source_ids, categories, tags, relation).
 * Added RSS icon next to calendar icon in event lists for easy access to RSS feeds.
 * Added “Show Shortcode” feature – click the code icon in event lists to view and
   copy the exact shortcode for that event list configuration.
 * Improved icon alignment in event list action buttons for consistent visual presentation.

#### 1.4.3

 * Fixed monthly recurring events bug where “last day of month” events would show
   repeatedly on the same day instead of advancing to next month. [#143]
 * Added comprehensive international timezone support with 60+ global timezones 
   organized by region (North America, Europe, Asia, Australia/Oceania, Africa, 
   South America). [#142]
 * Improved timezone detection to use browser’s actual timezone instead of defaulting
   to Eastern Time.
 * Enhanced timezone display in both event submission forms and admin interface 
   with grouped regional options.
 * Added service body restriction feature for multi-site configurations – allows
   pre-configuring specific service bodies in settings or via shortcode parameters.[#
   144]
 * Added `default_service_bodies` shortcode parameter for `[mayo_event_form]` to
   restrict event submissions to specific service bodies.
 * When only one service body is configured, the service body field is automatically
   hidden and pre-selected for streamlined user experience.

#### 1.4.2

 * Fixing missing start year.

#### 1.4.1

 * Adding year to multi-day events, and removing extra dash.

#### 1.4.0

 * Enhanced email notifications to include comprehensive event details including
   contact information, service body name, times, timezone, location, description,
   categories, tags, recurring patterns, and file attachments. [#134]
 * Added email notifications to event submitters when their events are published,
   with comprehensive event details. [#135]
 * Fixed multi-day events disappearing from calendar before their end date by improving
   date filtering logic to consider both start and end dates. [#138]
 * Better display for multi-day events. [#139]

#### 1.3.9

 * Fixed service body information not displaying in unexpanded view of event listings
   when events have no categories or tags. [#132]

#### 1.3.8

 * Fixed location address handling to detect and link directly to URLs instead of
   Google Maps when URLs are embedded in location addresses. [#129]
 * Added recurring event modifications allowing admins to skip specific occurrences
   and copy events from the admin list. [#130]
 * Added the ability to recurring events and skipped event occurrences count from
   Mayo event list on the admin UI.

#### 1.3.7

 * Fixed null pointer error in Frontend.php when accessing post properties on null
   post object.

#### 1.3.6

 * Added a note on the settings page about required settings for permalinks.
 * Changed Unaffiliated to “Out of Area” for cases where an external server uses
   Unaffiliated for the service body.
 * Removed actions toolbar on widgets.

#### 1.3.5

 * Handle virtual directory paths. [#64] [#79]
 * Temporarily fix an issue with retrieving external sources by fetching 100 events.[#
   122]
 * For Unaffiliated service bodies for external sources set Unaffiliated insteasd
   of unknown. [#121]

#### 1.3.4

 * Change error messaging on event submission for when invalid file types are used.

#### 1.3.3

 * Removed the styling around service body in expanded view of Event List.

#### 1.3.2

 * Added autoexpand option to event list shortcode with querystring support [#119]

#### 1.3.1

 * Adding better documentation around infinite scroll and handling of querystring
   parameters
 * Showing year in date badge as superscript

#### 1.3.0

 * Service bodies are shown in un-expanded cards on the display. [#113]
 * Expand and collapse all button.
 * Print capability.

#### 1.2.11

 * Fixed HTML encoding issues on displays. [#109]
 * Fixed an issue where someone could upload a non-image file. [#111]

#### 1.2.10

 * Fixed another monthly recurrence bug.

#### 1.2.9

 * Fixed a few more recurrence issues [#104] [#105]

#### 1.2.8

 * Fixed recurring weekly event issue that would sometimes throw an error on admin
   entry

#### 1.2.7

 * Fixed an issue where the page would get stuck when using multiple shortcodes 
   with external source IDs
 * Fixes to /mayo archive page

#### 1.2.6

 * Added support for restricting categories and tags in the event submission form
   via shortcode parameters (`categories` and `tags`). [#98]
    - You can now include or exclude categories/tags using a minus sign (e.g., `
      categories="meetings,-workshops"`, `tags="featured,-ticketed"`).
    - Category and tag slugs are always compared in lowercase for consistency with
      WordPress URLs.
 * Added server-side pagination to events API for better performance with large 
   datasets [#91]
 * Implemented infinite scroll on the event list for improved user experience [#
   95]
 * Added server-side filtering to only show future events by default, with archive
   =true parameter option
 * Added timezone support for accurate date filtering across different timezones
 * Optimized recurring event generation to prevent timeout issues

#### 1.2.5

 * Fixed incorrect shortcode documentation in admin UI [#87]
 * Fixed issue where not all categories and tags appeared in the event submission
   form [#88]
 * Fixed timezone display issues in admin Events list showing incorrect dates and
   times [#89]
 * Added timezone abbreviation display in admin Events list for better clarity

#### 1.2.4

 * Added recurring event pattern support to the event submission form [#27]

#### 1.2.3

 * Fixed HTML entities in category names showing incorrectly (e.g., “&” showing 
   as “&”) in the event submission form [#84]

#### 1.2.2

 * Added contact name field and exposed email as well to the admin UI (fields are
   private and meant for point of contact) [#81]
 * Added Service Body name into the Admin UI [#80]

#### 1.2.1

 * Removed PDF support which was unstable and inconsistent to maintain.
 * Fixing external sources admin side, which was broken. [#76]

#### 1.2.0

 * Added the ability for external event pulling from other Mayo driven sites. [#
   4]
 * Added the ability to filter on muliple service body ids [#70]
 * Notification emails are now customizable. [#72]
 * Set fixed size for PDFs [#73]

#### 1.1.3

 * Added CSS skinning capabilities and documentation. [#51]

#### 1.1.2

 * Added Unaffiliated option for Service Body selection. [#1]

#### 1.1.1

 * Switch to ICS format for Calendar Feed.
 * Fix RSS icon which wasn’t showing for non-logged in users.

#### 1.1.0

 * Added the ability to upload PDFs and display them.
 * Added the ability to set other required fields on the event submission form.
 * Added custom classes for tags, categories, service body and event type [#51].
 * Calendar RSS link [#11]
 * Fix to prevent insecure root servers [#50].

#### 1.0.11

 * Fix for root server settings not saving [#48].

#### 1.0.10

 * Added widget support [#10].
 * Added text on the submission for to indicate what file types are allowed.
 * Added the ability to show events with a given status [#31].
 * Override some of the shortcode parameters via querystring [#32].
 * Moved filtering to the REST API [#32].
 * Fixed nonce issue [#10].
 * Clicking flyer now opens in a new tab [#5].
 * Re-occuring events now shows below the date in the gutenberg editor [#3].
 * Service body name now shows all places [#2].

## Meta

 *  Version **1.9.5**
 *  Last updated **3 weeks ago**
 *  Active installations **40+**
 *  WordPress version ** 6.7 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 8.2 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/mayo-events-manager/)
 * Tags
 * [bmlt](https://vec.wordpress.org/plugins/tags/bmlt/)[events](https://vec.wordpress.org/plugins/tags/events/)
   [na](https://vec.wordpress.org/plugins/tags/na/)[narcotics anonymous](https://vec.wordpress.org/plugins/tags/narcotics-anonymous/)
 *  [Advanced View](https://vec.wordpress.org/plugins/mayo-events-manager/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/mayo-events-manager/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/mayo-events-manager/reviews/)

## Contributors

 *   [ bmltenabled ](https://profiles.wordpress.org/bmltenabled/)
 *   [ radius314 ](https://profiles.wordpress.org/radius314/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/mayo-events-manager/)