{"id":279329,"date":"2026-02-07T18:12:58","date_gmt":"2026-02-07T18:12:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/luzid-content-scheduler\/"},"modified":"2026-03-06T14:35:48","modified_gmt":"2026-03-06T14:35:48","slug":"luzid-content-scheduler","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/luzid-content-scheduler\/","author":23440701,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.4.3","stable_tag":"1.4.3","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Luzid Content Scheduler","header_author":"Luzid Media","header_description":"Schedule the visibility of frontend content blocks (banners, alerts, divs) and output the next event via shortcode.","assets_banners_color":"fbfeff","last_updated":"2026-03-06 14:35:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/luzid-media.com","rating":0,"author_block_rating":0,"active_installs":20,"downloads":331,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.2":{"tag":"1.4.2","author":"luzidmedia","date":"2026-03-06 11:07:40"},"1.4.3":{"tag":"1.4.3","author":"luzidmedia","date":"2026-03-06 14:35:48"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3476453,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-de_DE.jpg":{"filename":"banner-1544x500-de_DE.jpg","revision":3476453,"resolution":"1544x500","location":"assets","locale":"de_DE"},"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3476453,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250-de_DE.jpg":{"filename":"banner-772x250-de_DE.jpg","revision":3476453,"resolution":"772x250","location":"assets","locale":"de_DE"},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3476453,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.2","1.4.3"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3476453,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3476453,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3476453,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3476453,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3476453,"resolution":"5","location":"assets","locale":""},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3476453,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"Setup tab: Create a scheduler and copy the CSS class \/ shortcode.","2":"Dates tab: Add single dates or date ranges with times and event text.","3":"Recurring tab: Define weekly, monthly, or yearly patterns.","4":"Exceptions tab: Block specific dates from showing content.","5":"Event Classes tab: Create multiple CSS classes with independent visibility windows.","6":"Preview tab: See all upcoming events at a glance."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[784,529,20007,4685,80],"plugin_category":[43],"plugin_contributors":[255410],"plugin_business_model":[],"class_list":["post-279329","plugin","type-plugin","status-publish","hentry","plugin_tags-banner","plugin_tags-content","plugin_tags-pagebuilder","plugin_tags-scheduler","plugin_tags-shortcode","plugin_category-customization","plugin_contributors-luzidmedia","plugin_committers-luzidmedia"],"banners":{"banner":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/banner-772x250.jpg?rev=3476453","banner_2x":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/banner-1544x500.jpg?rev=3476453","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/icon.svg?rev=3476453","icon":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/icon.svg?rev=3476453","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/screenshot-1.jpg?rev=3476453","caption":"Setup tab: Create a scheduler and copy the CSS class \/ shortcode."},{"src":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/screenshot-2.jpg?rev=3476453","caption":"Dates tab: Add single dates or date ranges with times and event text."},{"src":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/screenshot-3.jpg?rev=3476453","caption":"Recurring tab: Define weekly, monthly, or yearly patterns."},{"src":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/screenshot-4.jpg?rev=3476453","caption":"Exceptions tab: Block specific dates from showing content."},{"src":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/screenshot-5.jpg?rev=3476453","caption":"Event Classes tab: Create multiple CSS classes with independent visibility windows."},{"src":"https:\/\/ps.w.org\/luzid-content-scheduler\/assets\/screenshot-6.jpg?rev=3476453","caption":"Preview tab: See all upcoming events at a glance."}],"raw_content":"<!--section=description-->\n<p><strong>Luzid Content Scheduler<\/strong> controls <em>when<\/em> a specific frontend block is visible \u2014 and can also <em>output<\/em> the next scheduled date(s) via shortcode.<\/p>\n\n<p>This gives you two complementary ways to use a scheduler:<\/p>\n\n<ol>\n<li><p><strong>Show \/ hide a block<\/strong> (banner, alert, section, popup wrapper, \u2026)<br \/>\nAdd the generated CSS class <code>luzid-cs-&lt;slug&gt;<\/code> to the element. The plugin adds body classes and a tiny frontend helper so the block is only displayed while the schedule is active.<\/p><\/li>\n<li><p><strong>Display dates in the frontend<\/strong><br \/>\nUse the shortcode to print the next event (or a list of upcoming events) anywhere in your content.<\/p><\/li>\n<\/ol>\n\n<h4>Typical Use Cases<\/h4>\n\n<ul>\n<li><strong>Maintenance banners<\/strong>: Show a \"We're updating our systems\" notice only during scheduled maintenance windows.<\/li>\n<li><strong>Seasonal content<\/strong>: Display holiday greetings, special offers, or seasonal menus during specific date ranges.<\/li>\n<li><strong>Event announcements<\/strong>: Print \"Next event: Saturday, March 15th at 7 PM\" dynamically on any page.<\/li>\n<li><strong>Recurring schedules<\/strong>: Show \"Happy Hour specials\" every Friday from 5 PM to 8 PM.<\/li>\n<li><strong>Multi-stage visibility<\/strong>: Use Event Classes to show a popup 4 days before an event, the full content 2 weeks before, and a menu item 11 days before \u2014 all independently controlled.<\/li>\n<li><strong>Event calendars<\/strong>: Generate a table of all upcoming events across multiple schedulers.<\/li>\n<\/ul>\n\n<h4>Core Concepts<\/h4>\n\n<ul>\n<li>A scheduler becomes <strong>active<\/strong> when <strong>at least one<\/strong> rule matches (single dates\/ranges <em>or<\/em> recurring rules).<\/li>\n<li><strong>Exceptions override everything<\/strong>: if \"now\" is inside an exception range, the block is hidden even if other rules match.<\/li>\n<li><strong>Event Classes<\/strong> (new in 1.4) allow multiple independent visibility windows with different offsets \u2014 each generating its own CSS class.<\/li>\n<li>The shortcode reads the same event logic and outputs formatted dates with full control over separators and formatting.<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<h4>Scheduling<\/h4>\n\n<ul>\n<li><strong>Single dates &amp; date ranges<\/strong>: Define specific days or periods when content should be visible.<\/li>\n<li><strong>Recurring rules<\/strong>: Weekly (every Monday), Monthly (every 15th), Weekday in month (2nd Thursday), Yearly (February 14th).<\/li>\n<li><strong>Exceptions<\/strong>: Override all rules \u2014 content stays hidden during exception periods.<\/li>\n<li><strong>Event Classes<\/strong>: Create multiple CSS classes per scheduler, each with independent visibility offsets.<\/li>\n<\/ul>\n\n<h4>Shortcode Output<\/h4>\n\n<ul>\n<li><strong>Flexible date\/time formatting<\/strong>: Choose from short, medium, long, or full date formats.<\/li>\n<li><strong>Separators<\/strong>: Control exactly what appears between date, time, and text parts.<\/li>\n<li><strong>Lists<\/strong>: Output multiple upcoming events with customizable separators.<\/li>\n<li><strong>Event Table<\/strong>: Generate a sortable table of all upcoming events from multiple schedulers.<\/li>\n<li><strong>Time offset<\/strong>: Shift the displayed time (e.g., \"doors open 30 minutes before\").<\/li>\n<\/ul>\n\n<h4>Administration<\/h4>\n\n<ul>\n<li><strong>Card-based UI<\/strong>: Clean, modern interface for managing rules.<\/li>\n<li><strong>Live preview<\/strong>: See upcoming events and visibility windows instantly.<\/li>\n<li><strong>Bilingual<\/strong>: Full German and English support with one-click language switching.<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<h4>Adding CSS Classes to Blocks<\/h4>\n\n<ul>\n<li><strong>Gutenberg<\/strong>: Select block \u2192 \"Advanced\" \u2192 \"Additional CSS class(es)\" \u2192 <code>luzid-cs-&lt;slug&gt;<\/code><\/li>\n<li><strong>Elementor<\/strong>: Widget \u2192 \"Advanced\" \u2192 \"CSS Classes\" \u2192 <code>luzid-cs-&lt;slug&gt;<\/code><\/li>\n<li><strong>Divi\/others<\/strong>: Module settings \u2192 \"CSS Class\" \u2192 <code>luzid-cs-&lt;slug&gt;<\/code><\/li>\n<\/ul>\n\n<h4>Basic Shortcode<\/h4>\n\n<pre><code>[luzid_cs slug=\"your-scheduler\"]\n<\/code><\/pre>\n\n<p>Outputs: The next event date in the default format.<\/p>\n\n<h4>Shortcode Parameters<\/h4>\n\n\n\n\n  Parameter\n  Default\n  Description\n\n\n\n\n  <code>slug<\/code>\n  (required)\n  Scheduler slug\n\n\n  <code>date<\/code>\n  (empty)\n  Date format: <code>short<\/code>, <code>medium<\/code>, <code>long<\/code>, <code>full<\/code>\n\n\n  <code>time<\/code>\n  (empty)\n  Time format: <code>auto<\/code>, <code>raw<\/code>, <code>prefix<\/code>, <code>range<\/code>, <code>range_long<\/code>\n\n\n  <code>list<\/code>\n  <code>false<\/code>\n  Output as list: <code>true<\/code> or <code>false<\/code>\n\n\n  <code>count<\/code>\n  <code>10<\/code>\n  Number of events for lists (max 200)\n\n\n  <code>text<\/code>\n  <code>false<\/code>\n  Include event text: <code>true<\/code> or <code>false<\/code>\n\n\n  <code>sep1<\/code>\n  (space)\n  Separator between date and time\n\n\n  <code>sep2<\/code>\n  (space)\n  Separator between time and text\n\n\n  <code>sep3<\/code>\n  (empty)\n  Separator between list items\n\n\n  <code>timeoffset<\/code>\n  <code>0<\/code>\n  Time offset in minutes (can be negative)\n\n\n  <code>lang<\/code>\n  (current)\n  Force language: <code>de<\/code> or <code>en<\/code>\n\n\n\n\n<h4>Date Formats<\/h4>\n\n\n\n\n  Value\n  Output Example\n\n\n\n\n  <code>short<\/code>\n  14.02.2026\n\n\n  <code>medium<\/code>\n  Sat, 14.02.2026\n\n\n  <code>long<\/code>\n  Saturday, 14.02.2026\n\n\n  <code>full<\/code>\n  Saturday, 14 February 2026\n\n\n\n\n<h4>Time Formats<\/h4>\n\n\n\n\n  Value\n  Output Example\n\n\n\n\n  (empty)\n  No time output\n\n\n  <code>raw<\/code>\n  18:00\n\n\n  <code>prefix<\/code>\n  from 18:00\n\n\n  <code>range<\/code>\n  18:00 to 20:00\n\n\n  <code>range_long<\/code>\n  from 18:00 to 20:00\n\n\n  <code>auto<\/code>\n  Intelligent format based on data\n\n\n\n\n<h4>Shortcode Examples<\/h4>\n\n<p><strong>Simple date output:<\/strong>\n    [luzid_cs slug=\"maintenance\" date=\"long\"]\n\u2192 Saturday, 15.03.2026<\/p>\n\n<p><strong>Date with time:<\/strong>\n    [luzid_cs slug=\"event\" date=\"long\" time=\"auto\"]\n\u2192 Saturday, 15.03.2026 from 18:00 to 20:00<\/p>\n\n<p><strong>Only time output:<\/strong>\n    [luzid_cs slug=\"event\" time=\"raw\"]\n\u2192 18:00<\/p>\n\n<p><strong>Multi-line output:<\/strong>\n    [luzid_cs slug=\"event\" date=\"long\" time=\"auto\" text=\"true\" sep1=\"<br \/>\" sep2=\"<br \/>\"]\n\u2192 Saturday, 15.03.2026\n   from 18:00 to 20:00\n   Valentine's Dinner<\/p>\n\n<p><strong>List of next 5 events:<\/strong>\n    [luzid_cs slug=\"concert\" date=\"long\" text=\"true\" list=\"true\" count=\"5\" sep2=\"<br \/>\" sep3=\"<br \/><br \/>\"]<\/p>\n\n<p><strong>With custom separators:<\/strong>\n    [luzid_cs slug=\"event\" date=\"long\" time=\"raw\" text=\"true\" sep1=\" | \" sep2=\" \u2013 \"]\n\u2192 Saturday, 15.03.2026 | 18:00 \u2013 Valentine's Dinner<\/p>\n\n<h4>Event Table Shortcode<\/h4>\n\n<pre><code>[luzid_cs_eventtable]\n<\/code><\/pre>\n\n<p>Outputs a table of all upcoming events from schedulers with \"Include in Event Table\" enabled.<\/p>\n\n\n\n\n  Parameter\n  Default\n  Description\n\n\n\n\n  <code>cols<\/code>\n  <code>date_medium,time_auto,text<\/code>\n  Columns (comma-separated)\n\n\n  <code>count<\/code>\n  <code>30<\/code>\n  Maximum number of events\n\n\n  <code>headers<\/code>\n  (automatic)\n  Custom column headers\n\n\n  <code>noheaders<\/code>\n  <code>false<\/code>\n  Hide table headers\n\n\n  <code>class<\/code>\n  (empty)\n  Additional CSS class\n\n\n  <code>empty<\/code>\n  \"No events\"\n  Text when no events found\n\n\n  <code>order<\/code>\n  <code>asc<\/code>\n  Sort order: <code>asc<\/code> or <code>desc<\/code>\n\n\n\n\n<p><strong>Available columns:<\/strong>\n    date_short, <code>date_medium<\/code>, <code>date_long<\/code>, <code>date_full<\/code>, <code>weekday_short<\/code>, <code>weekday_long<\/code>, <code>time_raw<\/code>, <code>time_auto<\/code>, <code>time_prefix<\/code>, <code>time_range<\/code>, <code>time_range_long<\/code>, <code>text<\/code>, <code>scheduler<\/code><\/p>\n\n<p><strong>Example with custom columns:<\/strong>\n    [luzid_cs_eventtable cols=\"weekday_short,date_short,time_range,text\" count=\"10\" headers=\"Day,Date,Time,Event\"]<\/p>\n\n<h4>Event Classes (New in 1.4)<\/h4>\n\n<p>Event Classes allow you to create multiple independent visibility windows for a single scheduler. Each class has its own CSS class and offset settings.<\/p>\n\n<p><strong>Example setup:<\/strong><\/p>\n\n\n\n\n  Class\n  CSS Class\n  Days Before\n  Use Case\n\n\n\n\n  Standard\n  <code>.luzid-cs-dinner<\/code>\n  14\n  Main content\n\n\n  popup\n  <code>.luzid-cs-dinner-popup<\/code>\n  4\n  Announcement popup\n\n\n  menu\n  <code>.luzid-cs-dinner-menu<\/code>\n  11\n  Navigation menu item\n\n\n\n\n<p>This allows you to control when different elements appear, all based on the same event schedule.<\/p>\n\n<h4>CSS Hooks<\/h4>\n\n<p><strong>Shortcode output:<\/strong>\n* <code>.luzid-cs<\/code> \u2014 Wrapper (plus <code>.luzid-cs--single<\/code> \/ <code>.luzid-cs--list<\/code>)\n* <code>.luzid-cs-item<\/code> \u2014 Single event in list\n* <code>.luzid-cs-date<\/code> \u2014 Date part\n* <code>.luzid-cs-time<\/code> \u2014 Time part\n* <code>.luzid-cs-text<\/code> \u2014 Event text\n* <code>.luzid-cs-sep<\/code> \/ <code>.luzid-cs-sep1<\/code> \/ <code>.luzid-cs-sep2<\/code> \u2014 Separators<\/p>\n\n<p><strong>Event table:<\/strong>\n* <code>.luzid-cs-eventtable<\/code> \u2014 Table wrapper\n* <code>.luzid-cs-eventtable__head<\/code> \/ <code>__body<\/code> \/ <code>__row<\/code> \/ <code>__cell<\/code><\/p>\n\n<p><strong>Body classes (for conditional CSS):<\/strong>\n* <code>.luzid-cs-active-&lt;slug&gt;<\/code> \u2014 Added when scheduler is active\n* <code>.luzid-cs-active-&lt;slug&gt;-&lt;classname&gt;<\/code> \u2014 Added when specific event class is active<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the <strong>GNU General Public License v2.0 or later<\/strong>.<\/p>\n\n<p>All code in this plugin is GPLv2-or-later compatible.<\/p>\n\n<p>Assets:\n* Luzid Logo and Flag icons are SVG assets shipped with the plugin (assets\/img\/).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress Plugins screen.<\/li>\n<li>Activate <strong>Luzid Content Scheduler<\/strong>.<\/li>\n<li>Go to <strong>WP Admin \u2192 Luzid Content Scheduler<\/strong>.<\/li>\n<li>Create a scheduler, define rules, and save.<\/li>\n<li>Add the generated CSS class <code>luzid-cs-&lt;slug&gt;<\/code> to your frontend block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20are%20multiple%20recurring%20rules%20combined%3F\"><h3>How are multiple recurring rules combined?<\/h3><\/dt>\n<dd><p>They are combined with OR-logic: if <strong>any<\/strong> rule matches, the scheduler is considered active (unless an exception matches).<\/p><\/dd>\n<dt id=\"do%20exceptions%20also%20affect%20the%20frontend%2C%20or%20only%20the%20preview%3F\"><h3>Do exceptions also affect the frontend, or only the preview?<\/h3><\/dt>\n<dd><p>Exceptions affect <strong>everything<\/strong> (frontend visibility, next event calculation, and preview). If \"now\" is inside an exception range, the block stays hidden.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20event%20offset%20%28old%29%20and%20event%20classes%20%28new%29%3F\"><h3>What's the difference between Event Offset (old) and Event Classes (new)?<\/h3><\/dt>\n<dd><p>Event Classes replaced the old Event Offset feature in version 1.4. The key difference: you can now create <strong>multiple classes<\/strong> with independent offsets, allowing different content to appear at different times before\/after an event.<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20event%20classes%20for%20one%20block%3F\"><h3>Can I use multiple Event Classes for one block?<\/h3><\/dt>\n<dd><p>Each Event Class generates a separate CSS class. You can only apply one class per block, but you can have multiple blocks, each with a different Event Class.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20a%20specific%20theme%3F\"><h3>Does the plugin require a specific theme?<\/h3><\/dt>\n<dd><p>No. It works with any theme\/page builder that lets you set a custom CSS class on a block\/element.<\/p><\/dd>\n<dt id=\"can%20i%20output%20only%20the%20time%20without%20the%20date%3F\"><h3>Can I output only the time without the date?<\/h3><\/dt>\n<dd><p>Yes! Use <code>[luzid_cs slug=\"your-slug\" time=\"raw\"]<\/code> to output only the time. Leave out the <code>date<\/code> parameter.<\/p><\/dd>\n<dt id=\"how%20do%20i%20create%20a%20line%20break%20between%20date%20and%20text%3F\"><h3>How do I create a line break between date and text?<\/h3><\/dt>\n<dd><p>Use <code>sep2=\"&lt;br&gt;\"<\/code>: <code>[luzid_cs slug=\"event\" date=\"long\" text=\"true\" sep2=\"&lt;br&gt;\"]<\/code><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fixed: Version number display in admin header.<\/li>\n<li>Improved: Event Classes UI with copy button for CSS classes and consistent icon styling.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Fixed: WordPress Plugin Check escaping warnings for Event Classes panel.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li><strong>New: Event Classes<\/strong> \u2014 Replace single Event Offset with unlimited named classes, each with independent visibility offsets.<\/li>\n<li>New: Each Event Class generates its own CSS class (<code>luzid-cs-&lt;slug&gt;-&lt;classname&gt;<\/code>).<\/li>\n<li>New: Live preview of visibility windows per class.<\/li>\n<li>New: Standard class (non-deletable) maintains backward compatibility.<\/li>\n<li>Changed: Tab renamed from \"Event-Offset\" to \"Event-Klassen\".<\/li>\n<li>Improved: Card-based UI consistent with other tabs.<\/li>\n<li>Migration: Existing Event Offset settings are automatically converted to the new Event Classes structure.<\/li>\n<\/ul>\n\n<h4>1.3.12<\/h4>\n\n<ul>\n<li>Fixed: Shortcode now outputs exactly what is specified \u2014 no hidden defaults.<\/li>\n<li>Fixed: <code>date<\/code> parameter defaults to empty (not \"long\"). Only when neither <code>date<\/code> nor <code>time<\/code> is set, <code>date=\"long\"<\/code> is used as fallback.<\/li>\n<li>Fixed: Using only <code>time=\"raw\"<\/code> now correctly outputs only the time, not date + time.<\/li>\n<\/ul>\n\n<h4>1.3.11<\/h4>\n\n<ul>\n<li>Fixed: Auto-padding removed from separators. <code>&amp;nbsp;<\/code> now outputs exactly one non-breaking space.<\/li>\n<\/ul>\n\n<h4>1.3.10<\/h4>\n\n<ul>\n<li>Fixed: Single space separator handling \u2014 WordPress trims <code>sep1=\" \"<\/code>, now uses default fallback.<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li><strong>New: Separator system refactored<\/strong> \u2014 <code>sep<\/code> replaced by <code>sep1<\/code>, <code>sep2<\/code>, <code>sep3<\/code> for precise control.<\/li>\n<li>New: <code>sep1<\/code> controls separator between date and time.<\/li>\n<li>New: <code>sep2<\/code> controls separator between time and text (or date and text if no time).<\/li>\n<li>New: <code>sep3<\/code> controls separator between list items.<\/li>\n<li>Changed: <code>time<\/code> parameter now defaults to empty (no time output unless explicitly requested).<\/li>\n<li>Breaking: Old <code>sep<\/code> parameter removed. Use <code>sep1<\/code>\/<code>sep2<\/code>\/<code>sep3<\/code> instead.<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>Fixed: Preview table now shows actual saved event text per date.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>Fixed: Yearly recurrence calculation for events spanning year boundaries.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>New: <code>[luzid_cs_eventtable]<\/code> shortcode for tabular event output.<\/li>\n<li>New: \"Include in Event Table\" checkbox per scheduler.<\/li>\n<li>New: Customizable columns, headers, and sorting for event tables.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Improved: Card-based layout unified across all tabs.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>New: Dual-prefix system for Termine tab (CSS class prefix options).<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: \"Time to\" field for time ranges (e.g., 18:00 \u2013 20:00) in single dates and recurring rules.<\/li>\n<li>New: Yearly recurring rule type (e.g., every February 14th at 16:00).<\/li>\n<li>New: Card-based layout for Termine and Wiederholungen tabs.<\/li>\n<li>Changed: Shortcode renamed from <code>[lz-cs]<\/code> to <code>[luzid_cs]<\/code> for WordPress.org compliance.<\/li>\n<li>Changed: CSS classes renamed from <code>lz-cs-*<\/code> to <code>luzid-cs-*<\/code>.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>Changed: List wrapper from <code>&lt;span&gt;<\/code> to <code>&lt;div&gt;<\/code> for better HTML structure.<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Fix: Prevent \"phantom\" events from incomplete recurring rules.<\/li>\n<li>New: Preview table shows event source (Single vs Recurring).<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>New: Shortcode output wrapped in styled span classes.<\/li>\n<li>Improved: <code>sep<\/code> parameter can output <code>&lt;br&gt;<\/code> for line breaks.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fix: Separator spacing preserved correctly.<\/li>\n<li>Improvement: Single dates sorted chronologically.<\/li>\n<li>New: Optional event text for recurring rules.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Added: Optional event text field for single dates.<\/li>\n<li>Changed: Shortcode supports <code>list<\/code>, <code>count<\/code>, <code>text<\/code> and <code>sep<\/code> parameters.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Show\/hide frontend content blocks (banners, alerts, divs) with schedules, recurring rules and exceptions \u2014 via CSS class or shortcode.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/279329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=279329"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/luzidmedia"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=279329"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=279329"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=279329"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=279329"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=279329"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=279329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}