{"id":249785,"date":"2025-10-01T12:32:38","date_gmt":"2025-10-01T12:32:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/atomic-events-calendar\/"},"modified":"2025-10-01T19:08:37","modified_gmt":"2025-10-01T19:08:37","slug":"atomic-events-calendar","status":"publish","type":"plugin","link":"https:\/\/az.wordpress.org\/plugins\/atomic-events-calendar\/","author":17593361,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.3","stable_tag":"1.0.3","tested":"6.8.5","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Atomic Events Calendar","header_author":"Arpad Lehel Matyus","header_description":"A lightweight WordPress events framework that gives developers and agencies full control without the bloat.","assets_banners_color":"c23d1e","last_updated":"2025-10-01 19:08:37","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/matyus.me\/","header_plugin_uri":"https:\/\/matyus.me\/atomicevents-io","header_author_uri":"https:\/\/matyus.me\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":235,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"lehelm","date":"2025-10-01 19:08:37"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3371095,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3371095,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3371426,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3371426,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Event Post type","2":"Event List"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[416,2431,1486],"plugin_category":[40],"plugin_contributors":[177617],"plugin_business_model":[],"class_list":["post-249785","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-event","plugin_tags-events","plugin_category-calendar-and-events","plugin_contributors-lehelm","plugin_committers-lehelm"],"banners":{"banner":"https:\/\/ps.w.org\/atomic-events-calendar\/assets\/banner-772x250.png?rev=3371426","banner_2x":"https:\/\/ps.w.org\/atomic-events-calendar\/assets\/banner-1544x500.png?rev=3371426","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/atomic-events-calendar\/assets\/icon-128x128.png?rev=3371095","icon_2x":"https:\/\/ps.w.org\/atomic-events-calendar\/assets\/icon-256x256.png?rev=3371095","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Atomic Events Calendar is built for developers and agencies who need events in WordPress without the overhead of full event management plugins.<\/p>\n\n<p>Instead of starting from scratch on every project, Atomic Events Calendar gives you:<\/p>\n\n<p>\u2013 A ready-to-use <strong>Events post type<\/strong><br \/>\n\u2013 Essential event fields (date, venue, type, etc.)<br \/>\n\u2013 Developer-friendly <strong>shortcodes<\/strong> to display and filter events<br \/>\n\u2013 A robust <strong>theming structure<\/strong> for easy overrides and custom designs<\/p>\n\n<p>\u2728 Think of it as a lightweight <strong>framework disguised as a plugin<\/strong>: everything you need to set up events quickly, with the freedom to extend and customize as you like.<\/p>\n\n<p>Perfect for agencies that want full control over their event implementations\u2014without the bloat.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Developer-Friendly<\/strong> \u2013 Clean code structure with services architecture<\/li>\n<li><strong>Responsive Design<\/strong> \u2013 Built with Tailwind CSS for modern, responsive layouts<\/li>\n<li><strong>Structured Data for Search Engines<\/strong> \u2013 Automatic JSON-LD schema markup for better SEO and rich snippets<\/li>\n<li><strong>Custom Post Type<\/strong> \u2013 Dedicated 'atomic-event' post type with all necessary fields<\/li>\n<li><strong>Template Override System<\/strong> \u2013 Easy theme integration with template hierarchy<\/li>\n<li><strong>Shortcode Support<\/strong> \u2013 Display events anywhere with <code>[atomic-events]<\/code> shortcode<\/li>\n<li><strong>Featured Events<\/strong> \u2013 Mark and display featured events prominently<\/li>\n<li><strong>Location Management<\/strong> \u2013 Complete address fields (street, city, state, country, postcode)<\/li>\n<li><strong>Date &amp; Time Support<\/strong> \u2013 Start\/end dates with time support<\/li>\n<li><strong>Image Support<\/strong> \u2013 Featured images with captions<\/li>\n<li><strong>Member-Only Events<\/strong> \u2013 Restrict events to members only<\/li>\n<li><strong>Performance Caching<\/strong> \u2013 Automatic shortcode caching with smart invalidation<\/li>\n<\/ul>\n\n<p>Basic usage is through shortcode:<\/p>\n\n<pre><code>[atomic-events filter max='10' columns='3' featured='0' \n    skip_first_x='0' skip_first_x_featured='1' order='ASC']\n<\/code><\/pre>\n\n<h3>How can I customize the event template?<\/h3>\n\n<p>The plugin provides a default template for single events, but you can override it in your theme:<\/p>\n\n<ol>\n<li><strong>Child Theme<\/strong> (recommended): Copy the template to <code>child-theme\/atomic-events\/single\/single-atomic-event.php<\/code><\/li>\n<li><strong>Parent Theme<\/strong>: Copy the template to <code>parent-theme\/atomic-events\/single\/single-atomic-event.php<\/code><\/li>\n<\/ol>\n\n<p>The plugin will automatically use your theme's version instead of the default.<\/p>\n\n<p>See the example template in <code>templates\/theme-override-example.php<\/code> for reference.<\/p>\n\n<h4>My event pages show 404 errors<\/h4>\n\n<p>If you experience 404 errors when viewing event pages:\n1. Go to WordPress Admin \u2192 Events \u2192 Settings\n2. Click \"Flush Rewrite Rules\"\n3. If that doesn't work, go to Settings \u2192 Permalinks and click \"Save Changes\"<\/p>\n\n<h3>Template Structure<\/h3>\n\n<p>The plugin provides a comprehensive template override system. You can override any template by creating files in your theme:<\/p>\n\n<pre>\n    your-theme\/\n    \u2514\u2500\u2500 atomic-events\/\n    \u2502   \u251c\u2500\u2500 cards\/\n    \u2502   \u2502   \u251c\u2500\u2500 card-item-default.php\n    \u2502   \u2502   \u251c\u2500\u2500 card-item-featured.php\n    \u2502   \u2502   \u251c\u2500\u2500 card-list-header-default.php\n    \u2502   \u2502   \u2514\u2500\u2500 card-list-footer-default.php\n    \u2502   \u251c\u2500\u2500 single\/\n    \u2502   \u2502   \u2514\u2500\u2500 single-atomic-event.php\n    \u2502   \u251c\u2500\u2500 content\/\n    \u2502   \u2502   \u2514\u2500\u2500 single-event.php\n    \u2502   \n<\/pre>\n\n<h3>Template Hierarchy<\/h3>\n\n<p>The plugin follows WordPress template hierarchy for single event pages. Templates are loaded in this order of priority:<\/p>\n\n<ol>\n<li><strong>Child Theme<\/strong>: <code>child-theme\/atomic-events\/single\/single-atomic-event.php<\/code><\/li>\n<li><strong>Parent Theme<\/strong>: <code>parent-theme\/atomic-events\/single\/single-atomic-event.php<\/code><\/li>\n<li><strong>Plugin Default<\/strong>: <code>plugin\/templates\/single\/single-atomic-event.php<\/code><\/li>\n<\/ol>\n\n<h3>Template Override System<\/h3>\n\n<p>The plugin uses a custom template loader that checks for theme templates first, then falls back to the plugin's default template. This ensures:<\/p>\n\n<p>\u2013 <strong>Theme compatibility<\/strong>: Works with any WordPress theme\n\u2013 <strong>Customization flexibility<\/strong>: Easy to override in themes\n\u2013 <strong>Update safety<\/strong>: Plugin updates won't break custom templates\n\u2013 <strong>Developer-friendly<\/strong>: Clear hierarchy and fallback system<\/p>\n\n<p><strong>Template Hierarchy Priority:<\/strong><\/p>\n\n<ol>\n<li><strong>Child Theme<\/strong>: <code>child-theme\/atomic-events\/[template-name].php<\/code><\/li>\n<li><strong>Parent Theme<\/strong>: <code>parent-theme\/atomic-events\/[template-name].php<\/code><\/li>\n<li><strong>Plugin Default<\/strong>: <code>plugin\/templates\/[template-name].php<\/code><\/li>\n<\/ol>\n\n<p><strong>Available Templates:<\/strong>\n\u2013 <strong>Shortcode Templates<\/strong>: Override how events appear in lists and grids\n\u2013 <strong>Single Event Templates<\/strong>: Customize individual event page layouts\n\u2013 <strong>Content Templates<\/strong>: Modify event content display<\/p>\n\n<p>The default template includes:\n\u2013 WordPress header\/footer integration\n\u2013 Event model for accessing custom fields\n\u2013 Template loader for modular content parts\n\u2013 Proper WordPress loop structure<\/p>\n\n<h3>Custom Fields Available<\/h3>\n\n<p>When creating custom templates, you have access to these event fields:<\/p>\n\n<pre>\n$event_model = new AtomicEventModel(get_the_ID());\n\n\/\/ Basic event data\n$event_model-&gt;get_title();\n$event_model-&gt;get_event_start_date();\n$event_model-&gt;get_event_end_date();\n$event_model-&gt;get_event_venue();\n$event_model-&gt;get_event_location_city();\n$event_model-&gt;get_event_country();\n$event_model-&gt;get_event_location_state();\n$event_model-&gt;get_event_location_region();\n\n\/\/ Event settings\n$event_model-&gt;is_featured();\n$event_model-&gt;is_member_only();\n$event_model-&gt;get_event_all_day();\n\n\/\/ Additional data\n$event_model-&gt;get_event_outbound_link();\n$event_model-&gt;get_event_tag();\n$event_model-&gt;get_event_image_id();\n$event_model-&gt;get_permalink();\n<\/pre>\n\n<h3>Creating Custom Templates<\/h3>\n\n<ol>\n<li><strong>Copy the example template<\/strong> from <code>templates\/theme-override-example.php<\/code><\/li>\n<li><strong>Place it in your theme<\/strong> at the appropriate path<\/li>\n<li><strong>Customize the template<\/strong> as needed<\/li>\n<li><strong>Test thoroughly<\/strong> to ensure proper functionality<\/li>\n<\/ol>\n\n<h3>Hooks and Filters<\/h3>\n\n<p>The plugin provides several hooks for customization:<\/p>\n\n<pre>\n\/\/ Filter the template path\nadd_filter('atomic_events_template_path', 'my_custom_template_path', 10, 2);\n\n\/\/ Filter event data before display\nadd_filter('atomic_events_event_data', 'my_custom_event_data', 10, 2);\n\n\/\/ Filter whether to show event in lists\nadd_filter('atomic_events_should_show_in_list', 'my_custom_visibility_logic', 10, 2);\n<\/pre>\n\n<h3>Shortcode Parameters<\/h3>\n\n<p>The <code>[atomic-events]<\/code> shortcode supports these parameters:<\/p>\n\n<p>\u2013 <code>filter<\/code>: \"future\" or \"past\" (default: \"future\")\n\u2013 <code>max<\/code>: Maximum number of events (default: 20)\n\u2013 <code>columns<\/code>: Number of columns (default: 3)\n\u2013 <code>featured<\/code>: Show only featured events (true\/false)\n\u2013 <code>skip_first_x<\/code>: Skip first X events\n\u2013 <code>skip_first_x_featured<\/code>: Skip first X featured events\n\u2013 <code>order<\/code>: \"ASC\" or \"DESC\" (default: \"ASC\")<\/p>\n\n<h3>Best Practices<\/h3>\n\n<ol>\n<li><strong>Always use child themes<\/strong> for customizations<\/li>\n<li><strong>Test with different themes<\/strong> to ensure compatibility<\/li>\n<li><strong>Use the event model<\/strong> for accessing custom fields<\/li>\n<li><strong>Follow WordPress coding standards<\/strong><\/li>\n<li><strong>Document custom modifications<\/strong><\/li>\n<li><strong>Test thoroughly<\/strong> before deployment<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the Atomic Events Calendar plugin to your blog<\/li>\n<li>Activate it<\/li>\n<li>Create Event post types<\/li>\n<li>Place <code>[atomic-events]<\/code> in your templates<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20can%20i%20print%20out%20events'><h3>How can I print out Events<\/h3><\/dt>\n<dd><p>Simply place a shortcode in your page content area like so:<\/p>\n\n<pre><code>[atomic-events filter=\"future\" max=\"10\" columns=\"3\" featured=\"0\" skip_first_x=\"0\" skip_first_x_featured=\"1\" order=\"ASC\"]\n<\/code><\/pre><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed remaining class name references after renaming<\/li>\n<li>Updated general settings tab with developer-focused information<\/li>\n<li>Resolved all \"Class not found\" errors<\/li>\n<li>Improved plugin stability and compatibility<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed WordPress.org plugin review naming convention issues<\/li>\n<li>Updated all class names to use unique ATMCEVNTS_ prefix<\/li>\n<li>Updated all function names to use unique atmcevnts_ prefix<\/li>\n<li>Fixed JSON escaping issues in structured data service<\/li>\n<li>Removed non-permitted files for WordPress.org submission<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed deprecated FILTER_SANITIZE_STRING usage for PHP 8.1+ compatibility<\/li>\n<li>Improved input sanitization and validation<\/li>\n<li>Enhanced security with proper nonce handling<\/li>\n<li>Fixed WordPress.org plugin checker compliance issues<\/li>\n<li>Removed hidden files (.DS_Store) for WordPress.org submission<\/li>\n<li>Added proper escaping for all output<\/li>\n<li>Improved JSON-LD structured data handling<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Custom post type for events<\/li>\n<li>Shortcode support with filtering options<\/li>\n<li>Template override system<\/li>\n<li>Structured data (JSON-LD) for SEO<\/li>\n<li>Featured events functionality<\/li>\n<li>Member-only events support<\/li>\n<li>Location management with address fields<\/li>\n<li>Date and time support with all-day events<\/li>\n<li>Performance caching system<\/li>\n<li>Theme integration with template hierarchy<\/li>\n<\/ul>","raw_excerpt":"Atomic Events Calendar: A lightweight WordPress events framework that gives agencies full control without the bloat.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/249785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=249785"}],"author":[{"embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lehelm"}],"wp:attachment":[{"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=249785"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=249785"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=249785"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=249785"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=249785"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/az.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=249785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}