ICS Calendar Enhanced
An open source Wordpress plugin that enhances the functionality of the ICS Calendar Plugin.
by Daniel · github.com/danni-p/ics_calendar_enhanced · website
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/danni-p/ics_calendar_enhanced/archive/refs/heads/main.zipExtends the ICS Calendar plugin with category images mapping. Assign custom images to calendar event categories through an intuitive admin interface.
Description
ICS Calendar Enhanced is an extension plugin for the popular ICS Calendar plugin. It allows you to map category strings from your ICS calendar feeds to custom images, creating a more visually appealing calendar display.
Key Features
- Category Image Mapping: Assign images to specific category strings from your ICS feeds
- Two-Tier Fallback System:
- Specific category mapping
- Fallback for unmapped categories (or bundled default if not set)
- Easy Admin Interface: User-friendly settings page with drag-and-drop image selection
- WordPress Media Library Integration: Select images directly from your media library
- Shortcode Support: Display category images anywhere using
[ics_category_image] - Developer Friendly: Hooks and filters for customization
How It Works
- Install and activate the plugin (requires ICS Calendar or ICS Calendar Pro)
- Go to Settings → ICS Calendar Enhanced
- Add category mappings by entering the category string and selecting an image
- Set optional fallback images for unmapped categories
- The images will automatically display alongside events in your calendar
Shortcode Usage
Display a category image anywhere on your site:
[ics_category_image category="Meeting" size="thumbnail"]
For Developers
Get a category image programmatically:
<?php $image_url = \ICSEnhanced\Includes\Helpers::get_category_image( 'Meeting' ); $image_html = \ICSEnhanced\Includes\Helpers::get_category_image_html( 'Meeting', 'thumbnail' ); ?>
Use the filter hook:
<?php $image_url = apply_filters( 'ics_enhanced_get_category_image', '', 'Meeting', 'full' ); ?>
Installation
- Ensure you have the ICS Calendar or ICS Calendar Pro plugin installed and activated
- Upload the
ics-calendar-enhancedfolder to the/wp-content/plugins/directory - Activate the plugin through the 'Plugins' menu in WordPress
- Go to Settings → ICS Calendar Enhanced to configure your category mappings
That's it! No additional setup required. The plugin uses a built-in autoloader and requires no external dependencies.
Frequently Asked Questions
Does this plugin require ICS Calendar?
Yes, this plugin extends the ICS Calendar plugin and requires it to be installed and activated.
What happens if a category doesn't have a mapped image?
The plugin uses a three-tier fallback system:
- First, it checks for a specific category mapping
- If not found, it uses the fallback image (if set)
- If no fallback is set, it uses the bundled default image
Can I use multiple images per category?
Currently, each category can have one image assigned. The category string must match exactly (case-insensitive) what appears in your ICS feed.
How do I find the correct category string?
The category string should match what's in your ICS calendar feed. You can view your feed source or check the event details in ICS Calendar's output.
Screenshots
- Settings page with category mappings table
- Adding a new category mapping with image selection
- Fallback image configuration
- Category images displayed in calendar view
Changelog
1.0.0
- Initial release
- Category string to image mapping
- Three-tier fallback system
- Admin settings page with media library integration
- Shortcode support
- Developer hooks and filters
Upgrade Notice
1.0.0
Initial release of ICS Calendar Enhanced.
Visual & Display Enhancements
-
Category color coding Assign colors to categories (in addition to images) Color-coded event borders, backgrounds, or badges Use case: Quick visual category identification
-
Category icons library Built-in icon set (Font Awesome, Dashicons, or custom SVG) Icon + image options per category Use case: Lightweight alternative to images
-
Image size presets Per-view size settings (month/list/week) Responsive image sizes Use case: Better display across views
-
Image positioning options Above title, beside title, as background, or in description Use case: Layout flexibility Functionality Enhancements
-
Multiple images per category Rotate images or show different images by date/context Use case: Seasonal or context-specific images
-
Category-based styling Custom CSS classes per category Custom styling options in admin Use case: Category-specific styling
-
Category filtering Filter calendar by category Category badges with click-to-filter Use case: Focused event views
-
Category grouping/aliases Map multiple category strings to one image Case-insensitive matching option Use case: Handle variations in feed data
-
Conditional image display Show/hide images based on event properties (date range, location, etc.) Use case: Context-aware display Admin Experience
-
Bulk import/export CSV import/export of category mappings Use case: Manage many mappings efficiently
-
Category auto-discovery Scan ICS feeds and suggest categories Use case: Easier setup
-
Preview mode Preview how images look in different calendar views Use case: Test before publishing
-
Image optimization Auto-generate thumbnails WebP conversion option Lazy loading controls Use case: Performance Developer Features
-
REST API endpoints Get category mappings via REST API Use case: Headless/JS integrations
-
Advanced hooks More granular hooks for customization Event-specific image override hooks Use case: Theme/plugin integration
-
Template system Customizable templates for category image display Use case: Design control Integration Features
-
WooCommerce integration Link categories to product categories Display product images for event categories Use case: E-commerce calendar events
-
ACF (Advanced Custom Fields) integration Map ACF fields to category images Use case: Custom field-driven images
-
Event calendar plugin compatibility Support for other calendar plugins Use case: Broader compatibility Performance & UX
-
Caching system Cache category mappings and image URLs Transient-based caching Use case: Faster page loads
-
Lazy loading controls Admin toggle for lazy loading Intersection Observer configuration Use case: Performance tuning
-
Accessibility improvements ARIA labels for category images Screen reader support Keyboard navigation Use case: Better accessibility Analytics & Insights
-
Category usage statistics Track which categories appear most Unmapped category detection Use case: Data-driven setup
-
Image usage tracking Track which images are used most Identify unused images Use case: Optimization insights
Recommended Priority Order High priority (quick wins, high impact):
Category color coding (#1) Image positioning options (#4) Category grouping/aliases (#8) Image size presets (#3) Medium priority (valuable features): Category-based styling (#6) Category filtering (#7) Bulk import/export (#10) Preview mode (#12) Lower priority (nice to have): Multiple images per category (#5) REST API endpoints (#14) Category usage statistics (#23)