Description
Displays a calendar (Google Calendar, Apple Calendar/iCloud, Microsoft 365 /
Outlook Calendar, or Konzertmeister – via iCal/ICS link) as an agenda list,
in the style of “date box on the left, title/date/time/location/description
on the right”. No click behavior (no modal, no redirect) – text remains
normally selectable/copyable.
Provided free of charge by KlangAgenda.de – on
Klangagenda.de you can promote your concerts free of charge across your
region, book rehearsal and concert venues, and offer your own space to
others to make better use of it.
All settings (including a detailed step-by-step guide for each calendar
provider) are available in the WordPress backend under the dedicated
top-level menu “Klangagenda Kalender” (with its own calendar icon).
Shortcodes
[klangagenda]
Shows all upcoming events (including recurring ones, e.g. weekly
rehearsals).
[klangagenda_no_recurring]
Shows upcoming events WITHOUT recurring events (e.g. only
concerts/special events, no weekly rehearsals).
[klangagenda_konzerte]
Shows only events whose title contains the word “Konzert” (German for
“concert”, case-insensitive), e.g. “Winterkonzert”, “Sommerkonzert”,
“Adventskonzert”. By default shows neither a date badge nor a
description per event – instead, the description of the first (next)
event is shown once at the top of the whole list.
By default, this shortcode shows no “Buy tickets” button per event.
The attribute ticket_button="ja" turns this on. beschreibung="nein"
hides the intro description at the top, and badge="ja" shows the date
badge per event:
[klangagenda_konzerte ticket_button="ja" badge="ja" beschreibung="nein"]
“(+)”/”(-)” markers (e.g. from Konzertmeister sync) are automatically
stripped from event titles in all shortcodes.
All shortcodes accept an optional count attribute, e.g.
[klangagenda count=”5″]. If omitted, the default count from the
plugin settings is used.
Fixed date window per post (ab / bis)
Normally the shortcodes automatically show the next upcoming events
from now on. For the typical workflow (one post per concert
tour/period; once it’s over the post moves into the archive and a new
post with the next dates is created), there are optional attributes
ab (from) and bis (until) (format YYYY-MM-DD):
[klangagenda_konzerte ab="2026-09-01" bis="2026-09-14"]
This makes this specific post permanently show exactly the events in
this time window – even once they’re in the past. ab and bis can
also be used individually.
“Load more” button
[klangagenda] and [klangagenda_no_recurring] automatically show a
“Mehr Termine” (load more) button below the list whenever more events
are available beyond the currently shown count. Clicking it loads more
events via AJAX (no page reload). The button does not appear on the
[klangagenda_konzerte] shortcode and can additionally be hidden
explicitly via [klangagenda button="nein"].
“orchestriert von klangagenda.de”
Below each event list (or below the “load more” button, if present),
a subtle, light-gray, centered note “orchestriert von klangagenda.de”
linking to https://klangagenda.de can be shown. It is switched off by
default and only appears after a site administrator actively ticks the
checkbox in the backend under “Klangagenda Kalender”; when it is off,
the line is removed from the HTML completely.
Recurring events (RRULE)
RRULE processing covers the common patterns (daily/weekly/monthly/
yearly, interval, count, end date, weekdays). Recurring events without
an end date are pre-calculated up to the configured time horizon
(default 12 months), and continued automatically on the next sync.
Ticket button
The button appears when the title contains “konzert” and the
description contains an http(s) link. Only the first link found is
used.
Screenshots






Installation
- Upload the whole “klangagenda-calendar” folder to wp-content/plugins/, or install the plugin directly via Dashboard -> Plugins -> Add New.
- Activate the plugin under “Plugins” in the WordPress dashboard.
- In the backend menu “Klangagenda Kalender” (top level, own icon), enter your calendar’s subscription link under “Kalenderlink einfügen”. Google Calendar, Apple Calendar (iCloud), Microsoft 365 / Outlook Calendar, and Konzertmeister calendars are supported – both https:// and webcal:// links work directly. A detailed step-by-step guide for each provider is available in the “Anleitung” tab.
- Save -> the plugin syncs immediately and then automatically every 30 minutes via WP-Cron.
- Insert one of the shortcodes (e.g.
[klangagenda]) into a page or post.
FAQ
-
Does the plugin cost anything?
-
No, the plugin is free and provided by KlangAgenda.de.
-
Which calendars are supported?
-
Any calendar that offers a public iCal/ICS subscription link: Google
Calendar, Apple Calendar (iCloud), Microsoft 365 / Outlook Calendar,
and Konzertmeister. Both https:// and webcal:// links are accepted
directly. -
How often are events updated?
-
Automatically every 30 minutes via WP-Cron, plus immediately after
saving the settings or via the “Jetzt synchronisieren” button.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Klangagenda Calendar” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Klangagenda Calendar” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.22.2
- Change: the optional “orchestriert von klangagenda.de” checkbox in the
settings now explains the benefit (helps Klangagenda.de and with it your
events to be found more easily). Readme corrected: the note is off by
default and only shown after an explicit opt-in.
2.22.1
- Fix: the automatic synchronization (WP-Cron job) is now re-created
automatically if it has gone missing. Previously it was only scheduled on
activation, so a lost cron entry (e.g. cleared by another plugin or tool)
silently stopped all automatic syncs.
2.22.0
- Fix: time zones in subscribed calendars are now evaluated correctly. The
TZID parameter of DTSTART/DTEND/RECURRENCE-ID/EXDATE (e.g.
DTSTART;TZID=Europe/Berlin:20260108T193000) is converted to the website’s
WordPress time zone, UTC values (Z) likewise, and values without a
time zone count as local time. Previously the TZID was ignored, which
showed wrong times whenever the calendar’s time zone differed from the
website’s. - Change: if the calendar link has been shared with the Klangagenda Hub, the
plugin no longer additionally sends the recurring series of that calendar
(ics_IDs) – the Hub reads the link itself. This avoids duplicates and
unnecessary transfers; only “Eigene Termine” are sent in that case.
2.21.0
- New: right after activating the plugin on a still unconfigured site, an
onboarding screen now asks whether an account on Klangagenda.de already
exists (if so, straight to connecting with the Hub) and, if not, whether
events should be published on Klangagenda.de for free (if so, a short
form for accent color, default ensemble name and calendar link, then
straight to connecting with the Hub; if not, straight to the normal
setup). Does not reappear on an already configured site after a simple
deactivate/reactivate.
2.20.0
- New: master data (ensemble name, accent color, this site’s URL, and the
subscribed calendar link) is now exchanged once with the Klangagenda Hub
right after connecting (and again on every full sync): locally already
set values are sent, and any field still empty locally is filled in from
the Hub’s response – an existing local value is never overwritten. This
avoids typing the same master data twice, whichever side was set up
first. - New: if the connection was disconnected from the Hub side (the Hub
invalidates the refresh token), the plugin now recognizes this
(invalid_grant) and shows a dedicated notice in the backend asking to
reconnect – without deleting any local settings or events.
2.19.0
- New: when pushing a subscribed external calendar (ICS link) to the
Klangagenda Hub, recurring series are now additionally sent in a compact
form (base series + a list of exceptions for individually moved, changed
or deleted single occurrences, derived from RECURRENCE-ID/EXDATE in the
ICS feed) – previously, changing a single occurrence of a recurring
series (e.g. “only this event” in Google Calendar) could lead to a
duplicate on the Hub, since it independently re-expanded the unchanged
recurrence rule.
2.18.0
- New: if a “Konzert”/”Probenwochenende” category is corrected on the
Klangagenda Hub side (via its “Zusatzinfos” editing), the plugin now pulls
that correction back and applies it to the local event before pushing
again – previously a correction made on the Hub only lived there and got
overwritten again by the plugin’s next push (which still sent the old
category).
2.17.0
- New: the category (“Konzert” / “Probenwochenende”) of an own event is now
also included as a standard CATEGORIES property in the public .ics
subscribe feed, so subscribing systems (e.g. the Klangagenda Hub) can read
it directly instead of only guessing it from the title. “Sonstige
Termine” is the neutral default and is intentionally not output.
2.16.2
- Fix: saving, editing or deleting an “Eigene Termine” (own) event re-pushed
the subscribed calendar link to the Klangagenda Hub as well (since 2.16.0),
not just the own events – causing the hub to briefly show only the own
events while it re-fetched the external calendar in the background,
making events from that calendar seem to vanish until the next sync. Own
events now only push themselves; the calendar link is pushed again only
during the regular sync (cron / “Jetzt synchronisieren”).
2.16.1
- Fix: [klangagenda_konzerte … badge=”ja” beschreibung=”ja”] still showed
the description as a single one-off intro text above the whole list
instead of inside each event’s own card below its date/location (the
position fix for Konzertmeister events only applied to the default
[klangagenda] shortcode so far). With badge=”ja” the card already shows
everything like the default shortcode, so the description now also
renders per event in the correct position there, and the separate intro
text is skipped in that case to avoid showing it twice.
2.16.0
- Change: Klangagenda-Hub sync now transmits both configured sources
together – if a subscribed external calendar link is set, it is still
pushed, but “Eigene Termine” (own events created directly in the plugin)
are now ALSO pushed to the hub alongside it, instead of being skipped
entirely whenever a calendar link is present. - New: the category (“Konzert” / “Probenwochenende” / “Sonstige Termine”)
of an own event is now included when pushing it to the hub. - New: if an own event has its own ensemble name set and it differs from
the central default ensemble name (Einstellungen), it is now sent to the
hub as the event’s organizer/promoter name. - New: the “Besetzung” (cast/lineup) text of an own event is now prepended
to its description when pushed to the hub, since the hub has no separate
field for it.
2.15.3
- Fix: the “Ticket-/Info-Link” field of an own (local) event was ignored in
the default list view – it only ever showed a ticket button there when a
link was found inside the description text of a “Konzert”-titled event
(meant for synced calendars without a dedicated field). The dedicated
field now always takes priority and shows the button, in every display
variant.
2.15.2
- Fix: the 2.15.1 fix only corrected the length of the internal format array
for the shared-events-cache rebuild, not its order – several fields
(end date, recurring flag, source, ticket link, image) were still mapped
to the wrong placeholder, which could corrupt the end date and cause the
event to be invisible everywhere. Now fully corrected. - Fix: creating/editing an own event no longer allows an end date/time
before the start date/time – the end date now automatically follows the
start date when creating a new event (until changed by hand), and as a
safety net the end is clamped to the start if it would end up earlier.
2.15.1
- Fix: own (local) events created or edited after updating to 2.15.0 were
silently dropped from the shared events cache and therefore did not show
up in any shortcode – caused by a mismatched format array in the internal
cache-rebuild query after the new category field was added.
2.15.0
- New: central default ensemble name (Einstellungen) – pre-fills the
Ensemblename field when creating a new event (still overridable/clearable
per event as before) and is shown as a fallback for events that have no
ensemble name of their own, including synced/subscribed calendar events. - New: category field (“Konzert” / “Probenwochenende” / “Sonstige Termine”)
when creating an own event, plus two new shortcodes –
[klangagenda_probenwochenende] and [klangagenda_sonstige] – to show only
events of that category. [klangagenda_konzerte] now also includes own
events tagged “Konzert” in addition to its existing title/category
detection.
2.14.3
- Changed: restored the clickable “Outlook/Windows” link (webcal://) – it
does correctly open Outlook’s “Subscribe from internet” dialog, Windows’
own webcal: handler just pre-fills it with a broken address (missing
“https:”), a known OS-level bug outside the plugin’s control. The hint now
explains that and gives the full address to paste in instead.
2.14.2
- Changed: removed the clickable “Outlook/Windows” link – neither webcal://
nor a plain https link can reliably trigger a live subscription in Outlook
on Windows (the https link just downloads the file as a one-time import).
Only the copyable feed address remains, with instructions for adding it
manually under “Kalender hinzufügen -> Aus dem Internet abonnieren”, which
is the standard way to do this on Windows anyway.
2.14.1
- Fixed: the “Zum Kalender hinzufügen (Outlook/Windows)” link now uses the
plain https address instead of webcal:// – Outlook strips just the
“webcal:” prefix when receiving that link, leaving a schemeless URL
(“//domain/…”) that it then rejects itself as “Ungültige URL”.
2.14.0
- Fixed: the subscribe feed now has its own clean URL ending in “kalender.ics”
(instead of “/?klanca_ics_feed=1”) – Outlook’s “Subscribe from internet”
dialog rejected the previous query-string URL as “Ungültige URL” since it
didn’t look like an .ics file.
2.13.5
- Changed: the “Zum Apple Kalender hinzufügen” / “Outlook/Windows” links use
webcal:// again instead of a plain https download – a downloaded .ics file
only imports events once, it does not keep them updated like a real
subscription. Added the feed address as copyable text for manually adding
it as a calendar subscription when the link doesn’t open automatically.
2.13.4
- Fixed: the subscribe feed URL could come out protocol-relative
(“//domain/…”, no “https:”) on sites where a caching/CDN plugin filters
home_url() – Windows/Outlook showed “Ungültige URL” for that. The scheme
is now always enforced.
2.13.3
- Changed: the “Zum Apple Kalender hinzufügen” / “Outlook/Windows” links now
use the normal https feed URL instead of webcal:// – the webcal: scheme
had no registered handler in some browsers (notably Chrome), so nothing
happened on click. Added a fallback hint for manually adding the link as
a calendar subscription.
2.13.2
- Fixed: the public .ics subscribe feed (used by the “Kalender abonnieren”
section) is no longer served via /wp-admin/admin-post.php, which many
hosting/security setups block for non-logged-in visitors – it now uses a
normal frontend URL, so the Apple/Outlook subscribe links and the Google
Calendar import actually work.
2.13.1
- Changed: the “Kalender abonnieren” toggle is now a plain accent-colored
text link instead of a bordered button.
2.13.0
- New: collapsible “Kalender abonnieren” section at the end of the event
list, with links to subscribe to the whole calendar (all upcoming events)
in Apple Calendar, Google Calendar, or Outlook/Windows. Backed by a new
public .ics feed that always reflects the current events. Can be hidden
via a new setting.
2.12.3
- Fixed: the “Termin speichern” link no longer gets squeezed next to the
“Tickets kaufen” button – it now always sits on its own line below it.
2.12.2
- Fixed: the admin settings preview for the “Detailansicht (aufklappbar)”
design now uses the same CSS classes as the live site for the
“Tickets kaufen” button, so the preview’s buttons are the same height
and aligned like on the actual website.
2.12.1
- Fixed: the “Nur Stadtname statt ganzer Adresse in der Liste anzeigen”
setting now also controls the Detailansicht’s overview heading – that
heading ignored the setting and always showed only the city before.
2.12.0
- New setting: “Termin speichern” (.ics-Download) can now be shown or hidden
for all calendar view designs, not just the Detailansicht. Default:
enabled (previous Detailansicht behaviour is unchanged).
2.11.3
- Detailansicht design: opening “Details” on one event now automatically
closes any other event’s details that were still open, so only one is
expanded at a time.
2.11.2
- Moved the “Ortsname-Größe (Detailansicht)” setting next to the “Ort”
setting (short city name vs. full address in the list).
2.11.1
- Renamed the “Eigene Termine” admin tab to “Termine anlegen”.
2.11.0
- New settings (Einstellungen-Tab), each like the existing “Terminbeschreibung
direkt unter dem Termin anzeigen”: whether the Ensemblename and the
Besetzung show directly in the list, or only in the popup (standard/card
designs) resp. the expandable area (Detailansicht); and whether the list
shows only the city or the full address for the location (the full address
then moves to the popup/expandable area). All three default to the
previous behaviour, so nothing changes until adjusted.
2.10.0
- Ensemblename and Besetzung (own events) now also appear in the standard
and card calendar view designs, not just in the Detailansicht: the
Ensemblename always shows when filled in, and the Besetzung appears at
the same place and under the same “Beschreibung direkt anzeigen” setting
as the description (inline, or together with it in the popup). - Renamed the “Ensemblename (kurz)” field to “Ensemblename”.
2.9.5
- Fixed a bug in the Detailansicht design where the same event shown more
than once on a page (e.g. additionally in a “next concert” shortcode)
produced duplicate HTML ids – clicking “Details” on the second occurrence
then wrongly toggled the first occurrence’s panel instead of its own.
2.9.4
- Removed the separate “Kurzbeschreibung/Programm” field for own events – the
“Titel” field is now also shown in the overview of the “Detailansicht
(aufklappbar)” calendar view design, where the subtitle used to appear.
2.9.3
- Detailansicht design: the city is now correctly extracted even when the
location field ends with a country (e.g. “Deutschland”) – that is no
longer shown as the city. - Detailansicht design: the “Details” and ticket buttons are now always
exactly the same size and aligned on the same line (a leftover margin
from the generic ticket-button style was pushing the ticket button down).
2.9.2
- Updated the placeholder examples for the subtitle/program, short ensemble
name and line-up fields of own events.
2.9.1
- Detailansicht design: the overview now shows the city name instead of the
venue name. - Detailansicht design: the “Details” and ticket buttons are now always the
same size (the toggle button no longer shrinks when expanded). - Detailansicht design: on mobile, both buttons now stretch to the full
available width. - Detailansicht design: the view now uses the full available width instead
of the usual 700px reading width.
2.9.0
- New calendar view design “Detailansicht (aufklappbar)” (“Detail view
(expandable)”), selectable in the existing “Kalenderansicht” setting:
weekday/date/time, venue name instead of the usual title, an optional
subtitle/program line, an optional short ensemble name, a “Details” toggle
button that expands a panel with location, line-up (“Besetzung”) and
website/ticket link, and a “Termin speichern” button that downloads the
event as a real .ics file (generated client-side, no server round-trip).
Works for calendar-link/hub events too; the ensemble/subtitle/photo fields
are only available for self-created local events and are simply omitted
when not set. - Own events (“Eigene Termine”) now have a dedicated subtitle field, a short
and a long ensemble name field, and a rich-text editor (formatting, image
upload) for the description instead of a plain text field. - The venue-name heading size in the new detail view has its own setting,
independent of the other designs’ title size.
2.8.0
- Konzertmeister descriptions that start with a category label (“Auftritt -“,
“Probe -“, “Sonstiges -“, “Probenanfrage -“, “Auftrittsanfrage -“,
“Information -“) now show only the text after the label – the label itself
is hidden. - An event labeled “Auftritt” is now always treated as a concert (shown in
[klangagenda_konzerte], eligible for the “Tickets kaufen” button),
regardless of what the title says. - Events labeled “Probenanfrage”, “Auftrittsanfrage” or “Information” are
internal requests/notes, not public events, and are now hidden from the
calendar by default. A new setting lets you show them anyway.
2.7.2
- Fix: when a single occurrence of a recurring event (Google Calendar, iCloud,
etc.) was moved or edited on its own (“this event” instead of “all events”),
it could appear twice – once at its old time and once at its new time. The
moved/edited occurrence is now correctly recognized and shown only once, at
its new time. A single occurrence deleted this way (without removing the
whole series) is also now correctly removed.
2.7.1
- The “Klangagenda Hub” connection now also works in reverse: events created
directly on Klangagenda.de for your account (e.g. via the online form
there, not entered in this plugin) are now automatically fetched back and
merged into your calendar here as well, with duplicate protection to
prevent an event from appearing twice. Requires Kalender-Hub 8.38.0 or
later on the connected Klangagenda site.
2.7.0
- The label text of the “Tickets kaufen” and “Mehr Termine” buttons is now
configurable in the backend settings. Leave the field empty to keep using
the previous default text.
2.6.4
- Fix (
[klangagenda_konzerte]only): an all-day event (e.g. an internal
schedule imported from Konzertmeister) could end up as the detached intro
description shown once above the whole list, instead of within its own
event card. All-day events are now excluded from that intro selection and
instead show their description normally under location/date in their own
card, like on the other shortcodes.
2.6.3
- Fix: an own event synced both via the calendar link and via the “Klangagenda
Hub” venue-events feature (2.6.2) could appear twice in the list. Events
from the Hub with the same title and start time as an already-synced own
event are now skipped automatically.
2.6.2
- New opt-in on the “Klangagenda Hub” tab (only shown if a venue is managed
there): show events of other organizations taking place at your venue
(created on Klangagenda) alongside your own events. Off by default; each
event is labeled with the organizing group’s name.
2.6.1
- The “Klangagenda Hub” connection now matches the real, already-built Hub API
exactly (correct base domain, matching endpoints and field names). - The venue settings and usage statistics from the Hub are now displayed as
readable tables in the backend instead of raw data. - Fixed a bug where a Hub error response (e.g. “no venue managed”) could be
mistaken for successful data.
2.6.0
- New “Eigene Termine” (own events) tab: create events directly in the plugin
backend, with no external calendar link and no Klangagenda account required- including full recurrence support (daily/weekly/monthly/yearly, interval,
weekday selection, end date or occurrence count) and an optional image and
ticket/info link per event. These events are automatically merged with any
synced calendar events on the frontend.
- including full recurrence support (daily/weekly/monthly/yearly, interval,
- New “Klangagenda Hub” tab: connect the plugin to your own Klangagenda
account. If your account manages a venue there, the same venue settings and
usage statistics become available here. If you connect without managing a
venue, either your calendar link (if configured) or your own events (if not)
are automatically transmitted to Klangagenda and shown there.
2.5.1
- Fix: increased spacing below the month heading (introduced in 2.5.0) so it
no longer sits too close to the following event.
2.5.0
- The corner radius of the “Tickets kaufen” and “Mehr Termine” buttons is now
configurable. - Font size and color for the event title, date, location and description
are now individually configurable in the backend. - Optional month headings (e.g. “Oktober 2026”) can now be shown between
events whenever the month changes.
2.4.0
- The per-event description can now be shown or hidden, and its text color
is configurable in the backend. - When the description is hidden, each event becomes clickable and opens a
popup with the full event details (title, date, location, description)
instead – text selection/copying on the rest of the list is unaffected. - The “Kalenderansicht” preview cards now also show the description color
and the popup behavior live.
2.3.2
- Fix: after automatically (re-)creating the events table (see 2.3.1), the
calendar is now also synchronized immediately, instead of waiting for the
next scheduled sync (up to 30 minutes) or a manual click on “Jetzt
synchronisieren”.
2.3.1
- Fix: the events database table is now also created/repaired on every
page load if missing, not only on plugin activation. This prevents
“table doesn’t exist” errors when the plugin is updated by overwriting
its files (e.g. via FTP or a hosting file manager) instead of being
deactivated/reactivated through the WordPress admin.
2.3.0
- Added three additional card-style calendar views (date on the right with
an accent-colored left border, date on the left, and a full-height
accent-colored date block) as alternatives to the standard date badge. - New backend section “Kalenderansicht” under Settings to preview all
available views live (using the currently configured colors, even before
saving) and select the active one. - New configurable card background color for the card-style views.
2.2.0
- Removed the legacy
[google_agenda]/[google_agenda_no_recurring]
/[google_agenda_konzerte]shortcode aliases introduced in 2.0.0;
please switch any existing pages to[klangagenda]/
[klangagenda_no_recurring] /[klangagenda_konzerte].
2.1.0
- Prepared for release in the WordPress plugin directory (full plugin
header, GPLv2 license, readme.txt in WordPress.org format, English
readme, dropped “Plugin” from the plugin name). - All internal identifiers (classes, functions, options, database
table, asset handles, hooks) renamed to a distinctiveklanca_/
KLANCA_ prefix; settings from the predecessor plugin are migrated
automatically on activation. - webcal:// links are stored/displayed unchanged and automatically
switched to https:// internally when fetched. - Sync interval changed to 30 minutes (custom WP-Cron interval).
- Frontend hint renamed to “orchestriert von klangagenda.de” and now
hidden by default; site administrators must actively opt in via a
checkbox in the settings before it is shown. - All CSS and JavaScript are now loaded via
wp_enqueue_style()/
wp_enqueue_script() instead of inline<style>/<script>tags. - Hardened output escaping and database queries per WordPress coding
standards.
2.0.0
- Renamed to “Klangagenda Calendar Plugin” with its own top-level menu
item in the WordPress backend. - Shortcodes renamed to [klangagenda], [klangagenda_no_recurring],
[klangagenda_konzerte] (previous [google_agenda] shortcodes remain
functional for backward compatibility). - New “Anleitung” tab with step-by-step instructions per calendar
provider. - Optional “powered by” hint on the frontend, toggleable in the
backend.
1.3.1
- Fix: moved asset registration from
plugins_loadedto
wp_enqueue_scripts to avoid a WordPress notice (“headers already
sent”) when saving other forms.
1.3.0
- Konzerte shortcode: toggles for ticket button, description, and date
badge; automatic removal of “(+)”/”(-)” markers from event titles.
1.2.0
- “Load more” button with AJAX loading and loading animation.
- Configurable accent/hover colors.
1.1.0
- Separate concerts shortcode with automatic “buy tickets” button.
- Fixed date windows (
ab/bis) per post.
1.0.0
- Initial release: Google Calendar agenda view with RRULE support.