=== Simple Calendar - Google Calendar, Events, & ICS Feeds === Contributors: simplecalendar, rosinghal, pderksen, nickyoung87, nekojira, rosshanney Tags: google calendar, outlook, ical, events, add to calendar Requires at least: 4.2 Requires PHP: 8.1 Tested up to: 7.0 Stable tag: 4.3.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Display Google Calendar events on your WordPress site in real-time synchronization. Fully customizable and 100% mobile responsive. == Description == [Simple Calendar](https://simplecalendar.io/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) shows your events on your WordPress site, whether they live in Google Calendar, another calendar app that supports the iCalendar (ICS) format, or WordPress itself. No coding, no iframe embeds, and no hassle of maintaining the same events twice. Start with the free plugin for clean grid, list, and mobile-friendly widget views. When your site needs more enhanced features, add only the addons you'll actually use, or save big with [Simple Calendar bundle pricing plans →](https://simplecalendar.io/addons/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) [youtube https://www.youtube.com/watch?v=9HZI52pRXRA] = Choose your event source = Simple Calendar started as a Google Calendar plugin. Many of our users asked for more sources so they wouldn't have to switch plugins, so the free plugin now supports more event sources. #### Google Calendar #### Choose to display any public Google Calendar using a Google API key. It keeps your calendars in sync as you update, edit, or delete events in the source, i.e., Google Calendar. #### Other calendar apps (ICS) #### You can now import events from any external calendar application other than Google Calendar via an ICS file, including Microsoft Outlook, Microsoft 365, Apple iCloud Calendar, Yahoo Calendar, Zoho Calendar, Proton Calendar, and more. #### Events created in WordPress #### If you'd rather not rely on an external calendar app, Simple Calendar lets you create custom events directly in WordPress. It doesn't require an external calendar source and lets you create and manage events in WordPress, then display them in a calendar format on your website. [See Simple Calendar live in our interactive demos →](https://simplecalendar.io/demos/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) = Simple Calendar free core plugin features = #### Flexible event sources & creation #### * Display any public Google Calendar * Import ICS files from Outlook, Microsoft 365, Apple Calendar, or any iCalendar app * Create events directly in WordPress * Combine several calendars into one view, by calendar or by category * Let visitors add events to their own Google Calendars #### Customize your calendars #### * Responsive monthly grid, list views, and mobile widget views * Event and text colors to match your site * Use event template tags to customize your event information, such as title, time, location, etc. * Timezone, date format, and start-of-week setting * Integrates with [Event Calendar Newsletter](https://wordpress.org/plugins/event-calendar-newsletter/) to turn events into newsletter-ready content. #### Keeps your site loading speed fast as is #### * Place calendars with a shortcode or widget * Export your events as an ICS file * Scripts and styles load only on pages that include a calendar * Regular updates and security maintenance = Explore our premium addons to do more with Simple Calendar = #### [Google Calendar Pro](https://simplecalendar.io/downloads/google-calendar-pro/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) #### * Show private Google Calendars without making them public or searchable * Connect in one click with secure Google sign-in OAuth, or use your own API key * Add a live ICS feed URL that stays in sync as you update events in your calendar app * Carry over the event colors you set in Google Calendar * Show event images when visitors hover over an event * Access more customization options to match your site #### [FullCalendar Extended](https://simplecalendar.io/downloads/fullcalendar/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) (*Built on open-source FullCalendar library*) #### * Interactive month, week, and day views visitors can switch between in one click * Show the calendar in your visitors' language * Settings for calendar height, timezone, event colors, and event text colors * Limit how many events and which hours are shown #### [Book an Appointment](https://simplecalendar.io/downloads/book-an-appointment/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) (*Lighter alternative to full booking plugins, for anyone who only needs synced appointments with Google Calendar*) #### * Set your available booking slots * Visitors book open slots right on your site * Each booking appears in both your Google Calendar and your visitor's * Booked slots hide automatically to prevent double bookings Need more than one addon? [Compare bundle plans](https://simplecalendar.io/addons/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description), as they include multiple addons for less than buying them separately. = Who it's for = Simple Calendar plugin is for anyone who keeps their schedule in a calendar app, or wants to keep it in WordPress, and needs it on their website without maintaining it twice. * Churches publishing service times and ministry schedules * Tutors, coaches, and trainers showing availability and taking bookings * Studios, venues, and rentable spaces showing what's booked and what's open * Schools and educators posting class schedules and term dates * Nonprofits and community groups sharing event calendars * Small businesses showing opening hours, workshops, and team schedules * Remote teams sharing calendars on intranets and private portals * Agencies and freelancers who need a calendar that works on any client site = Documentation, support, and more resources = * [Read our documentation]( https://docs.simplecalendar.io/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description ) to learn more about setup, customization, and how to access newly launched features. * [Watch step-by-step video tutorials](https://www.youtube.com/@SimpleCalendar-js6dv) to explore Simple Calendar’s setup, features, and other capabilities in action. * [View our live, interactive demos](https://simplecalendar.io/demos/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) and play with different features to see how they look on real sites. * [Contact our responsive support](https://simplecalendar.io/contact/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) team if you’re stuck on anything related to setup, further customization, or any other issue. * Connect with us on [Instagram](https://instagram.com/simplecalendarwp), [Facebook](https://www.facebook.com/share/14vKPkJHuyE/), [X](https://x.com/SimpleCalplugin), and [LinkedIn](https://www.linkedin.com/company/simple-calendar/) to learn more about the plugin’s possibilities and get early access to discounts. * Please feel free to ask your questions in our [community support forum](https://wordpress.org/support/plugin/google-calendar-events). * Contribute to code, submit pull requests, or report bugs on [GitHub](https://github.com/Xtendify/Simple-Calendar). * Help add or update a [Simple Calendar plugin translation](https://translate.wordpress.org/projects/wp-plugins/google-calendar-events). == Installation == #### From your WordPress dashboard: #### Go to **Plugins > Add New**. Search for '**Simple Calendar**'. Click **Install Now**, then **Activate**. You’ll see a new **Calendars** menu in your dashboard. #### Manual install: #### [Download the plugin ZIP file](https://wordpress.org/plugins/google-calendar-events/) Upload it via **Plugins > Add New > Upload Plugin**. Activate the plugin. You’ll see a new **Calendars** menu in your dashboard. Need more guidance? Check out the [getting started documentation](https://docs.simplecalendar.io/getting-started/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) or enjoy priority support and advanced functionalities with [our premium addons](https://simplecalendar.io/addons/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description). == Frequently Asked Questions == = Where's your plugin documentation? = Find our docs at [docs.simplecalendar.io](http://docs.simplecalendar.io/?utm_source=wordpress.org&utm_medium=link&utm_campaign=simple-cal-readme&utm_content=faq) = Do I need to know how to code? = No. Set up your calendar from the WordPress dashboard, then add it to any page with a shortcode or widget. = Is Simple Calendar only for Google Calendar? = Not anymore. It started as a Google Calendar plugin, which is where the name comes from. The free plugin now also imports ICS files from Outlook, Microsoft 365, Apple iCloud, Yahoo, and other calendar apps, and lets you create events directly in WordPress. = Do I need a Google API key? = Yes, you need a [Google API key for public Google Calendars](https://docs.simplecalendar.io/google-api-key/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) in the free core plugin. Explore our [Google Calendar Pro addon to skip the API key entirely](https://docs.simplecalendar.io/authentication-using-oauth-helper/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) with a one-click secure Google sign-in. = Can I show a private Google Calendar? = Yes, you can easily [display a private Google Calendar](https://simplecalendar.io/downloads/google-calendar-pro/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) with Google Calendar Pro. It connects securely through Google sign-in (OAuth), so your calendar stays private in Google and out of search results. = My calendar is not showing events from my calendar. What should I check? = 1. Make sure the Google Calendar is set to public (Google Calendar settings > Access permissions), or use Google Calendar Pro for private calendars. 2. Check that individual events aren't marked ‘Private’ in Google. Events set to private visibility won't show on a public calendar. 3. Confirm your API key and calendar ID are entered correctly. 4. Check the date range in your calendar settings. 5. [Clear the calendar cache](https://docs.simplecalendar.io/how-to-clear-calendar-cache/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description). 6. [Check our troubleshooting docs →](https://docs.simplecalendar.io/troubleshooting-theme-plugin-widget-conflicts/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) 7. Still stuck? [Contact our support now →](https://simplecalendar.io/contact/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description) = I updated an event, but my site still shows the old version. Why? = Simple Calendar caches events so your pages load quickly. Changes appear when the cache refreshes. Clear the cache from the calendar's settings to show them right away. If you use a caching plugin or a host with page caching, clear that too. = Why are my event times or dates wrong? = Check three settings: the time zone in Settings > General in WordPress, the time zone of your Google Calendar, and the date format and start-of-week options in Simple Calendar. Different time zones between WordPress and Google are the most common cause. = Will Simple Calendar slow down my site? = No. The core plugin is lightweight, and its scripts and styles load only on pages that include a calendar. = Is Simple Calendar still maintained? = Yes. We release regular updates, including recent ones that added ICS support and events created in WordPress. See the Changelog tab for every release. = How do I update safely? = As with any plugin, we recommend backing up your site before updating and testing updates on a staging site first. If something breaks after an update, contact support, and we'll help you fix it or roll back. = Is Simple Calendar translated? = Yes, it's translation-ready. Language packs come from translate.wordpress.org. With FullCalendar Extended, you can also [set the calendar's display language](https://docs.simplecalendar.io/adding-support-for-multiple-languages-in-calendar-display-settings/?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description). Or, you can [help translate Simple Calendar into your language](https://translate.wordpress.org/projects/wp-plugins/google-calendar-events?utm_source=wordpress.org&utm_medium=link&utm_campaign=wordpress_org&utm_content=description). = How do I contribute to Simple Calendar? = We'd love your help! Here's a few things you can do: * [Rate our plugin](https://wordpress.org/support/view/plugin-reviews/google-calendar-events?postform#postform) and help spread the word! * Help answer questions in our [community support forum](https://wordpress.org/support/plugin/google-calendar-events). * Report bugs (with steps to reproduce) or submit pull requests [on GitHub](https://github.com/Xtendify/Simple-Calendar). * Help add or update a [plugin translation](https://translate.wordpress.org/projects/wp-plugins/google-calendar-events). == Screenshots == 1. Basic Grid view 2. Basic List view 3. Calendar settings - Events 4. Calendar settings - Appearance 5. Calendar settings - Google Calendar 6. Calendar settings - Advanced 7. Add a calendar widget 8. Attach a calendar to a post or page == Changelog == = 4.3.2 = * Dev: Added an option to clear the color label cache when updating the calendar or manually clicking "Clear Cache" in the admin panel. * Dev: Implemented a configurable cutoff date making "Powered by" credits mandatory for newly created calendars without a valid Pro license, while preserving optional credit behavior for existing calendars. * Dev: Updated plugin screenshots, media assets, and text content. = 4.3.1 = * Fix: Return Google Calendar event label colors with calendar events so labeled event colors display correctly. * Fix: Calendar tooltips now use consistent viewport handling, regardless of calendar width, for more predictable positioning. = 4.3.0 = * Dev: Added custom "Event" post type—you can now create and display events directly on your site without using Google Calendar. = 4.2.2 = * Dev: Use the add-on's version for cache busting. = 4.2.1 = * Fix: Resolved timezone handling issues for all-day events in ICS feeds. = 4.2.0 = * Dev: Add option to automatically display List View on mobile devices when the screen width is below 768px when Grid View is selected as the default view. * Dev: Add an administrator and editor-only frontend notice when a calendar has no events or a feed error, with a link to Google Calendar privacy prerequisites. * Fix: Events were displayed in the incorrect order in List View when “Expand Multi-day Events” was set to “No.” * Fix: Event bubbles stopped working after cancelling the print action. * Fix: TypeError in bulk actions when the ids parameter was passed as an array instead of a comma-separated string. Bulk actions now correctly support both formats. * Fix: Missing fields in the Event Schema Markup to resolve search schema warnings. * Fix: “Add to Google Calendar” link was broken when event details contained Cyrillic or other non-Latin characters. * Fix: Accessibility to provide a more ADA-compliant experience. = 4.1.0 = * Dev: ICS Feed Upload: Added support for importing local `.ics` files to import calendar events. * Dev: ICS Event Export: Added the ability to download/export calendar events as a static `.ics` file. * Fix: Print issue fixed: An issue where clicking the Print button on secondary calendar instances on the same page was unresponsive. = 4.0.7 = * Fix: Removed unnecessary Google API key/OAuth requirement when creating a Grouped Calendar. = 4.0.6 = * Fix: Optimize admin & fronend performance, throttle OAuth token checks, and reduce redundant API calls. = 4.0.5 = * Fix: Fixed a PHP 8.3 ValueError by replacing sprintf() with string concatenation to safely handle literal percent signs in translations. = 4.0.4 = * Fix: Fixed text domain loading by hooking into init. * Dev: Added validation before unserialize() to prevent errors during OAuth failures. = 4.0.3 = * Dev: Ensured compatibility with WordPress 7.0. * Fix: Trimmed historical changelog entries to resolve WordPress.org length warnings. * Dev: Add an [if-event] conditional template tag * Dev: Allow the url argument in the [link] template tag to override the event's URL * Dev: Store the grouped calendar order instead of always sorting alphabetically = 4.0.2 = * Dev: Added a new connect page in admin enhancing the onboarding experience. * Dev: Redesigned settings and add-ons pages with a modern layout. = 3.6.2 = * Fix: Date format inconsistency in List View navigation bar now uses the calendar's configured date format consistently. = 3.6.1 = * Fix: Make a new release to fix a "Class not found" error for GetUniverseDomainInterface. = 3.6.0 = * Dev: Breaking change: Support for PHP versions below 8.0 has been discontinued. * Fix: An issue where the cover image was not displayed for Google Calendar events when using the OAuth Via Simple Calendar. * Fix: An Insecure Direct Object Reference (IDOR) vulnerability. * Dev: Added cache clearing on first plugin activation and during manual plugin updates. = 3.5.9 = * Fix: Resolved a critical issue where the recent update caused site breakage for users who are using various page builders. * Dev: Users can now control Lazy Loading functionality via a dedicated toggle in the Advanced settings. = 3.5.8 = * Fix: Fixed issue where the calendar incorrectly calculated weekday offsets when the week start day was changed in advanced settings. * Fix: Fixed asset loading for all registered shortcodes in page builders like Avada Live Builder. = 3.5.7 = * Fix: Assets (JS/CSS) now correctly load when a calendar widget is present. = 3.5.6 = * Fix: accessibility issue by adding descriptive text to calendar navigation buttons. * Dev: admin notice to inform users about end of PHP 7 support after November. * Dev: Optimized assets: JS and CSS now load only on calendar post type and pages with calendar shortcode. = 3.5.5 = * Fix: Network error when fetching calendars after authentication with Oauth via Simple Calendar on fresh installs. * Fix: JS issue preventing custom CSS from applying to qTip tooltips in version 3.5.4. = 3.5.4 = * Fix: Fixed multi-day events incorrectly displaying on all days when the "No, display only on first day of event" option is enabled. * Fix: Resolved issue where event details (qTip) were not showing in mobile portrait view. * Fix: Fixed layout issues on the admin settings page for fresh installations. = 3.5.3 = * Fix: Even after upgrading to PHP 8.x, an admin notice still appears to upgrade to PHP8. = 3.5.2 = * Dev: Make compatible with WordPress v6.8.1. * Dev: Added notice to update PHP version if version is less then 8.1. = 3.5.1 = * Fix: Event were not showing on page with shortcode when using OAuth via Xtendify. = 3.5.0 = * Dev: To make the first attachment appear as the cover, add a new shortcode [cover-image] for GCal-Pro Addon. = 3.4.9 = * Fix: Resolved the issue where multi-day events were not rendered correctly on the last day. **Thanks to [MartinixH](https://github.com/MartinixH) for the contribution!** = 3.4.8 = * Dev: Added print calendar option on list view. * Fix: Translation month name on first load. = 3.4.7 = * Fix: Compatibility warnings with PHP 8. = 3.4.5 = * Fix: UI gaps in the calendar CPT. = 3.4.4 = * Fix: Fixed deprecation notices and warnings to ensure compatibility with the latest WordPress updates. * Fix: Resolved an issue where multi-day events were being rendered as double events on the same day. * Fix: De Authentication issue fix. = 3.4.3 = * Fix: Event color not showing in Calendar when using OAuth via Xtendify. * Fix: Date format inconsistencies when using shortcodes in certain conditions. * Fix: Calendar start date issue in Grid View causing incorrect date display. * Fix: Print calendar index not found issue. * Fix: Cross-Site Scripting(XSS) vulnerability. = 3.4.2 = * Fix: Event rendering issue for public calendar while using Auth via Xtendify. = 3.4.1 = * Dev: Add OAuth helper functionality. * Dev: Make OAuth helper option compatibble with Appointment add-on. * Update: Update dependency prettier to v3.3.3. = 3.4.0 = * Dev: Added Print calendar feature. * Dev: Make compatible with WordPress v6.5.5. = 3.3.1 = * Fix: Persistent update notification appearing for add-ons even after updating the plugin. = 3.3.0 = * Dev: Compatibility with the OAuth Helper plugin. = 3.2.8 = * Fix: Cross Site Scripting (XSS) vulnerability. = 3.2.7 = * Fix: Cross Site Scripting (XSS) vulnerability. = 3.2.6 = * Fix: CSRF vulnerability for bulk actions. * Dev: Update dependencies Carbon, Dayjs and TailwindCSS. = 3.2.5 = * Fix: Possible CSRF vulnerability. * Dev: Make compatible with Unyson plugin. = 3.2.4 = * Fix: Compatibility with WP 6.3.1. = 3.2.3 = * Fix: Add PHP polyfill to fix regression "Call to undefined function str_contains()" error. = 3.2.2 = * Dev: Update Google API client library to 2.13.1. * Fix: 'if-not-today' shortcode with all day event display issue. * Dev: Revamp admin setting page banner design. = 3.2.1 = * Dev: Revamp welcome page. = 3.2.0 = * Dev: Revamp admin setting page. * Fix: 'Simple Calendar Widget' Calendar selection on block editor. * Fix: 'if-not-today' and 'add-to-gcal-link' shortcode with all day event display issue. = 3.1.47 = * Dev: Added admin notice for plugin update. * Fixed: Possible CSRF vulnerability. = 3.1.43 = * Fixed: Cross Site Request Forgery (CSRF) vulnerability. = 3.1.42 = * Dev: Testing with WordPress version 6.2. = 3.1.41 = * Fix: Event bubbles not working on mobile devices. = 3.1.39 = * Fix: 'Class "Parsedown" not found' by adding `erusev/parsedown` via PHP Scoper. * Fix: Replaced Moment with [Dayjs](https://day.js.org/), it helps with speed and addresses security issues with the Moment library. * Chore: Data type check for loading scripts and styles. * Chore: Upgraded NPM packages resolving security issues present with trim-newlines library. * Fix: Include unmodified assets in the build for a better debugging experience. * Fix: Multi-day events not showing properly. Shoutout to [MartinixH](https://github.com/MartinixH). = 3.1.38 = * Fix: Add PHP polyfill to fix "Call to undefined function str_contains()" error. * Fix: Update Google API client to v2.9.2.