WP Manifestindependent plugin directory
manifest / events / gcalendar

GCalendar Events

A standards-first WordPress events calendar plugin

by G Web Design · github.com/gweb2015/gcalendar

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/gweb2015/gcalendar/archive/refs/heads/main.zip

A standards-first WordPress events calendar plugin with modern UI, accessibility features, and AWS S3 URL support.

Features

  • Custom Post Type – Events stored as gcalendar_event with full WordPress integration
  • Query Loop Block Compatible – Supports WordPress Gutenberg Query Loop Block for custom queries, filtering, and sorting
  • Featured Images – Full featured image support on all events
  • Gutenberg Block – Server-side rendered gcalendar/events-list block
  • Shortcodes – Multiple shortcodes for flexible event display:
    • [gcalendar_events] – Event list with filtering and sorting
    • [gcalendar_fullcalendar] – Interactive calendar view with FullCalendar.js
    • [gcalendar_ical_link] – iCal feed link
    • [gcalendar_rss_feed] – RSS feed link
  • Calendar Integration – Add events to Google Calendar, Outlook, Apple Calendar with iCal downloads
  • iCal/ICS Support – RFC 2445 compliant iCal downloads for Google, Outlook, Apple Calendar, and generic readers
  • RSS Feed – Subscribe to event updates via RSS
  • Subscribe Form – Email subscription for event updates (stored as persistent custom post type)
  • Timezone Support – Stores UTC, displays in site timezone with DST support
  • S3 URL Support – Optional S3 attachment URL with post meta field
  • Security – Nonces, capability checks, sanitization, and escaping throughout
  • Accessibility – ARIA labels, semantic HTML, keyboard navigation
  • i18n Ready – Text domain gcalendar for translation
  • No Custom Tables – Uses WordPress post types and meta, no custom database schema

Installation

  1. Download or clone the plugin into /wp-content/plugins/
  2. Activate via WordPress admin Plugins screen
  3. Events menu appears in admin
  4. Create events with dates, locations, organizer info
  5. Use shortcodes or Gutenberg blocks to display on your site

Usage

Shortcodes

Display Event List:

[gcalendar_events numberposts=10 category=campus-news]

Display Full Calendar:

[gcalendar_fullcalendar category=all default_view=dayGridMonth]

RSS Feed Link:

[gcalendar_rss_feed]

Subscription Form:

[gcalendar_subscribe_form]

Gutenberg Blocks

  • GCalendar Events List (gcalendar/events-list) – Dynamic block showing upcoming events
  • Query Loop Block – Full integration for custom queries. See QUERY_LOOP_GUIDE.md

Custom Post Types

gcalendar_event

  • Title, content, featured image
  • Custom fields (via post meta):
    • start_date (UTC, format: Y-m-d H:i:s)
    • end_date (UTC, format: Y-m-d H:i:s)
    • location (text)
    • organizer (text)
    • ticket_url (URL)
    • s3_url (AWS S3 URL)
  • Taxonomies: gcalendar_event_category
  • Custom Statuses: approved, pending_marketing, pending_student_affairs

gcalendar_subscription

  • Permanent storage of email subscriptions
  • Post meta:
    • email (subscriber email)
    • user_id (if subscriber is logged-in user)
  • Automatically cleaned up when associated events are deleted

API

REST API

The plugin supports WordPress REST API:

Events Endpoint:

GET /wp-json/wp/v2/gcalendar_events

Query parameters:

  • per_page – Number of events
  • orderby – Property to sort by
  • order – ASC or DESC
  • meta_query – Filter by post meta

Helper Functions

Get Subscribers for Event:

$subscribers = gcalendar_get_event_subscribers($event_id);
// Returns array of subscriber objects with email, date_subscribed, etc.

Get All iCal Events:

$events = gcalendar_get_ical_events();
// Returns array of events for iCal generation

Generate iCal:

$ical = gcalendar_generate_ical($events);
// Returns RFC 2445 compliant iCal string

Settings

Settings are managed in Plugins → GCalendar Settings (if admin panel enabled).

Current configurable options:

  • Primary color
  • Secondary color
  • Text color
  • Excerpt length
  • Event count per page

Hooks

After Subscription:

do_action('gcalendar_user_subscribed', $email);

Event Query Args:

apply_filters('gcalendar_event_query_args', $query_args, $atts);

Compliance

This plugin adheres to WordPress.org Plugin Directory guidelines:

  • ✅ No reliance on 3rd party services or phone-home behavior
  • ✅ No automatic theme/plugin modifications
  • ✅ No wpremote* timeout changes
  • ✅ No WP_DEBUG, error_reporting, or display_errors modifications
  • ✅ No removal of default WordPress roles
  • ✅ No rewrite rule flushing or cache flushing
  • ✅ No direct SQL queries; uses WordPress APIs
  • ✅ No custom database tables
  • ✅ No filesystem operations outside WordPress attachments
  • ✅ No error_log usage
  • ✅ Proper multisite handling for large networks

Requirements

  • WordPress 5.0 or later
  • PHP 7.4 or later
  • jQuery (standard WordPress dependency)
  • FullCalendar.js 6.1.8 (for calendar view)

Changelog

0.1.0

  • Initial release
  • Event post type with featured images
  • Multiple shortcodes and Gutenberg block
  • FullCalendar integration
  • iCal download support
  • Subscription system with persistent storage
  • Query Loop Block compatibility
  • Full accessibility support

License

GPLv2 or later – See license.txt

Support

For issues, feature requests, or contributions, please visit the GitHub repository.

Credits

  • Built with WordPress best practices and standards
  • FullCalendar.js integration
  • RFC 2445 iCal compliance