{"id":391387,"date":"2026-10-27T09:44:01","date_gmt":"2026-10-27T09:44:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/qaiyo-timeline-events\/"},"modified":"2026-10-27T09:43:48","modified_gmt":"2026-10-27T09:43:48","slug":"qaiyo-timeline-events","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/qaiyo-timeline-events\/","author":23510315,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Qaiyo Timeline Events","header_author":"Qaiyo","header_description":"Event program timelines \u2014 vertical timeline and horizontal carousel, speaker cards, theme color and font matching, calendar export and SEO\/AEO structured data. Polylang and WPML compatible.","assets_banners_color":"","last_updated":"2026-10-27 09:43:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/qaiyo-plugins.com\/plugins\/","header_author_uri":"https:\/\/qaiyo-plugins.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"qaiyo","date":"2026-10-27 09:43:48","revision":3768155}},"upgrade_notice":{"1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"qaiyo\/timeline-events":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"qaiyo\/timeline-events","title":"Qaiyo Timeline Events","category":"widgets","icon":"clock","description":"Show an event program as a vertical timeline or a horizontal carousel.","keywords":["timeline","events","schedule","agenda","qaiyo"],"textdomain":"qaiyo-timeline-events","supports":{"html":false,"align":["wide","full"]},"attributes":{"id":{"type":"integer","default":0},"group":{"type":"string","default":""},"title":{"type":"string","default":""},"subtitle":{"type":"string","default":""},"badge":{"type":"string","default":""},"moderator":{"type":"string","default":""},"mod_role":{"type":"string","default":""},"date":{"type":"string","default":""},"theme":{"type":"string","default":""},"layout":{"type":"string","default":""},"orderby":{"type":"string","default":""},"autoplay":{"type":"integer","default":0},"max":{"type":"integer","default":-1}},"editorScript":"file:.\/edit.js","style":"qaiyo-timeline-events-frontend"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Vertical timeline (dark theme) with badges and speaker cards.","2":"Horizontal carousel layout.","3":"Event editor: layout picker, live preview and the drag-and-drop time slot list.","4":"Settings page."}},"plugin_section":[],"plugin_tags":[5595,118,1486,4062,5575],"plugin_category":[40],"plugin_contributors":[267332],"plugin_business_model":[],"class_list":["post-391387","plugin","type-plugin","status-publish","hentry","plugin_tags-agenda","plugin_tags-conference","plugin_tags-events","plugin_tags-schedule","plugin_tags-timeline","plugin_category-calendar-and-events","plugin_contributors-qaiyo","plugin_committers-qaiyo"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/qaiyo-timeline-events.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Qaiyo Timeline Events displays a beautiful program timeline \u2014 perfect for conferences, webinars, meetups, workshops, product launches and company milestones.<\/p>\n\n<p><strong>One event, all its time slots<\/strong><\/p>\n\n<p>You create an <strong>event<\/strong> \u2014 the whole conference, workshop day or launch \u2014 and add its <strong>time slots<\/strong> inside it, in one screen. Drag them into order, open a slot to fill in its details, and everything saves as you type. Layout, colors and display options belong to the event, so the same program can look completely different from one event to the next.<\/p>\n\n<p><strong>Layouts<\/strong><\/p>\n\n<ul>\n<li><strong>Vertical timeline<\/strong> \u2014 a classic agenda with a time rail, animated cards and colored dots.<\/li>\n<li><strong>Horizontal carousel<\/strong> \u2014 an elegant, swipeable card carousel with arrows, dots, keyboard navigation and optional autoplay.<\/li>\n<\/ul>\n\n<p><strong>Shortcode and Gutenberg block<\/strong><\/p>\n\n<ul>\n<li>A block editor block with a live preview and an event picker \u2014 no shortcode needed.<\/li>\n<li>The classic <code>[qaiyo_timeline_events]<\/code> shortcode for any page builder or widget.<\/li>\n<\/ul>\n\n<p><strong>Add to calendar<\/strong><\/p>\n\n<ul>\n<li>Per-event \"Add to calendar\" buttons: Google Calendar and a downloadable <code>.ics<\/code> file.<\/li>\n<li>A one-click <code>.ics<\/code> export of the whole program, ready to import into any calendar app.<\/li>\n<\/ul>\n\n<p><strong>Design that matches your site<\/strong><\/p>\n\n<ul>\n<li>The accent color is detected automatically from your theme or page builder \u2014 Elementor, Bricks Builder, Divi, Oxygen and Gutenberg (theme.json) are supported.<\/li>\n<li>Heading and body fonts follow the theme's global typography (Elementor, Bricks).<\/li>\n<li>Dark and light color schemes.<\/li>\n<li>Per-event accent color, badge (label + icon + colors), card padding, title size and timeline rail (solid or dashed, width, light and dark color).<\/li>\n<li>Individual time slots can override the accent color and badge when one of them needs to stand out.<\/li>\n<\/ul>\n\n<p><strong>Speaker cards<\/strong><\/p>\n\n<ul>\n<li>Speaker name, company, and photo from the Media Library (circular crop) \u2014 or an automatically generated monogram avatar.<\/li>\n<li>Optional moderator row above the timeline.<\/li>\n<\/ul>\n\n<p><strong>SEO \/ AEO ready<\/strong><\/p>\n\n<ul>\n<li>schema.org Event microdata on every card.<\/li>\n<li>An <code>EventSeries<\/code> JSON-LD block for search engines and AI assistants.<\/li>\n<li>You control the title HTML tag (p, h3\u2013h6, span) \u2014 never an extra H1.<\/li>\n<\/ul>\n\n<p><strong>Accessible (WCAG 2.2 AA)<\/strong><\/p>\n\n<ul>\n<li>The carousel follows the WAI-ARIA carousel pattern: a Stop\/Start button whenever it rotates on its own, rotation pauses on hover and keyboard focus, slides out of view are taken out of the tab order, and slide changes are announced.<\/li>\n<li>Arrow, dot and calendar buttons have accessible names and a visible focus ring; every target is at least 24 \u00d7 24 px.<\/li>\n<li>Text drawn in your accent color is darkened or lightened automatically until it reaches 4.5:1 contrast, so a pale theme color never produces unreadable labels.<\/li>\n<li>Reduced-motion and Windows high-contrast (forced colors) modes are respected.<\/li>\n<li>In the editor every field has a label, and time slots can be reordered with Move up \/ Move down buttons as well as by dragging.<\/li>\n<\/ul>\n\n<p><strong>Works with any theme<\/strong><\/p>\n\n<ul>\n<li>Sizes are set in pixels, not rem, so a theme that changes the root font size cannot shrink the timeline; theme styles for links, buttons and headings are reset inside the timeline.<\/li>\n<\/ul>\n\n<p><strong>Multilingual<\/strong><\/p>\n\n<ul>\n<li>Fully translatable, including the block editor \u2014 translations are delivered through translate.wordpress.org, and the plugin ships a .pot template.<\/li>\n<li>Polylang and WPML compatible (wpml-config.xml included); works with TranslatePress and Loco Translate.<\/li>\n<\/ul>\n\n<p><strong>Usage<\/strong><\/p>\n\n<p>Create an event under Timeline Events, add its time slots, then add the block or copy the shortcode shown right in the event editor:<\/p>\n\n<pre><code>[qaiyo_timeline_events id=\"123\"]\n<\/code><\/pre>\n\n<p>Everything else is optional \u2014 the attributes below override the event's own settings for one placement:<\/p>\n\n<p>Attributes: <code>id<\/code> (the event), <code>title<\/code>, <code>subtitle<\/code>, <code>badge<\/code>, <code>moderator<\/code>, <code>mod_role<\/code>, <code>date<\/code> (program day, for calendar export), <code>theme<\/code> (dark\/light), <code>layout<\/code> (vertical\/horizontal), <code>orderby<\/code> (auto\/time_asc\/time_desc\/date_asc\/date_desc), <code>autoplay<\/code> (ms), <code>max<\/code>.<\/p>\n\n<p><strong>Qaiyo Timeline Events Pro<\/strong> adds multi-day and multi-track agendas, an alternating steps layout, highlight notes, a live \"happening now\" mode with a countdown, reusable speaker profiles, front-end filtering and CSV import\/export.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on the following external services. No data is sent anywhere unless one of the situations below applies.<\/p>\n\n<p><strong>1. WordPress.org plugin directory API (api.wordpress.org)<\/strong><\/p>\n\n<p>Used only on the admin screen \"Discover Qaiyo\", to list this author's free plugins available on WordPress.org. The request is made by your site when a logged-in administrator opens that screen, and the result is cached for 12 hours. It sends no personal data and no information about your site \u2014 only the query for the plugin list. This is WordPress's own infrastructure.\nPrivacy: https:\/\/wordpress.org\/about\/privacy\/<\/p>\n\n<p><strong>2. Google Calendar (calendar.google.com)<\/strong><\/p>\n\n<p>The \"Add to calendar \u2192 Google\" button is a plain link. Nothing is sent while the page loads. Only when a visitor clicks it does their browser open Google Calendar, passing the event title, description and start\/end time in the link, along with the visitor's IP address and user agent as with any website visit. Visitors who never click the button send nothing to Google. The <code>.ics<\/code> download is generated by your own site and involves no third party.\nTerms: https:\/\/policies.google.com\/terms \u2014 Privacy: https:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code> or install it from the Plugins screen.<\/li>\n<li>Activate it.<\/li>\n<li>Create an event under <strong>Timeline Events<\/strong>, add its time slots, then place the block or the <code>[qaiyo_timeline_events]<\/code> shortcode on a page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20delete%20my%20events%20when%20i%20uninstall%20the%20plugin%3F\"><h3>Does it delete my events when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>No. By default all events, their time slots and settings are kept, so reinstalling restores everything. You can opt into full data removal under Timeline Events \u2192 Settings \u2192 Data &amp; maintenance.<\/p><\/dd>\n<dt id=\"can%20i%20sort%20the%20time%20slots%20manually%3F\"><h3>Can I sort the time slots manually?<\/h3><\/dt>\n<dd><p>Yes \u2014 drag them into place in the event editor. That order is what the timeline uses by default; you can switch to sorting by time or date under the event's Display settings.<\/p><\/dd>\n<dt id=\"which%20page%20builders%20are%20supported%20for%20color%2Ffont%20detection%3F\"><h3>Which page builders are supported for color\/font detection?<\/h3><\/dt>\n<dd><p>Elementor, Bricks Builder, Divi, Oxygen and Gutenberg (theme.json). Without any of them, a neutral blue accent is used \u2014 and you can set a custom accent on each event.<\/p><\/dd>\n<dt id=\"i%20used%20the%20old%20%22event%20timeline%22%20plugin.%20will%20my%20events%20survive%3F\"><h3>I used the old \"Event Timeline\" plugin. Will my events survive?<\/h3><\/dt>\n<dd><p>Yes. Each of your old event groups becomes an event, and the entries in it become its time slots \u2014 nothing is deleted and no content is rewritten. Existing <code>group=\"\u2026\"<\/code> shortcodes keep working, and the event editor shows you the new <code>id=\"\u2026\"<\/code> shortcode to switch to when you are ready.<\/p><\/dd>\n<dt id=\"can%20visitors%20see%20draft%20or%20private%20events%3F\"><h3>Can visitors see draft or private events?<\/h3><\/dt>\n<dd><p>No. The timeline, its calendar downloads and every add-on endpoint only show an event that is published and not password-protected \u2014 or one the logged-in user may read in the admin.<\/p><\/dd>\n<dt id=\"how%20do%20the%20%22add%20to%20calendar%22%20buttons%20work%3F\"><h3>How do the \"Add to calendar\" buttons work?<\/h3><\/dt>\n<dd><p>Each time slot with a date gets a Google Calendar link and a downloadable <code>.ics<\/code> file, and the whole program can be exported as a single <code>.ics<\/code>. If your time slots only carry a time (no date), set the event day in the event's Display settings so the calendar entries know when they happen. You can turn the buttons off under Settings \u2192 Add to calendar.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Event-centric editing: one event holds all of its time slots, with drag-and-drop or Move up \/ Move down ordering and inline autosave.<\/li>\n<li>Per-event layout, colors, header and display settings, including a configurable timeline rail (solid or dashed, width, light and dark color).<\/li>\n<li>Vertical timeline and horizontal carousel layouts, each with an SVG preview in the layout picker.<\/li>\n<li>Gutenberg block with a live preview and event picker, plus the <code>[qaiyo_timeline_events id=\"\u2026\"]<\/code> shortcode.<\/li>\n<li>Add to calendar: per-time-slot Google Calendar links and .ics downloads, and a whole-program .ics export (RFC 5545 line folding, UTF-8 safe).<\/li>\n<li>Theme accent color and typography detection (Elementor, Bricks, Divi, Oxygen and block themes via theme.json), skipping near-white and near-black palette entries.<\/li>\n<li>Speaker cards with photos or monogram avatars, badges, and per-event styling.<\/li>\n<li>schema.org Event microdata and an EventSeries JSON-LD block.<\/li>\n<li>Accessibility: WCAG 2.2 AA carousel, automatic contrast for accent-colored text, labelled editor fields, keyboard reordering, reduced-motion and forced-colors support.<\/li>\n<li>Security: drafts, private and password-protected events never render, export or answer the add-on endpoints for visitors; every CSS value is allowlisted on save and checked again on output; JSON-LD cannot close its script element; add-on markup and attributes go through allowlists.<\/li>\n<li>Every post type, taxonomy, meta key, script handle and JavaScript object carries the plugin's own prefix; data saved under the older \"tle_\" names is renamed once, automatically.<\/li>\n<li>Deleting an event also deletes its time slots; uninstall can optionally remove every event, time slot and setting (multisite aware), and always clears caches.<\/li>\n<li>Fully translatable through translate.wordpress.org, including the block editor.<\/li>\n<li>Extension hooks for add-ons: <code>qaiyo_timeline_events_layouts<\/code>, <code>_layout_panels<\/code>, <code>_row_fields<\/code>, <code>_save_row<\/code>, <code>_save_program<\/code>, <code>_program_settings<\/code>, <code>_shortcode_defaults<\/code>, <code>_context<\/code>, <code>_pre_render<\/code>, <code>_before_timeline<\/code>, <code>_after_timeline<\/code>, <code>_after_wrap<\/code>, <code>_card_bottom<\/code>, <code>_speaker_html<\/code>, <code>_card_attributes<\/code>, <code>_event_meta<\/code>, <code>_json_ld<\/code>, <code>_event_duration<\/code>, <code>_primary_color<\/code>, <code>_theme_fonts<\/code>, <code>_settings_defaults<\/code>, <code>_pro_features<\/code>, <code>_unlocked_features<\/code>, <code>_upgrade_url<\/code>.<\/li>\n<\/ul>","raw_excerpt":"Build an event program with drag-and-drop time slots, vertical or carousel layouts, speaker cards, calendar export and structured data.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/391387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=391387"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/qaiyo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=391387"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=391387"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=391387"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=391387"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=391387"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=391387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}