{"id":270248,"date":"2026-01-05T02:50:59","date_gmt":"2026-01-05T02:50:59","guid":{"rendered":"https:\/\/en-au.wordpress.org\/plugins\/vieww-events-calendar\/"},"modified":"2026-04-29T00:50:48","modified_gmt":"2026-04-29T00:50:48","slug":"vieww-events-calendar","status":"publish","type":"plugin","link":"https:\/\/it.wordpress.org\/plugins\/vieww-events-calendar\/","author":23428051,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.4.2","stable_tag":"2.4.2","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Vieww Events Calendar","header_author":"Jarrad Nicoll","header_description":"A professional, self-contained events calendar plugin with recurring events, design customization, and mobile-optimized views. Features grid, list, and interactive month calendar displays.","assets_banners_color":"f8f9fa","last_updated":"2026-04-29 00:50:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/nextpointdigital.com.au","rating":5,"author_block_rating":0,"active_installs":10,"downloads":441,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.1":{"tag":"2.1.1","author":"jarradnpd","date":"2026-01-05 03:34:53"},"2.2.0":{"tag":"2.2.0","author":"jarradnpd","date":"2026-03-05 02:11:07"},"2.4.0":{"tag":"2.4.0","author":"jarradnpd","date":"2026-04-28 22:24:16"},"2.4.1":{"tag":"2.4.1","author":"jarradnpd","date":"2026-04-28 22:41:10"},"2.4.2":{"tag":"2.4.2","author":"jarradnpd","date":"2026-04-29 00:50:48"}},"upgrade_notice":{"2.2.0":"<p>Major feature update: dark mode, Google Fonts, frontend search, Gutenberg blocks, REST API, iCal export, swipe gestures, and performance improvements with HTML caching.<\/p>","2.1.1":"<p>Initial WordPress.org release - Full-featured events calendar with recurring events, design customization, mobile optimization, and three beautiful display views. All features included free!<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3546910,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3546910,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3546910,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3546910,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"vieww\/events-grid":{"name":"vieww\/events-grid","title":"Vieww Events Grid"},"vieww\/events-list":{"name":"vieww\/events-list","title":"Vieww Events List"},"vieww\/events-calendar":{"name":"vieww\/events-calendar","title":"Vieww Events Calendar"}},"tagged_versions":["2.1.1","2.2.0","2.4.0","2.4.1","2.4.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Grid\/Card View - Responsive 3-column layout","2":"List View - Filterable with date range selection","3":"Calendar Month View - Interactive calendar grid","4":"Admin Cache Settings Page","5":"Event Edit Screen with ACF Fields"}},"plugin_section":[],"plugin_tags":[416,4747,1486,4754,5881],"plugin_category":[40],"plugin_contributors":[253294],"plugin_business_model":[],"class_list":["post-270248","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-event-management","plugin_tags-events","plugin_tags-events-calendar","plugin_tags-recurring-events","plugin_category-calendar-and-events","plugin_contributors-jarradnpd","plugin_committers-jarradnpd"],"banners":{"banner":"https:\/\/ps.w.org\/vieww-events-calendar\/assets\/banner-772x250.png?rev=3546910","banner_2x":"https:\/\/ps.w.org\/vieww-events-calendar\/assets\/banner-1544x500.png?rev=3546910","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vieww-events-calendar\/assets\/icon-128x128.png?rev=3546910","icon_2x":"https:\/\/ps.w.org\/vieww-events-calendar\/assets\/icon-256x256.png?rev=3546910","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Vieww Events Calendar is the easiest way to show what's happening on your WordPress site. Whether you run a venue, community group, church, school or small business, you can add an event in seconds and choose exactly how visitors see it.<\/p>\n\n<p>Pick from three beautiful views \u2014 a card grid for what's coming up, a filterable list with date ranges, or a full month calendar visitors can click through. On phones, visitors get tap-to-open event cards and a quick toggle between calendar and list, so they don't lose their place.<\/p>\n\n<p><strong>What your visitors get:<\/strong><\/p>\n\n<ul>\n<li>A polished calendar that matches your brand<\/li>\n<li>Three views to choose from \u2014 grid, list, or month calendar \u2014 and you can mix them across different pages<\/li>\n<li>Tap-to-open event cards on mobile so they don't have to leave the page to see the details<\/li>\n<li>A built-in events map so they can see at a glance where things are happening<\/li>\n<li>Add-to-calendar links \u2014 Google Calendar plus a downloadable file for Apple, Outlook and others<\/li>\n<\/ul>\n\n<p><strong>What you get:<\/strong><\/p>\n\n<ul>\n<li>Add events in under a minute \u2014 title, date, time, venue, description, done<\/li>\n<li>Recurring events \u2014 set an event to repeat on the days you choose<\/li>\n<li>Pick your own colours, fonts and spacing from a single design panel<\/li>\n<li>Dark mode \u2014 off, auto (follows the visitor's system preference), or always on<\/li>\n<li>Address autocomplete \u2014 start typing a venue and pick from suggestions; the location pin and details fill in for you<\/li>\n<li>One-click cache control whenever you need a fresh copy of your event list<\/li>\n<\/ul>\n\n<p><strong>Shortcodes you can drop into any page or layout:<\/strong><\/p>\n\n<ul>\n<li><code>[vieww_calendar_view]<\/code> \u2014 the interactive month calendar<\/li>\n<li><code>[vieww_list]<\/code> \u2014 a filterable list with date-range and pagination<\/li>\n<li><code>[vieww_calendar]<\/code> \u2014 a 3-column grid of upcoming events<\/li>\n<li><code>[vieww_events_map]<\/code> \u2014 a map of upcoming events with clustering<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin uses the following third-party services. Each is optional or only triggered by an admin action:<\/p>\n\n<ul>\n<li><strong>Google Fonts<\/strong> (https:\/\/fonts.googleapis.com) \u2014 only when you choose a Google Font in <strong>Events &gt; Design &gt; Typography<\/strong>. System fonts are the default. <a href=\"https:\/\/policies.google.com\/privacy\">Privacy<\/a> \u00b7 <a href=\"https:\/\/developers.google.com\/terms\">Terms<\/a><\/li>\n<li><strong>OpenStreetMap map tiles<\/strong> (https:\/\/tile.openstreetmap.org) \u2014 front-end only, when a page renders an event map. <a href=\"https:\/\/osmfoundation.org\/wiki\/Privacy_Policy\">Privacy<\/a> \u00b7 <a href=\"https:\/\/operations.osmfoundation.org\/policies\/tiles\/\">Tile policy<\/a><\/li>\n<li><strong>Nominatim geocoding<\/strong> (https:\/\/nominatim.openstreetmap.org) \u2014 admin only, when you save an event with a new venue or click \"Geocode Now\". Sends the venue text. <a href=\"https:\/\/osmfoundation.org\/wiki\/Privacy_Policy\">Privacy<\/a> \u00b7 <a href=\"https:\/\/operations.osmfoundation.org\/policies\/nominatim\/\">Terms<\/a><\/li>\n<li><strong>Photon venue autocomplete<\/strong> (https:\/\/photon.komoot.io) \u2014 admin only, while typing into the Location\/Venue field. Sends the partial text. <a href=\"https:\/\/www.komoot.com\/privacy\">Privacy<\/a><\/li>\n<\/ul>\n\n<p>To opt out: leave fonts on System Font, fill latitude\/longitude manually, and don't use the autocomplete dropdown \u2014 no external requests will be made.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, please use the WordPress.org support forums for this plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/vieww-events-calendar\/<\/code> directory, or install through the WordPress plugins screen<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Go to Events \u2192 Add New to create your first event!<\/li>\n<li>Use shortcodes in your pages to display events<\/li>\n<\/ol>\n\n<p>The plugin automatically registers the custom post type and creates all necessary fields. No additional setup required!<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20any%20other%20plugins%3F\"><h3>Do I need any other plugins?<\/h3><\/dt>\n<dd><p>No! The plugin is completely self-contained. It registers its own custom post type and creates native WordPress meta boxes for all event fields.<\/p><\/dd>\n<dt id=\"what%20fields%20are%20available%20for%20events%3F\"><h3>What fields are available for events?<\/h3><\/dt>\n<dd><p>When creating an event, you'll see two meta boxes:<\/p>\n\n<p><strong>Event Details:<\/strong>\n* Event Date (for one-off events)\n* Event Time\n* Event Description\n* Event Image (via featured image sidebar)<\/p>\n\n<p><strong>Recurring Event Settings:<\/strong>\n* Recurring Days (checkbox for days of week)\n* Recurring Start Date\n* Recurring End Date<\/p><\/dd>\n<dt id=\"what%20shortcodes%20are%20available%3F\"><h3>What shortcodes are available?<\/h3><\/dt>\n<dd><p><strong>Grid\/Card View:<\/strong>\n    [vieww_calendar]<\/p>\n\n<p>Displays the next 9 upcoming events in a 3-column responsive grid.<\/p>\n\n<p><strong>List View:<\/strong>\n    [vieww_list per_page=\"10\"]<\/p>\n\n<p>Displays events in a list with date filters and pagination. The <code>per_page<\/code> parameter is optional (default: 10).<\/p>\n\n<p><strong>Calendar Month View:<\/strong>\n    [vieww_calendar_view show_images=\"yes\"]<\/p>\n\n<p>Displays an interactive month calendar with navigation. The <code>show_images<\/code> parameter is optional (default: yes).<\/p><\/dd>\n<dt id=\"how%20do%20i%20create%20a%20recurring%20event%3F\"><h3>How do I create a recurring event?<\/h3><\/dt>\n<dd><ol>\n<li>Go to Events \u2192 Add New<\/li>\n<li>Leave the Event Date field empty in the Event Details box<\/li>\n<li>In the Recurring Event Settings box, check the days of the week<\/li>\n<li>Set the Recurring Start Date and Recurring End Date<\/li>\n<li>Fill in Event Time and Description<\/li>\n<li>Publish!<\/li>\n<\/ol><\/dd>\n<dt id=\"how%20do%20i%20create%20a%20one-time%20event%3F\"><h3>How do I create a one-time event?<\/h3><\/dt>\n<dd><ol>\n<li>Go to Events \u2192 Add New<\/li>\n<li>Fill in the Event Date in the Event Details box<\/li>\n<li>Leave the Recurring Event Settings box empty<\/li>\n<li>Fill in Event Time and Description<\/li>\n<li>Publish!<\/li>\n<\/ol><\/dd>\n<dt id=\"events%20aren%27t%20showing%20up%2C%20what%20do%20i%20do%3F\"><h3>Events aren't showing up, what do I do?<\/h3><\/dt>\n<dd><ol>\n<li>Go to Events \u2192 Cache Settings in your WordPress admin<\/li>\n<li>Click \"Refresh Event Cache\"<\/li>\n<li>Alternatively, add <code>?refresh_events=1<\/code> to any page URL<\/li>\n<\/ol><\/dd>\n<dt id=\"does%20this%20work%20with%20cache%20plugins%3F\"><h3>Does this work with cache plugins?<\/h3><\/dt>\n<dd><p>Yes! The plugin automatically clears popular cache plugins including:\n* WP Fastest Cache\n* WP Super Cache\n* W3 Total Cache\n* WP Rocket<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20styling%3F\"><h3>Can I customize the styling?<\/h3><\/dt>\n<dd><p>Yes! The plugin includes a visual customization interface at Events \u2192 Design Settings. You can adjust:<\/p>\n\n<ul>\n<li>Colors (primary, accent, text, backgrounds)<\/li>\n<li>Typography (font families, sizes, weights)<\/li>\n<li>Spacing (padding, margins, gaps)<\/li>\n<\/ul>\n\n<p>You can also override styles by adding custom CSS to your theme. The plugin uses separate CSS files for each view:<\/p>\n\n<ul>\n<li><code>grid-view.css<\/code> - Grid\/card view styles<\/li>\n<li><code>list-view.css<\/code> - List view styles<\/li>\n<li><code>calendar-view.css<\/code> - Calendar view styles<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20do%20i%20debug%20cache%20issues%3F\"><h3>How do I debug cache issues?<\/h3><\/dt>\n<dd><p>Add <code>?debug_cache=1<\/code> to any page URL to see cache status and contents (requires admin permissions).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.4.2<\/h4>\n\n<ul>\n<li>IMPROVEMENT: External Services section condensed to one line per service while keeping the required wp.org disclosure.<\/li>\n<li>IMPROVEMENT: Removed the Developer Notes section from the public listing \u2014 internal architecture detail isn't useful for site owners browsing the directory.<\/li>\n<\/ul>\n\n<h4>2.4.1<\/h4>\n\n<ul>\n<li>IMPROVEMENT: Plugin description and listing rewritten to focus on what site owners and visitors get out of the calendar, rather than internal architecture.<\/li>\n<li>NEW: Plugin icon added.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>FEATURE: Structured location fields \u2014 split the single Location\/Venue input into Venue Name, Street Address, Suburb, State, and Postcode for consistency with sibling Vieww plugins.<\/li>\n<li>FEATURE: Click-to-fill autocomplete \u2014 typing into Street Address shows Photon (komoot.io) suggestions; selecting one populates Suburb \/ State \/ Postcode \/ Latitude \/ Longitude in a single click. If Photon returns a named landmark and Venue Name is empty, the venue name is filled too (user-typed values are never overwritten).<\/li>\n<li>FEATURE: Geocoding now uses structured Nominatim queries from the new fields directly \u2014 more accurate and predictable than parsing a freeform string.<\/li>\n<li>FEATURE: Branded archive template (<code>archive-vieww-event.php<\/code>) renders the calendar at <code>\/events\/<\/code> by default, with a friendly \"No upcoming events\" empty state when there's nothing to show \u2014 replacing the theme's generic \"Sorry, but nothing was found\" page.<\/li>\n<li>IMPROVEMENT: Calendar prev\/next\/Today now swap the visible month in place instead of full-reloading the page, so embedding pages (e.g. Elementor canvases) keep their width and layout.<\/li>\n<li>IMPROVEMENT: Calendar nav uses replaceState rather than pushState \u2014 the browser back button returns to the page you came from, not through every month you visited.<\/li>\n<li>IMPROVEMENT: Default Dark Mode setting is now \"Auto\" (follows system preference) for new installs, with extra coverage for the event-time strip inside calendar event chips.<\/li>\n<li>FIX: Calendar prev\/next URLs no longer leak between embedding pages. The cached HTML used to bake in the rendering page's URL, so a calendar embedded on one page could send visitors to another. URLs are now built from the current document at click time.<\/li>\n<li>FIX: Calendar buttons (prev\/next\/Today\/filter) now follow the plugin's design-settings colour palette instead of inheriting Elementor's global accent\/primary colours, which on some sites rendered the nav arrows green and the Today button blue.<\/li>\n<li>FIX: Addresses with both a unit keyword AND a slash (e.g. <code>Unit 5\/123 Main St<\/code>) no longer lose the street number during geocoding \u2014 coordinates resolve to the actual street, not the suburb centroid.<\/li>\n<li>MIGRATION: Existing <code>event_location<\/code> values are best-effort split into Venue Name + structured address on first load. The original value is retained as a display fallback for entries that didn't parse cleanly.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>FEATURE: Event venue geocoding \u2014 automatically populates latitude\/longitude from the Location\/Venue field on save, with a fallback chain for Australian unit-style addresses<\/li>\n<li>FEATURE: \"Geocode Now\" button on the event edit screen for instant lat\/lng preview with visible feedback<\/li>\n<li>FEATURE: Venue autocomplete via Photon (OpenStreetMap) \u2014 typeahead dropdown on the Location\/Venue field, preserving user-typed unit prefixes and house numbers<\/li>\n<li>FEATURE: Single-event location map injected via <code>the_content<\/code> when an event has coordinates<\/li>\n<li>FEATURE: New <code>[vieww_events_map]<\/code> shortcode \u2014 renders all upcoming geocoded events on an interactive Leaflet map with clustering<\/li>\n<li>IMPROVEMENT: New REST meta fields <code>event_lat<\/code> and <code>event_lng<\/code> exposed via the WordPress REST API<\/li>\n<li>IMPROVEMENT: Admin-only empty-state banner prompts editors to geocode listings when none yet have coordinates<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>FEATURE: Frontend event search - filter list view events by title, description, or location<\/li>\n<li>FEATURE: Google Fonts integration - 15 Google Fonts available in Design Settings<\/li>\n<li>FEATURE: Dark mode support - off, auto (system preference), or always on<\/li>\n<li>FEATURE: Mobile swipe gestures - swipe left\/right to navigate calendar months<\/li>\n<li>FEATURE: Gutenberg blocks - 3 server-side rendered blocks for the block editor<\/li>\n<li>FEATURE: REST API support - event meta fields exposed via WordPress REST API<\/li>\n<li>FEATURE: iCal export and Google Calendar integration<\/li>\n<li>FEATURE: AJAX calendar navigation for smoother month browsing<\/li>\n<li>FEATURE: Event modal popups with add-to-calendar links<\/li>\n<li>PERFORMANCE: Rendered HTML caching with version-counter invalidation<\/li>\n<li>PERFORMANCE: Per-request instance deduplication for recurring events<\/li>\n<li>SECURITY: Enhanced nonce verification and input sanitization throughout<\/li>\n<li>IMPROVEMENT: Admin meta box validation with real-time feedback<\/li>\n<li>IMPROVEMENT: Tabbed help documentation with persistent tab state<\/li>\n<li>IMPROVEMENT: Dismissable onboarding welcome page<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>RELEASE: Initial WordPress.org release - Full-featured free version<\/li>\n<li>MAJOR: Removed ACF dependency - now completely self-contained with native WordPress meta boxes<\/li>\n<li>FEATURE: Recurring events - set events to repeat on specific days<\/li>\n<li>FEATURE: Design customization system with colors, typography, and spacing controls<\/li>\n<li>FEATURE: Three beautiful display views (grid, list, calendar)<\/li>\n<li>FEATURE: Mobile modal popups and calendar\/list view toggle<\/li>\n<li>FEATURE: Getting started dashboard and help documentation<\/li>\n<li>SECURITY: Full nonce verification, input sanitization, and output escaping<\/li>\n<li>SECURITY: WordPress 6.9 compatibility and coding standards compliance<\/li>\n<li>PERFORMANCE: Advanced caching system with transient storage<\/li>\n<li>PERFORMANCE: Iteration safeguards to prevent infinite loops<\/li>\n<li>Complete plugin restructure with organized class files, separated CSS, and i18n support<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added calendar month view<\/li>\n<li>Improved caching system<\/li>\n<li>Added admin interface for cache management<\/li>\n<li>Performance optimizations<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Grid and list views<\/li>\n<li>Basic caching functionality<\/li>\n<\/ul>","raw_excerpt":"Show off your upcoming events with a beautiful grid, a filterable list, or a full month calendar. Recurring events, brand colours and a built-in event &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/270248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=270248"}],"author":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jarradnpd"}],"wp:attachment":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=270248"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=270248"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=270248"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=270248"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=270248"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=270248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}