Displaying Stager Event Calendars on Your Site


This guide explains how to display Stager event calendars on your WordPress site using the WP Stager Integration plugin. You’ll see the different ways to output calendars, how to choose the right time period and layout, and which options you can tweak for your design and content. The guide assumes you’ve already completed the plugin setup, and confirmed that events are syncing correctly.
💡 Looking for an integration partner who does the full integration for you? Every license comes with a Free Configuration Service, and we also offer a paid Full Integration Service!
Using the WP Stager Integration plugin, you can render a wide variety of Stager event calendars on your site, including:
The WP Stager Integration plugin gives you three main ways to display calendars:

The easiest way to add a calendar is via the block editor:
+ in the top left corner to add a block.The block renders a preview directly in the editor, so you get a good idea of how it will look on the front end.

+ icon in the content, or in the top menu bar on the left.Shortcodes are ideal if you:
do_shortcode() in PHP).See below an overview of the main shortcodes for calendars and some examples in how to use them.
💡 Refer to our Shortcode documentation for all information about using the shortcodes and all available attributes (settings) per shortcode.
Highly configurable calendar for any date range or layout.
// This will render the current day
[wpstager_calendar scope="day"]
// This will render the calendar for the current week
[wpstager_calendar scope="week"]
// This will render the calendar for the current month with a calendar view
[wpstager_calendar scope="month" view="calendar"]
// This will render the calendar for the current year, with the class "view-my-custom-template" added to the calendar element
[wpstager_calendar scope="year" view="my-custom-template"]
// This will render the calendar for the current week with custom navigation labels, and the week label hidden
[wpstager_calendar scope="week" nav_label_next="Next week" nav_label_previous="Previous week" show_label_week="false"]A dynamically updated list of all events taking place on the current day.
// This will render the current day's events
[wpstager_today]
// This will hide the day label
[wpstager_today show_label_day="false"]
// This will show the day label and hide the navigation
[wpstager_today show_label_day="true" show_nav="false"]A dynamically updated list of all events that are currently taking place.
// This will render the currently happening events
[wpstager_ongoing]If you are building a custom theme or template, you can use the Calendar class to call the calendar rendering methods directly from PHP. This is useful when you want complete control in theme or template files, or if your are building a custom plugin or integration.
💡 Refer to the Calendar class documentation for information about the available rendering methods.
// Render all upcoming events
\WP_Stager_Integration\Calendar::render_all( array(
'show_past_events' => false,
) );
// Render currently happening events
\WP_Stager_Integration\Calendar::render_currently_happening();
// Render today's events
\WP_Stager_Integration\Calendar::render_day();
// Render the current week, month or year
\WP_Stager_Integration\Calendar::render_week();
\WP_Stager_Integration\Calendar::render_month();
\WP_Stager_Integration\Calendar::render_year();
// Render specific ranges
\WP_Stager_Integration\Calendar::render_week( 12 ); // Week 12, this year
\WP_Stager_Integration\Calendar::render_month( 5 ); // May, this year
\WP_Stager_Integration\Calendar::render_month( 2, 2027 ); // February 2027
// Render the coming three weeks
$start = time();
$end = strtotime( '+3 weeks' );
\WP_Stager_Integration\Calendar::render_range( $start, $end );
// Fully custom range, with "list" view
$start = strtotime( '2026-04-25 00:00:00' ); // April 4th, 2026 00:00:00
$end = strtotime( '2026-05-15 23:59:59' ); // May 15th 2026, 2026 23:59:59
\WP_Stager_Integration\Calendar::render_range( $start, $end, array(
'view' => 'list', // Set 'view' to 'list'
) );Out of the box, calendars can be rendered with either a “list”, “cards”, or a “calendar” view. The list view renders a list of events, the cards view renders events as cards, and the calendar view renders an actual calendar grid with 7 columns for each day of the week.

It’s completely possible to render a calendar with a custom views. The $args['view'] argument (or the view attribute when using shortcodes) determines the type of view to render, and is used to add a "view-{$view}" class to the calendar—so you can write custom CSS targeting that view specifically.
Here’s a quick overview of the different styles and appearances of the calendars:
The cards view renders events as cards, displaying their image and date/time information — which can be adjusted and/or disabled.
Text can also be rendered overlayed on top of the image, for a more unified look.
The calendar view renders a traditional calendar with events appearing inside their respective days. All month, day, and time labels can be adjusted and or disabled.
The list view renders events in a horizontal list. Whenever the event images are disabled, the list is clear and concise.
With images enabled, the events are shown as large cards. The day and time labels can be modified and disabled.
All calendars can be displayed with a filter enabled. By default, filters are not shown in calendars, but its very easy to enable them. Please refer to our guide to Calendar Filters for more information and examples on how to use and display filters.

The calendars allow for customization using its options. The options are available in all rendering methods (Blocks, Elementor widgets, shortcodes, PHP code, etc). Some of the things you can modify include:
For performance, calendars can be rendered asynchronously:
If async rendering is disabled in the plugin settings, calendars are rendered immediately on the server instead.
💡 For performance and fast load times, it’s almost always better—and therefore recommended—you keep Asynchronous Rendering enabled.
For more bespoke layouts, you can target exact date ranges in PHP using render_range(), render_month(), render_week(), etc., and pass the same options you’d use in a shortcode. This allows you to match complex design requirements while still leveraging the plugin’s logic and templates.
The calendar uses template parts located under template-parts/calendar within the plugin folder. Advanced users and theme developers can:
If your events are not syncing to your site, please check the following:
If you don’t see any events after syncing, make sure to trigger an initial sync from your Stager account, through Stager → Settings → Integrations → Your publication channel → Under the Testing section, next to Initial sync, click Send upcoming events to sync upcoming events, or Send all events to also sync past events. Then after a few minutes, try to sync again from your site through the plugin’s settings → the Synced data sub page (in the sidebar menu) → Sync now.
If it still doesn’t work, click Send upcoming events or Send all events again and wait 30 minutes.
If your site still doesn’t sync the events, please get in touch, and we’ll help you out!
This could be because of a number of reasons:
Please verify that the “Calendar Styling” setting is enabled through WP Stager Integration → Settings → Calendar styling.
This setting exists to allow users as much freedom as they need to style calendars themselves.
You can enable/disable these labels globally through the WP Stager Integration → Settings → Enable day labels / Enable week labels / Enable month labels / Enable year labels.
If your calendar is added as a block in the block editor, you can modify its settings from there.
If you’ve added your calendar as a shortcode, please refer to the Shortcode documentation to see how to edit the calendar appearance using shortcodes.
By default, event pages are disabled. You can enable event pages by adding a “permalink base” for event pages through WP Stager Integration → Settings → Events (tab) → Permalink base. When you enter a value here, event pages become enabled, as well as an additional setting to manage the permalink structure. This way, events in calendars will get a clickable link.
💡 If you ever get stuck or have a question, please check our FAQs, our Free Integration Service, our paid Full Integration Service, or reach out to us!

🎁 Limited offer: Use code WELCOME26 to get your first month for free!