{"id":312678,"date":"2026-06-04T14:34:24","date_gmt":"2026-06-04T14:34:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/site-calendar-lite\/"},"modified":"2026-06-04T14:31:55","modified_gmt":"2026-06-04T14:31:55","slug":"getsitecalendar-lite","status":"publish","type":"plugin","link":"https:\/\/ru.wordpress.org\/plugins\/getsitecalendar-lite\/","author":5815065,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1.18","stable_tag":"1.1.1.18","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"GetSiteCalendar Lite","header_author":"GetSiteCalendar","header_description":"Free events calendar for WordPress. Month and list views, venues, organizers, categories, basic recurring events, free RSVP, ICS feed, Google\/Outlook calendar integration, JSON-LD schema, REST API. Upgrade to Site Calendar Pro for week\/day\/photo views, paid tickets, custom fields, CSV import, door check-in, and more.","assets_banners_color":"","last_updated":"2026-06-04 14:31:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/getsitecalendar.com\/site-calendar-lite\/","header_author_uri":"https:\/\/getsitecalendar.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.1.18":{"tag":"1.1.1.18","author":"matureman","date":"2026-06-04 14:31:55"}},"upgrade_notice":{"1.1.1.18":"<p>Multi-ticket cart now fully working in Lite (no longer registers only the first ticket type). Calendar view output explicitly escaped via wp_kses() with a structural allowlist. Last inline  migrated to wp_add_inline_style. Safe drop-in upgrade.<\/p>","1.1.1.17":"<p>Tickets and Attendees now fully accessible in Lite admin (per WP.org guideline 5). REST venue\/organizer contact fields gated to authenticated users. Safe drop-in upgrade.<\/p>","1.1.1.16":"<p>Renames public shortcodes to use the plugin prefix (e.g. [getsitecalendar] replaces [pro_calendar]). Old shortcode names remain registered as backward-compat aliases so existing pages keep working. Also: final Plugin Check warning cleanup. Safe drop-in upgrade.<\/p>","1.1.1.15":"<p>Code-quality release: comprehensive WordPress.org Plugin Check sweep. Every output escaped at output site, every input sanitised early, every gettext call documented. Safe drop-in upgrade.<\/p>","1.1.1.14":"<p>Architectural change for WP.org compliance: recurrence engine moved from Lite into Site Calendar Pro. Sites running Pro MUST upgrade Pro to 1.1.5 alongside. Also: opt-in credit, REST hardening, RSVP sanitisation, text-domain rename.<\/p>","1.1.1.13":"<p>Critical fix: restores the missing Subscribe to calendar button and Powered by Site Calendar credit on archive\/list views, and the Add-to-calendar buttons on single-event pages. Strongly recommended upgrade for any site running 1.1.1.12.<\/p>","1.1.1.12":"<p>Rename for WordPress.org directory: now listed as &quot;GetSiteCalendar Lite&quot;. Tested on WordPress 6.9. Safe drop-in upgrade \u2014 existing installs keep all data and settings.<\/p>","1.1.1.11":"<p>Adds a small &quot;Powered by Site Calendar&quot; credit next to the Subscribe button on calendar views. Hideable via filter or via Pro 1.1.3+ setting. Safe drop-in upgrade.<\/p>","1.1.1.10":"<p>Confirmation email template now matches your Appearance colour settings. Drop-in upgrade; sites that haven&#039;t customised Appearance see no change.<\/p>","1.1.1.9":"<p>Mobile fix for the editorial list view \u2014 prevents the one-letter-per-line title wrap on narrow viewports. Safe drop-in upgrade.<\/p>","1.1.1.8":"<p>Adds comma-separated category filtering to <code>[getsitecalendar_list]<\/code>. Combine with Site Calendar Pro 1.1.1+ for full multi-category support in compact mode. Safe drop-in upgrade.<\/p>","1.1.1.7":"<p>Header fix \u2014 Plugin URI and Author URI are now distinct, as required by WordPress.org. No functional changes.<\/p>","1.1.1.6":"<p>Documentation-only update \u2014 updated Contributors credit for WordPress.org submission. No code changes.<\/p>","1.1.1.5":"<p>Documentation-only update \u2014 corrected Month view screenshot caption. No code changes.<\/p>","1.1.1.4":"<p>Documentation-only update for the WordPress.org plugin directory. No code changes.<\/p>","1.1.1.3":"<p>Adds a customer-configurable Week view chip colour to Settings \u2192 Appearance. Existing colour settings are unchanged on upgrade.<\/p>","1.1.1.2":"<p>Critical fix: restores the Register \/ RSVP form on event pages. Strongly recommended for any site using ticketing or free RSVP.<\/p>","1.1.1.1":"<p>List-view redesign \u2014 image moves right, larger size, excerpt added, inline ticket-pricing CTA. Drop-in upgrade; no DB changes.<\/p>","1.1.1.0":"<p>Adds featured-image thumbnails to the Month grid and List view, with category-coloured icon fallbacks. Drop-in upgrade.<\/p>","1.1.0.7":"<p>Adds the Help tab and consolidates several admin-menu fixes. Drop-in replacement for 1.1.0.6.<\/p>","1.1.0.3":"<p>Fixes the suppressed &quot;Need Recurring Events?&quot; upgrade nudge. Drop-in replacement for 1.1.0.2.<\/p>","1.1.0.2":"<p>Removes the recurrence authoring meta box from Lite (Pro-only feature). Existing recurring events still render.<\/p>","1.1.0.1":"<p>Domain swap to getsitecalendar.com. No functional changes.<\/p>","1.1.0":"<p>Adds multi-organiser, event options, venue map toggles, recurring upgrade nudge, and admin-bar shortcut. Fully backward compatible.<\/p>","1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.1.18"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The classic month grid \u2014 a clean overview of every event, with venues and times one click away.","2":"Editorial list view with featured images, excerpts and inline ticket pricing.","3":"Beautiful single-event pages with venue, organizer, and a built-in RSVP form.","4":"Day view with editorial layout \u2014 title, venue, organizer, excerpt and event image.","5":"Match the calendar to your brand: pick primary, accent, event link, and Week view chip colours.","6":"Familiar WordPress event editor with date\/time, venue, organizer, categories, and Event Options.","7":"Week view with time-blocked events and customisable chip colours.","8":"Photo view turns your events into a visual gallery \u2014 great for venues, festivals and exhibitions."}},"plugin_section":[],"plugin_tags":[416,27824,4754,5881,15480],"plugin_category":[40],"plugin_contributors":[265840],"plugin_business_model":[],"class_list":["post-312678","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-event-tickets","plugin_tags-events-calendar","plugin_tags-recurring-events","plugin_tags-rsvp","plugin_category-calendar-and-events","plugin_contributors-matureman","plugin_committers-matureman"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/getsitecalendar-lite.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>A WordPress events calendar that just works.<\/strong> Site Calendar Lite is the free events plugin built for community groups, clubs, churches, schools and small venues \u2014 sites that need a beautiful calendar without the bloat or the enterprise pricing.<\/p>\n\n<p>Publish your first event in minutes. Embed the calendar with one shortcode. Let visitors RSVP without forcing them to create an account. Subscribe to your event feed in Google Calendar, Apple Calendar or Outlook. All free, all GPL, all maintained by the team that built it.<\/p>\n\n<p><strong>Free features<\/strong><\/p>\n\n<ul>\n<li>Custom post types: Events, Venues, Organizers<\/li>\n<li>Five views: Month grid + List (Week, Day, Photo are Pro)<\/li>\n<li>Single-event pages with venue and organizer details<\/li>\n<li>Featured-image thumbnails in every view, with category-coloured icon fallbacks for events without an image<\/li>\n<li>Categories and tags<\/li>\n<li>Featured events with visual highlight<\/li>\n<li>Tickets (one or more ticket types per event, each with label, price, capacity, and max-per-order)<\/li>\n<li>Attendees list in wp-admin showing every front-end RSVP<\/li>\n<li>Free RSVP form with attendee capture and basic confirmation email<\/li>\n<li>ICS feed for calendar app subscriptions (Google Calendar, Apple Calendar, Outlook)<\/li>\n<li>Add-to-calendar buttons (Google, Outlook, .ics download)<\/li>\n<li>JSON-LD schema for SEO<\/li>\n<li>REST API for headless \/ external integrations<\/li>\n<li>Customisable colours: primary, accent, event-link, and Week view chip colour<\/li>\n<li><code>[getsitecalendar]<\/code> shortcode for the full calendar UI<\/li>\n<li><code>[getsitecalendar_list]<\/code> shortcode for upcoming-events lists<\/li>\n<li><code>[getsitecalendar_search]<\/code> shortcode for filter forms<\/li>\n<\/ul>\n\n<p><strong>Upgrade to Site Calendar Pro for:<\/strong><\/p>\n\n<ul>\n<li>Week, Day and Photo views with toolbar switcher<\/li>\n<li>Full recurring-event series management (skip \/ override per occurrence)<\/li>\n<li>Multi-ticket-type RSVP with capacity gauges and CSV export<\/li>\n<li>Paid tickets via Stripe Checkout and WooCommerce<\/li>\n<li>Custom fields engine with front-end filter UI<\/li>\n<li>CSV bulk import with smart venue\/organizer auto-create<\/li>\n<li>Front-end event submission for logged-in users<\/li>\n<li>Compact upcoming-events widget and Gutenberg block<\/li>\n<li>Door check-in with QR codes and mobile scanner<\/li>\n<li>Dedicated Pro Calendar Scanner role for door staff<\/li>\n<li>Branded HTML confirmation emails with custom From \/ Reply-To<\/li>\n<li>Sequential <code>PCAL-<\/code> order numbers for unified audit trail<\/li>\n<li>Priority email support<\/li>\n<\/ul>\n\n<p>Site Calendar Pro is a separate commercial add-on available from <a href=\"https:\/\/getsitecalendar.com\/\">getsitecalendar.com<\/a>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Site Calendar Lite does not send analytics, telemetry, or any data about your site back to its authors. The only external service the plugin interacts with is:<\/p>\n\n<p><strong>Google Maps embed (single-event pages)<\/strong><\/p>\n\n<p>When a single-event page is rendered and the event has a venue with an address, the plugin embeds a Google Maps iframe so visitors can see the venue location and get directions. The embed uses Google's public <code>https:\/\/www.google.com\/maps?output=embed<\/code> endpoint and does not require an API key.<\/p>\n\n<ul>\n<li><strong>What data is sent:<\/strong> The venue address only (no visitor data, no event details, no attendee data). The browser \u2014 not the server \u2014 is what loads the iframe, so the request originates from the site visitor, not from your WordPress installation.<\/li>\n<li><strong>When it's sent:<\/strong> Each time a single-event page is rendered that has a venue with a non-empty address. Events without a venue address do not embed the map.<\/li>\n<li><strong>Provided by:<\/strong> Google LLC.<\/li>\n<li><strong>Google Terms of Service:<\/strong> https:\/\/policies.google.com\/terms<\/li>\n<li><strong>Google Privacy Policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p>If you do not wish to embed Google Maps on event pages, simply leave the venue's address field empty \u2014 the map will not be rendered.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Site Calendar Lite stores attendee names and email addresses (provided via the RSVP form) in your own WordPress database, in the <code>pcal_attendee<\/code> custom post type. No data is sent to third parties from the server side. Site owners are responsible for their own privacy policy and GDPR compliance. See also the External services section above for information about Google Maps iframe embeds on single-event pages.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>site-calendar-lite<\/code> to <code>\/wp-content\/plugins\/<\/code>, or install via Plugins \u2192 Add New<\/li>\n<li>Activate the plugin<\/li>\n<li>Create a Page and add the <code>[getsitecalendar]<\/code> shortcode to display the calendar<\/li>\n<li>Add Events, Venues, and Organizers from the <strong>Site Calendar<\/strong> menu<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20site%20calendar%20lite%20truly%20free%3F\"><h3>Is Site Calendar Lite truly free?<\/h3><\/dt>\n<dd><p>Yes \u2014 fully free, GPLv2, no hidden upsells, no telemetry. The free version is a complete usable calendar plugin in its own right. Site Calendar Pro is an optional upgrade for sites that need advanced views, paid ticketing, or door check-in.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%20%2F%20site%20editor%3F\"><h3>Does it work with block themes \/ Site Editor?<\/h3><\/dt>\n<dd><p>Yes. The shortcodes work inside any Shortcode block, and the calendar renders cleanly inside <code>is-layout-constrained<\/code> parents.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>The free version doesn't require WooCommerce. Site Calendar Pro can route paid ticket sales through your existing WooCommerce gateways if you have it active.<\/p><\/dd>\n<dt id=\"how%20does%20data%20carry%20over%20to%20pro%3F\"><h3>How does data carry over to Pro?<\/h3><\/dt>\n<dd><p>Site Calendar Pro hooks into Lite's existing data model \u2014 same custom post types, same meta keys, same database tables. Installing Pro alongside Lite preserves every event, venue, organizer, and attendee record.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. Site Calendar Lite is under 110 KB total and loads its CSS \/ JS only on pages that contain the shortcode. There are no remote calls and no analytics.<\/p><\/dd>\n<dt id=\"can%20i%20match%20the%20calendar%20to%20my%20site%27s%20branding%3F\"><h3>Can I match the calendar to my site's branding?<\/h3><\/dt>\n<dd><p>Yes. Site Calendar \u2192 Settings \u2192 Appearance lets you pick a primary colour, accent colour, event-link colour, and Week view chip colour. Background, border and hover shades are derived automatically from each picked colour.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1.18<\/h4>\n\n<ul>\n<li><strong>Multi-ticket cart fully functional in Lite:<\/strong> The free RSVP handler in <code>class-pcal-rsvp-form.php<\/code> now loops over every ticket type in the submitted cart and registers an attendee for each one. Earlier Lite builds only registered the first ticket type (via <code>array_key_first()<\/code>) and silently discarded the rest, pushing users to upgrade for multi-ticket support. That behaviour violated WP.org guideline 5 (no functionality locked behind a paid upgrade) and has been removed entirely. Lite now supports as many ticket types per registration as the event admin has created.<\/li>\n<li><strong>Output escaping:<\/strong> Replaced the remaining <code>phpcs:ignore<\/code> escape-output annotations in <code>class-pcal-shortcodes.php<\/code> with proper <code>wp_kses()<\/code> calls using a new <code>pcal_calendar_kses_allowed()<\/code> allowlist (in <code>helpers.php<\/code>). The allowlist covers the structural HTML the calendar emits \u2014 div, span, table, time, figure, picture, svg, etc. \u2014 plus <code>data-*<\/code> and <code>aria-*<\/code> attributes used by the front-end JS to hydrate templates. Output-side escaping is now compliant with WP.org's \"escape late\" rule, no exceptions remain.<\/li>\n<li><strong>Inline style cleanup:<\/strong> Migrated the last inline <code>&lt;style&gt;<\/code> block (mobile responsive overrides in <code>class-pcal-archive-list.php<\/code>) from a direct <code>echo '&lt;style&gt;'<\/code> call to <code>wp_add_inline_style()<\/code> attached to the front-end stylesheet, per WP.org's enqueue requirement.<\/li>\n<li>No DB schema changes; no behavioural change beyond multi-ticket registration now working in Lite.<\/li>\n<\/ul>\n\n<h4>1.1.1.17<\/h4>\n\n<ul>\n<li><strong>Tickets and Attendees are now fully-functional Lite features<\/strong> per WordPress.org plugin-directory guideline 5 (no locked or hidden features). The post types <code>pcal_ticket<\/code> and <code>pcal_attendee<\/code> are admin-visible under Site Calendar in wp-admin. Admins can create tickets for any event (one or more ticket types, each with label, price, capacity, max-per-order, sort order, and an optional description). The Attendees list shows every front-end RSVP registration with name, email, event, ticket type, quantity, status, and registration timestamp.<\/li>\n<li><strong>REST data protection:<\/strong> Venue and Organizer phone\/email fields are stripped from public REST responses for unauthenticated callers (logged-in users with <code>edit_posts<\/code> capability see the full record). Prevents unauthenticated scraping of contact data not otherwise published on the front-end. Affects <code>\/wp-json\/pcal\/v1\/events<\/code>, <code>\/events\/&lt;id&gt;<\/code>, <code>\/venues<\/code>, <code>\/venues\/&lt;id&gt;<\/code>, <code>\/organizers<\/code>, <code>\/organizers\/&lt;id&gt;<\/code>.<\/li>\n<li><strong>Pro-only features:<\/strong> Site Calendar Pro continues to add multi-ticket inline editor on the event page, capacity gauges, automatic confirmation emails, branded HTML email template, refund handling, QR-code door check-in, CSV export of attendees, bulk operations (resend confirmation, send custom email), front-end event submission, recurring events, Week\/Day\/Photo views, custom fields, and WooCommerce integration.<\/li>\n<li>No DB schema changes; existing tickets and attendees on sites running Pro continue to work without migration.<\/li>\n<\/ul>\n\n<h4>1.1.1.16<\/h4>\n\n<ul>\n<li><strong>Shortcode prefix update:<\/strong> Following WordPress.org reviewer guidance, the plugin's public shortcodes have been renamed to use the plugin's own prefix:\n\n<ul>\n<li><code>[getsitecalendar]<\/code> (replaces <code>[pro_calendar]<\/code>)<\/li>\n<li><code>[getsitecalendar_list]<\/code> (replaces <code>[pro_calendar_list]<\/code>)<\/li>\n<li><code>[getsitecalendar_search]<\/code> (replaces <code>[pro_calendar_search]<\/code>)<\/li>\n<li><code>[getsitecalendar_rsvp]<\/code> (replaces <code>[pro_calendar_rsvp]<\/code>)\nThe previous shortcode names are kept registered as silent backward-compatibility aliases, so existing customer sites continue to render correctly without any action required. New documentation and the in-plugin Help tab now use the new names.<\/li>\n<\/ul><\/li>\n<li><strong>Plugin Check compliance:<\/strong> Final cleanup pass addressing the remaining 15 Plugin Check warnings from 1.1.1.15.\n\n<ul>\n<li>Removed the <code>load_plugin_textdomain()<\/code> call from <code>class-pcal-plugin.php<\/code>. WordPress.org auto-loads translations for hosted plugins since WP 4.6, so the manual call is discouraged and unnecessary.<\/li>\n<li>Prefixed global variables in <code>uninstall.php<\/code> (<code>$post_types<\/code> \u2192 <code>$pcal_post_types<\/code>, etc.).<\/li>\n<li>Added <code>phpcs:ignore<\/code> annotations with justifications for the legitimate uses of the WordPress core <code>the_content<\/code> filter in REST responses (processes shortcodes\/oEmbeds, matching standard WP behaviour).<\/li>\n<li>Added <code>phpcs:disable<\/code> annotations with justifications for WordPress cache plugin standard constants (<code>DONOTCACHEPAGE<\/code>, <code>DONOTCACHEOBJECT<\/code>, <code>DONOTCACHEDB<\/code>) in <code>class-pcal-archive-list.php<\/code> to match what we already did in <code>class-pcal-month-grid.php<\/code> and <code>class-pcal-rsvp-form.php<\/code>.<\/li>\n<li>Added <code>phpcs:ignore<\/code> annotation with justification for the one direct database query in <code>uninstall.php<\/code> that finds and deletes every plugin record across the site (caching is meaningless for a one-shot uninstall operation).<\/li>\n<li>Trimmed Upgrade Notice entries to fit the 300-character limit.<\/li>\n<\/ul><\/li>\n<li>No behavioural changes; no DB schema changes; safe drop-in upgrade for all installs.<\/li>\n<\/ul>\n\n<h4>1.1.1.15<\/h4>\n\n<ul>\n<li><strong>WP.org Plugin Check compliance:<\/strong> Comprehensive code-quality sweep addressing every issue surfaced by the Plugin Check automated linter (155 findings total: 96 errors + 59 warnings). The plugin now passes the full Plugin Check rule set with zero findings.\n\n<ul>\n<li><strong>Output escaping (53 fixes):<\/strong> Every variable echoed into HTML is now wrapped in <code>esc_url()<\/code>, <code>esc_attr()<\/code>, <code>esc_html()<\/code>, <code>wp_kses_post()<\/code>, or cast to <code>(int)<\/code>. URLs are built unescaped and escaped late at output site (best practice). Pre-built HTML fragments returned from internal renderers (PCAL_Filters, PCAL_Month_Grid, PCAL_Week_View, PCAL_Day_View, PCAL_Photo_View, PCAL_Archive_List, PCAL_Thumb) are documented with <code>phpcs:ignore<\/code> comments explaining why they are safe.<\/li>\n<li><strong>Date functions (29 fixes):<\/strong> Every bare <code>date()<\/code> call replaced with <code>gmdate()<\/code> for deterministic UTC behaviour, except <code>date_i18n()<\/code> calls which intentionally use site locale.<\/li>\n<li><strong>Input sanitization (17 fixes):<\/strong> Every <code>$_GET<\/code> \/ <code>$_POST<\/code> read now uses <code>wp_unslash()<\/code> followed by an appropriate sanitiser (<code>sanitize_key<\/code>, <code>sanitize_text_field<\/code>, <code>sanitize_email<\/code>, <code>absint<\/code>, etc.). Read-only navigation parameters (filter inputs, view switching) are documented as such with <code>phpcs:ignore<\/code> for the nonce sniff since no data is mutated.<\/li>\n<li><strong>Nonce verification (21 fixes):<\/strong> All state-changing form handlers verify a nonce before processing input. Read-only display of redirect status flash messages is documented.<\/li>\n<li><strong>Translator comments (12 fixes):<\/strong> Every <code>sprintf( __() )<\/code> \/ <code>printf( esc_html__() )<\/code> call with placeholders now has a <code>\/* translators: *\/<\/code> comment directly above the gettext call for translator clarity.<\/li>\n<li><strong>Constants prefix (8 fixes):<\/strong> All plugin constants prefixed with <code>PCAL_<\/code>. The three WordPress cache-plugin standard constants (<code>DONOTCACHEPAGE<\/code>, <code>DONOTCACHEOBJECT<\/code>, <code>DONOTCACHEDB<\/code>) are documented with <code>phpcs:disable<\/code> since these names are fixed by the WP cache plugin ecosystem (W3TC, WP Super Cache, etc.).<\/li>\n<li><strong>Safe redirects (1 fix):<\/strong> Payment-gateway redirect now uses <code>wp_safe_redirect()<\/code> with the gateway host explicitly added via <code>allowed_redirect_hosts<\/code> filter.<\/li>\n<li><strong>File operations (1 fix):<\/strong> Replaced <code>@unlink()<\/code> with <code>wp_delete_file()<\/code> (WP.org-recommended wrapper). The one remaining <code>file_put_contents()<\/code> call (used to write a temporary .ics attachment that is immediately consumed by <code>wp_mail()<\/code> then unlinked) is documented with a justification comment.<\/li>\n<li><strong>Inline <code>&lt;style&gt;<\/code> removed:<\/strong> The dynamic colour-variables <code>&lt;style&gt;<\/code> block in <code>class-pcal-assets.php<\/code> is now attached via <code>wp_add_inline_style()<\/code> instead of being echoed from a <code>wp_head<\/code> hook.<\/li>\n<\/ul><\/li>\n<li>No DB schema changes; no behavioural changes. This is a pure code-quality release.<\/li>\n<\/ul>\n\n<h4>1.1.1.14<\/h4>\n\n<ul>\n<li><strong>Architectural change:<\/strong> The recurrence engine (recurrence authoring meta box, save handler, occurrence expander, RRULE parser) has been relocated from Lite into Site Calendar Pro 1.1.5. This brings Lite into compliance with the WordPress.org plugin-directory trialware guideline, which prohibits shipping locked feature code in a free plugin even when the lock is consensual. Lite-only installs no longer see the recurrence meta box at all; recurrence is now exclusively a Pro feature. The front-end calendar (Month grid and List view) gracefully shows each event as a single occurrence on its declared start date when Pro is not installed.<\/li>\n<li><strong>Compatibility:<\/strong> Sites running Site Calendar Pro must upgrade Pro to 1.1.5 alongside this Lite update. Pro 1.1.5 includes an activation guard that refuses to boot against Lite &lt; 1.1.1.14; conversely, this Lite release relies on Pro 1.1.5 to provide the recurrence classes. Update both together.<\/li>\n<li><strong>Compliance:<\/strong> The \"Powered by Site Calendar\" credit is now OPT-IN. A new checkbox at Site Calendar \u2192 Settings \u2192 Appearance lets site administrators enable the credit; default is unchecked. The credit no longer appears anywhere on user-facing pages without explicit consent. (WP.org guideline on user-facing attribution.)<\/li>\n<li><strong>Compliance:<\/strong> The public REST endpoints (<code>\/wp-json\/pcal\/v1\/events<\/code> and <code>\/wp-json\/pcal\/v1\/events\/&lt;id&gt;<\/code>) no longer return custom-field values that are marked as <code>show_public=false<\/code>. Internal-only custom fields are filtered out of the response. Authenticated integrations needing internal fields should register their own route with a proper <code>permission_callback<\/code>.<\/li>\n<li><strong>Compliance:<\/strong> RSVP form inputs (name, email, phone) are now sanitised with <code>sanitize_text_field()<\/code> \/ <code>sanitize_email()<\/code> at the earliest possible point in the submission handler, before being passed to attendee registration or payment-gateway buyer data.<\/li>\n<li><strong>Compliance:<\/strong> The Google Maps iframe embed on single-event pages is now disclosed in the readme's External services section, with links to Google's Terms of Service and Privacy Policy. The embed only fires when a venue address is present; events without a venue address render no map and produce no external request.<\/li>\n<li><strong>Compliance:<\/strong> Plugin text domain renamed from <code>pro-calendar<\/code> to <code>getsitecalendar-lite<\/code> across all 388 gettext call sites, matching the WordPress.org plugin slug. Translation files (if any exist downstream) will need to be re-keyed; no existing translations are bundled.<\/li>\n<li><strong>Fix:<\/strong> The \"Subscribe to calendar\" button and Add-to-calendar buttons stopped appearing in 1.1.1.12. The script enqueue is now correctly hooked to wp_enqueue_scripts (already fixed in 1.1.1.13 and retained here).<\/li>\n<li>No DB schema changes; drop-in upgrade for Lite-only installs.<\/li>\n<li>Housekeeping: bumped <code>Tested up to<\/code> to WordPress 7.0. Removed an internal-only <code>MIGRATION.md<\/code> development file that shouldn't have been included in the production build.<\/li>\n<\/ul>\n\n<h4>1.1.1.13<\/h4>\n\n<ul>\n<li><strong>Fix:<\/strong> The \"Subscribe to calendar\" button and \"Powered by Site Calendar\" credit stopped appearing below archive\/list views in 1.1.1.12. Root cause: the inline-script-to-enqueued-asset refactor in 1.1.1.12 called <code>wp_enqueue_script()<\/code> inside a <code>wp_footer<\/code> priority 99 callback, which runs AFTER <code>wp_print_footer_scripts<\/code> (priority 20) has already emitted the script tags \u2014 so <code>ical-injector.js<\/code> was never actually loaded on the page. The <code>&lt;template&gt;<\/code> element was correctly emitted, but the injector that reads it never ran. 1.1.1.13 moves the enqueue to the <code>wp_enqueue_scripts<\/code> hook so the script tag is emitted at the correct point in the page lifecycle. The Add-to-calendar button (Google\/Outlook\/.ics) on single-event pages was affected by the same bug and is also fixed.<\/li>\n<li>No DB schema changes; drop-in upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.1.12<\/h4>\n\n<ul>\n<li>Renamed display name to \"GetSiteCalendar Lite\" to make the WordPress.org directory listing distinctive. Text domain, class names, file names, option keys, custom post types, and shortcodes are all unchanged \u2014 this is a directory-listing rename only, with zero impact on existing installs.<\/li>\n<li>Tested up to: WordPress 7.0.<\/li>\n<li>Lowered admin menu position from 25 to 80 so Site Calendar sits below WordPress core items in the standard hierarchy.<\/li>\n<li>Refactored 8 inline <code>&lt;script&gt;<\/code> and <code>&lt;style&gt;<\/code> blocks into proper <code>wp_enqueue_script<\/code> \/ <code>wp_enqueue_style<\/code> \/ <code>wp_add_inline_script<\/code> \/ <code>wp_add_inline_style<\/code> calls. New asset files: <code>assets\/js\/ical-injector.js<\/code>, <code>assets\/js\/recurrence-ui.js<\/code>, <code>assets\/css\/help-screen.css<\/code>. Affected screens: Settings (colour picker), single event page (Add to calendar), archive (Subscribe), Help admin screen, recurrence meta box, admin Add-Ons submenu styling.<\/li>\n<li>Wrapped all 8 <code>wp_verify_nonce()<\/code> reads with <code>sanitize_text_field( wp_unslash( ... ) )<\/code> per WordPress.org guideline that nonce inputs should be sanitized even though <code>wp_verify_nonce<\/code> is pluggable. Affected save handlers: event meta, featured flag, event options, venue meta, organizer meta, recurrence rule, RSVP form, plugin settings.<\/li>\n<li>Tightened JSON-LD schema output in <code>class-pcal-schema.php<\/code> with explicit <code>wp_json_encode()<\/code> step and phpcs-ignore annotation justifying the deliberate non-escaping of the encoded payload.<\/li>\n<li>Added inline justification comments above each public REST <code>permission_callback =&gt; '__return_true'<\/code> confirming that event, venue, and organizer GET endpoints are intentionally public read-only data, matching the visibility of the underlying posts.<\/li>\n<li>No DB schema changes; drop-in upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.1.11<\/h4>\n\n<ul>\n<li>New: A small \"Powered by Site Calendar\" credit is now shown next to the \"Subscribe to calendar\" button at the bottom of calendar views. Helps people discover the plugin. Power users can hide via <code>add_filter( 'pcal_show_credit', '__return_false' );<\/code> in their theme, and Site Calendar Pro 1.1.3+ adds a one-click hide toggle in Settings \u2192 Appearance.<\/li>\n<li>New: <code>pcal_show_credit<\/code> filter hook for full programmatic control of the credit.<\/li>\n<li>No DB schema changes; drop-in upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.1.10<\/h4>\n\n<ul>\n<li>Branded confirmation emails now read brand colours from <strong>Settings \u2192 Appearance<\/strong>. The HTML email's header bar and accent rules use your Primary and Accent colour settings; the QR code box uses a 6% tint of your Primary colour. Falls back to the classic dark-green \/ amber palette on sites that haven't customised their Appearance settings.<\/li>\n<li>No DB schema changes; drop-in upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.1.9<\/h4>\n\n<ul>\n<li>Mobile layout fix: editorial list view (<code>?pcal_view=list<\/code>) now stacks vertically below 720px wide. Previously the 280\u00d7170 featured image had <code>flex-shrink: 0<\/code> set inline, which on phone viewports starved the title column to ~11 pixels wide \u2014 causing event titles, dates and excerpts to wrap one letter per line. The fix emits scoped <code>!important<\/code> CSS rules (necessary because the layout uses inline styles, specificity 1000) that flip the row to vertical-stack: date on top, image full-width, title and excerpt below.<\/li>\n<li>No DB schema changes; drop-in upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.1.8<\/h4>\n\n<ul>\n<li><code>[getsitecalendar_list]<\/code> shortcode \u2014 the <code>category<\/code> attribute now accepts a comma-separated list of category slugs (e.g. <code>category=\"1st-xv,2nd-xv,fixtures\"<\/code>) with an OR-match. Works in both compact and classic layouts.<\/li>\n<li>Paired with Site Calendar Pro 1.1.1+ for full multi-category support in the compact upcoming-list renderer.<\/li>\n<li>No DB schema changes; drop-in upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.1.7<\/h4>\n\n<ul>\n<li>Header fix: differentiated Plugin URI from Author URI to satisfy the WordPress.org pre-submission scanner. Plugin URI now points to the plugin-specific page; Author URI remains the company root. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.1.1.6<\/h4>\n\n<ul>\n<li>Documentation: updated Contributors line for WordPress.org plugin directory submission. No code changes.<\/li>\n<\/ul>\n\n<h4>1.1.1.5<\/h4>\n\n<ul>\n<li>Documentation: corrected the Month view screenshot caption to accurately reflect what the view shows (clean overview grid; the Month view does not render full featured-image thumbnails). No code changes.<\/li>\n<\/ul>\n\n<h4>1.1.1.4<\/h4>\n\n<ul>\n<li>Readme tightened for WordPress.org submission. No code changes.<\/li>\n<\/ul>\n\n<h4>1.1.1.3<\/h4>\n\n<ul>\n<li>Settings \u2192 Appearance: new \"Week view chip colour\" picker. One picker drives the chip foreground, background, border and hover shades automatically.<\/li>\n<li>New helper <code>pcal_hex_to_rgba()<\/code> for tinting colours; <code>pcal_sanitize_hex()<\/code> now accepts a per-setting fallback default.<\/li>\n<li>Frontend emits four new CSS variables (<code>--pcal-week-chip<\/code>, <code>--pcal-week-chip-bg<\/code>, <code>--pcal-week-chip-border<\/code>, <code>--pcal-week-chip-hover<\/code>).<\/li>\n<li>Drop-in upgrade; no DB schema changes.<\/li>\n<\/ul>\n\n<h4>1.1.1.2<\/h4>\n\n<ul>\n<li>Critical fix: restores the missing <code>rsvp-mount.js<\/code> so the Register \/ RSVP form actually appears on event pages. Without this file the form HTML rendered into the page footer but never mounted into a visible position. Strongly recommended for any site using ticketing or free RSVP.<\/li>\n<\/ul>\n\n<h4>1.1.1.1<\/h4>\n\n<ul>\n<li>List-view redesign \u2014 full-width editorial layout with the featured image on the right (280 \u00d7 170 lazy-loaded), title bigger and bolder, 28-word excerpt, and an inline ticket-pricing CTA in your brand colour.<\/li>\n<li>Drop-in upgrade; existing list shortcode unchanged.<\/li>\n<\/ul>\n\n<h4>1.1.1.0<\/h4>\n\n<ul>\n<li>Featured-image thumbnails now render in the Month grid and List view, not just the Photo view.<\/li>\n<li>New shared <code>PCAL_Thumb<\/code> helper class with three fallback paths: WordPress featured image at thumbnail size, a category-coloured icon tile (13 categories), or two-letter title initials in a brand-blue circle.<\/li>\n<\/ul>\n\n<h4>1.1.0.7<\/h4>\n\n<ul>\n<li>Restructured admin menus and added the Help tab with a friendly \"Lite vs Pro \u2014 what's included\" comparison.<\/li>\n<li>Consolidated several fixes from the 1.1.0.4 \u2013 1.1.0.6 point releases (Add-Ons submenu registration, ghost Tickets\/Attendees menu entries removed, recurring-events upgrade nudge styling).<\/li>\n<\/ul>\n\n<h4>1.1.0.3<\/h4>\n\n<ul>\n<li>Fix: the \"Need Recurring Events?\" upgrade nudge under Date &amp; Time was incorrectly suppressed in Lite. Now displays for all Lite users and is hidden only when Site Calendar Pro is actually loaded.<\/li>\n<\/ul>\n\n<h4>1.1.0.2<\/h4>\n\n<ul>\n<li>Removed the \"Repeats\" recurrence meta box from the event editor in Lite. Recurring events authoring is a Pro feature; recurrence storage helpers remain so any pre-existing <code>_pcal_recurrence<\/code> meta still renders correctly.<\/li>\n<\/ul>\n\n<h4>1.1.0.1<\/h4>\n\n<ul>\n<li>Domain change: customer-facing URLs updated to getsitecalendar.com. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Multi-organiser support per event.<\/li>\n<li>Event Options sidebar box with \"Sticky in month view\" and \"Hide from listings\".<\/li>\n<li>Per-venue map toggles (\"Show map on event page\" \/ \"Show Get directions link\").<\/li>\n<li>Inline upgrade nudge for recurring events on the event editor (auto-suppressed when Pro is active).<\/li>\n<li>\"Calendar\" admin-bar shortcut for All Events \/ Add New \/ Venues \/ Organizers \/ Settings.<\/li>\n<li>Schema.org Event.organizer now emits an array when there are multiple organisers.<\/li>\n<li>REST <code>\/events<\/code> response includes both legacy <code>organizer<\/code> (single) and new <code>organizers<\/code> (array) fields.<\/li>\n<li>Fully backward compatible.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release. Free core extracted from the commercial Pro Calendar codebase.<\/li>\n<li>Includes Month \/ List views, venues, organizers, categories, basic weekly recurring events, free RSVP, ICS feed, REST API, schema markup.<\/li>\n<\/ul>","raw_excerpt":"The friendly events calendar for WordPress. For community groups, clubs, churches and small venues \u2014 free RSVP, ICS feed, mobile-ready.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/312678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=312678"}],"author":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/matureman"}],"wp:attachment":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=312678"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=312678"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=312678"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=312678"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=312678"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=312678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}