=== Bearius Calendar ===
Contributors: bearius
Tags: events, event calendar, calendar, recurring events, ics
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A fast, good-looking events calendar for sites with many events. Recurring events, .ics feeds, The Events Calendar import and Event schema.

== Description ==

Bearius Calendar is an events calendar for sites that publish a lot of events: city guides, culture portals, venues, clubs and ticket affiliates. It looks tidy on any theme, even when events come without images, and it stays fast with tens of thousands of dates.

= Fast with thousands of events =

* Dates live in a compact, indexed table, so lists and the month view never run heavy post meta queries.
* A recurring event is one event with a repeat rule. New dates are added ahead automatically as time passes.
* Front-end files load only on pages that show the calendar: one small stylesheet and a tiny deferred script.
* Queries use the object cache when your site has one, and pages stay cacheable.

= Looks good on any site =

* Three views: a list grouped by day, a month grid that turns into a compact grid on phones, and minimal text tiles.
* A different default view for computers, tablets and phones, if you want one.
* Designed to look complete without images, so imports without pictures never look broken.
* Six colour presets, your own colours or colours from your theme palette.
* Light, dark or automatic mode, corner radius and a live preview in the settings.
* Always readable: every colour is checked against its background (WCAG AA) and text is corrected when needed. Theme link and button styles cannot hide calendar text.
* Category colours and status labels for cancelled, postponed and sold out events.

= Event pages =

* A side panel with the date, venue, "Get directions", tickets from up to two sellers, price, "Add to calendar" and "Share".
* A sticky ticket bar on phones and more events at the same venue.
* Every date of a recurring event has its own address, and the page shows the chosen date.
* An optional affiliate notice next to ticket links, with a text for each language.

= Recurring events =

* Daily, weekly on chosen weekdays, monthly (also "the 3rd Thursday" or "the last Friday") and yearly.
* An end date or a number of repeats, skipped dates and extra dates.
* Repeat rules from other calendars are kept exactly, including BYSETPOS, BYMONTH, BYMONTHDAY and EXRULE.

= Import and stay in sync =

* **From The Events Calendar:** events are converted in place, keeping the same ID, address, content, image, comments and SEO data, together with venues, organizers, categories, repeat rules and URL bases. Old addresses redirect. The original data is not changed, so the conversion can be undone.
* **.ics calendars** from a file or an address, imported once or as a subscription checked from every hour to once a week. Add as many subscriptions as you need.
* Every import runs in the background in small batches, safe on modest hosting, with progress, pause, a summary and Undo.
* Venues, cities, organizers and categories are matched by name and aliases, so "MTP Hall" and "Hall, MTP" end up as one venue.
* Fields you edit by hand are never overwritten by later imports.
* Optional details from event pages (image, price, ticket link, organizer, status). Images are downloaded only after you confirm you have the rights to use them.
* For each import: index normally, point the canonical to the original, or set noindex.
* **WP All Import:** a "Bearius Calendar" section in step 3 of the import. Works with the free version of WP All Import.

= Search engines and feeds =

* Event structured data (JSON-LD) on event pages.
* An optional fallback image for events without one, used only in structured data and link previews (Yoast SEO, Rank Math, Bearius SEO Light). It never appears on the calendar pages.
* Dates and places in the RSS feed.
* .ics download for single events and a calendar feed for calendar apps.

= Works with your setup =

* Classic and block themes. Block themes get event templates you can edit in the Site Editor.
* Blocks: Events calendar, Upcoming events, Featured events, Events archive and event details (date, venue, tickets, directions, price) for your own event templates.
* Native Elementor widgets, and shortcodes for any other page builder.
* Polylang and WPML for texts in several languages.
* Template files you can copy to your theme and change.

= Languages =

The plugin is ready for translation on translate.wordpress.org. The plugin screens follow the language of your profile, and once translations are installed you can choose a different language for them in the settings. Visitors always see the language of the site.

= Privacy =

The plugin does not track visitors, sets no cookies and never contacts a server on its own. See "External services" below for the addresses it connects to when you ask it to.

= Trademarks =

The Events Calendar, WP All Import, Elementor, Yoast SEO, Rank Math, Polylang, WPML, Google Maps and Apple Maps are trademarks of their respective owners. Bearius Calendar is not affiliated with or endorsed by them; the names only describe compatibility and import features.

== External services ==

The plugin connects only to addresses you enter yourself, and only for imports you start or subscriptions you add:

* **.ics calendars:** the calendar address you enter is downloaded when you import it and on each scheduled check of a subscription.
* **Event pages:** when "details from event pages" is on for an import, the page of each imported event is read for an image, price, ticket link and similar details.
* **Images:** when image download is on and you have confirmed the rights, images of the imported events are saved to your media library.

These requests send nothing about your site or your visitors apart from a user agent with the plugin name and version.

"Get directions" on an event page is a plain link to the map service you choose in the settings. Nothing is loaded from it until a visitor clicks the link. The click opens the map service with the venue name and address:

* Google Maps: [Terms of Service](https://policies.google.com/terms), [Privacy Policy](https://policies.google.com/privacy)
* Apple Maps: [Terms of Use](https://www.apple.com/legal/internet-services/maps/terms-en.html), [Privacy Policy](https://www.apple.com/legal/privacy/)
* OpenStreetMap: [Terms of Use](https://osmfoundation.org/wiki/Terms_of_Use), [Privacy Policy](https://osmfoundation.org/wiki/Privacy_Policy)

The optional "Powered by Bearius" link in the footer is off by default. It is a plain nofollow link to bearius.org and loads nothing.

== Installation ==

1. Go to Plugins > Add New, search for "Bearius Calendar", then install and activate it.
2. A new "Bearius Calendar" menu appears. Open Bearius Calendar > Settings to choose views, colours and addresses.
3. Add events by hand, or import them on the Import tab of the settings.
4. The calendar is ready at /events/ (you can change the address in the settings). To show it on any page, use the "Events calendar" block, the Elementor widget or the `[bearius_calendar]` shortcode.

== Frequently Asked Questions ==

= How do I show the calendar on a page? =

Use the "Events calendar" block, the "Events calendar" Elementor widget or the shortcode:

`[bearius_calendar view="list" count="20" category="concerts" city="poznan"]`

Main attributes: `view` (list, month, tiles), `view_tablet`, `view_phone`, `count`, `category`, `city`, `venue`, `organizer` (slugs or IDs, comma separated), `featured`, `filters`, `switcher` and `title`. For a short list of the next events use `[bearius_upcoming]`.

= Can phones and computers show different views? =

Yes. Choose the default views per device in Settings > General, or per block, widget and shortcode with `view_tablet` and `view_phone`. Pages stay cacheable, because each view is rendered once and the right one is shown by screen width.

= How do I move from The Events Calendar? =

Open Bearius Calendar > Settings > Import. The plugin shows what it found and converts events, venues, organizers and categories in the background. Events keep their IDs and addresses, old URL bases redirect, and the original data is not changed, so you can undo the conversion.

= Can I import from Google Calendar, Outlook or another site? =

Yes, from any calendar that offers an .ics address. In Google Calendar it is the "Secret address in iCal format" in the calendar settings. Add it as a subscription and new and changed events arrive on their own.

= Does it work with WP All Import? =

Yes, including the free version of WP All Import. In step 3 of an import, open the "Bearius Calendar" section and map dates, venue, tickets and the other fields. Venues, cities and organizers are matched by name and aliases.

= My events have no images. Will the calendar look empty? =

No. Every view is designed to look complete without images. You can also set a fallback image that is used only for search engines and link previews.

= Does it work with dark themes? =

Yes. Choose light, dark or automatic mode (follows the visitor's system setting), each with its own colours, or "Theme" mode, which makes the calendar transparent and uses the text colour of your theme.

= Can I change the templates? =

Copy any file from the plugin's `templates` folder to `your-theme/bearius-calendar/` and edit the copy. In block themes you can also edit the event templates in the Site Editor.

= Will it slow down my site? =

Files load only on pages that show the calendar. Dates come from an indexed table, results are cached when an object cache is available, and images use sizes that already exist, so no new sizes are generated.

= What happens to my data when I delete the plugin? =

Your events always stay. Settings and the date index stay too, unless you switch on "Clean up when deleting the plugin" in Settings > Advanced.

= Does the plugin add a link to my site? =

Only if you turn it on. The "Powered by Bearius" link is off by default.

== Changelog ==

= 1.0.0 =
* First public release.
