{"id":325119,"date":"2026-06-30T12:33:46","date_gmt":"2026-06-30T12:33:46","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/iti-digital-ai-ready-events-places\/"},"modified":"2026-10-13T12:25:40","modified_gmt":"2026-10-13T12:25:40","slug":"itidi-ai-events-places","status":"publish","type":"plugin","link":"https:\/\/me.wordpress.org\/plugins\/itidi-ai-events-places\/","author":23495907,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"ITI Digital AI-Ready Events & Places","header_author":"ITI Digital","header_description":"AI-ready Events and Places content delivery for WordPress with SEO, schema, discoverability, and real-time rendering support.","assets_banners_color":"200537","last_updated":"2026-10-13 12:25:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/iti-digital.com","rating":0,"author_block_rating":0,"active_installs":40,"downloads":721,"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":"itidigital","date":"2026-07-15 14:11:36","revision":3608988},"1.0.1":{"tag":"1.0.1","author":"itidigital","date":"2026-07-15 14:36:37","revision":3609032},"1.0.2":{"tag":"1.0.2","author":"itidigital","date":"2026-07-31 06:24:45","revision":3629450},"1.0.3":{"tag":"1.0.3","author":"itidigital","date":"2026-08-07 11:26:45","revision":3637774},"1.0.4":{"tag":"1.0.4","author":"itidigital","date":"2026-10-13 12:25:40","revision":3743887}},"upgrade_notice":{"1.0.4":"<p>Adds Itineraries, Travel Planner, llms.txt, custom post type support, improved expired Event handling, trailing slash synchronization, enhanced Event\/Place link previews, and expanded cache and module-status handling.<\/p>","1.0.3":"<p>Fixes scheduled cache refresh compatibility with page-builder content and adds WP Engine cache refresh support.<\/p>","1.0.2":"<p>Adds Event and Place submission form shortcodes, analytics-friendly dataLayer tracking, and updated Detail Base Page guidance.<\/p>","1.0.1":"<p>Adds configurable listing limits, shortcode builder tools, limit shortcode support, and improved listing initialization for delayed JavaScript loading.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3591606,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3591606,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3591606,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3591606,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3591517,"resolution":"1","location":"assets","locale":"","width":1252,"height":813},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3591517,"resolution":"2","location":"assets","locale":"","width":1253,"height":1165},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3591517,"resolution":"3","location":"assets","locale":"","width":1254,"height":1116},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3743884,"resolution":"4","location":"assets","locale":"","width":1251,"height":1193},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3743884,"resolution":"5","location":"assets","locale":"","width":1257,"height":1158},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3743884,"resolution":"6","location":"assets","locale":"","width":1251,"height":594},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3743884,"resolution":"7","location":"assets","locale":"","width":1254,"height":1232},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3743884,"resolution":"8","location":"assets","locale":"","width":1259,"height":1165},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3743884,"resolution":"9","location":"assets","locale":"","width":1251,"height":1140}},"screenshots":{"1":"General plugin connection and configuration settings.","2":"Events module settings, dynamic routes, and shortcode tools.","3":"Places module settings, dynamic routes, and shortcode tools.","4":"Itineraries listing and detail content settings.","5":"Travel Planner placement and frontend loading settings.","6":"Advanced settings including optional custom post type support.","7":"SEO tools including sitemap, llms.txt, canonical handling, and staging mode.","8":"Cache tools, authenticated webhook configuration, and cache management.","9":"Help tab with setup guidance, documentation links, and shortcode examples."}},"plugin_section":[],"plugin_tags":[1486,286444,17483,186,1557],"plugin_category":[40,55],"plugin_contributors":[269591],"plugin_business_model":[],"class_list":["post-325119","plugin","type-plugin","status-publish","hentry","plugin_tags-events","plugin_tags-itineraries","plugin_tags-places","plugin_tags-seo","plugin_tags-sitemap","plugin_category-calendar-and-events","plugin_category-seo-and-marketing","plugin_contributors-itidigital","plugin_committers-itidigital"],"banners":{"banner":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/banner-772x250.png?rev=3591606","banner_2x":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/banner-1544x500.png?rev=3591606","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/icon-128x128.png?rev=3591606","icon_2x":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/icon-256x256.png?rev=3591606","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-1.png?rev=3591517","caption":"General plugin connection and configuration settings."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-2.png?rev=3591517","caption":"Events module settings, dynamic routes, and shortcode tools."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-3.png?rev=3591517","caption":"Places module settings, dynamic routes, and shortcode tools."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-4.png?rev=3743884","caption":"Itineraries listing and detail content settings."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-5.png?rev=3743884","caption":"Travel Planner placement and frontend loading settings."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-6.png?rev=3743884","caption":"Advanced settings including optional custom post type support."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-7.png?rev=3743884","caption":"SEO tools including sitemap, llms.txt, canonical handling, and staging mode."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-8.png?rev=3743884","caption":"Cache tools, authenticated webhook configuration, and cache management."},{"src":"https:\/\/ps.w.org\/itidi-ai-events-places\/assets\/screenshot-9.png?rev=3743884","caption":"Help tab with setup guidance, documentation links, and shortcode examples."}],"raw_content":"<!--section=description-->\n<p>SEO-friendly Events, Places, Itineraries, and Travel Planner integration for WordPress powered by the ITI Digital platform.<\/p>\n\n<p>AI-ready tourism content delivery for WordPress with server-side rendering, SEO-friendly URLs, structured data, dynamic sitemap support, llms.txt support, optional WordPress search integration, module-status synchronization, cache management, and real-time content updates.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>API key support for authenticated ITI Digital API requests<\/li>\n<li>Server-side rendered HTML optimized for SEO and AI-assisted search discoverability<\/li>\n<li>Clean, SEO-friendly URLs using WordPress rewrite rules<\/li>\n<li>Dynamic XML sitemap for Event and Place content<\/li>\n<li>Canonical URL caching for improved SEO<\/li>\n<li>Support for detail base pages with structured URLs:\n\n<ul>\n<li>Events: <code>\/e\/<\/code><\/li>\n<li>Places: <code>\/p\/<\/code><\/li>\n<\/ul><\/li>\n<li>Staging mode to safely test canonical and sitemap URLs<\/li>\n<li>Automatic trailing slash handling based on WordPress settings<\/li>\n<li>Automatic sitemap exclusion support for internal SSR layout pages<\/li>\n<li>Automatic cache refresh for SSR listing pages<\/li>\n<li>Manual cache refresh and URL purge tools<\/li>\n<li>Authenticated webhook endpoint for Event, Place, Itinerary, and module-status updates<\/li>\n<li>Dynamic route cache exclusion recommendations<\/li>\n<li>Optional WordPress search integration for Event and Place results<\/li>\n<li>Theme-overridable search templates for frontend customization<\/li>\n<li>Itineraries listing and embedded detail content support<\/li>\n<li>Travel Planner integration with configurable frontend placement and loading rules<\/li>\n<li><code>\/llms.txt<\/code> support for Event, Place, and Itinerary discovery pages<\/li>\n<li>Optional public custom post type support for Events, Places, and Itineraries<\/li>\n<\/ul>\n\n<h3>Important Notes<\/h3>\n\n<ul>\n<li>Save Permalinks after changing routes<\/li>\n<li>Avoid creating child pages under the selected base pages that use the reserved paths \/e\/ (Events) or \/p\/ (Places), as they may conflict with dynamic detail URLs.<\/li>\n<li>Staging mode should not be used on production sites<\/li>\n<li><code>\/llms.txt<\/code> may be cached by the hosting provider or CDN. If possible, reduce the cache duration for this URL, or clear the site\/CDN cache after adding, removing, or changing configured Event, Place, or Itinerary pages.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from <strong>Plugins \u2192 Add New Plugin<\/strong> in WordPress, or upload the plugin ZIP using <strong>Plugins \u2192 Add New Plugin \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>ITI Digital AI-Ready Events &amp; Places<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 ITI Digital Events &amp; Places<\/strong>.<\/li>\n<li>Enter the Hubname and API Key provided by ITI Digital.<\/li>\n<li>Configure the available modules and select the appropriate content entries for Events, Places, Itineraries, and Travel Planner where applicable.<\/li>\n<li>Save the plugin settings.<\/li>\n<li>After configuring Event or Place routes, go to <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save Changes<\/strong>.<\/li>\n<\/ol>\n\n<p>Internal layout pages used for SSR rendering are not intended to function as standalone public landing pages.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20this%20plugin%20require%3F\"><h3>What does this plugin require?<\/h3><\/dt>\n<dd><p>You need an active ITI Digital hub and valid hub configuration on the ITI Digital platform.<\/p><\/dd>\n<dt id=\"is%20an%20api%20key%20required%3F\"><h3>Is an API key required?<\/h3><\/dt>\n<dd><p>Yes. A valid ITI Digital API key is required for authenticated API requests.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20without%20an%20iti%20digital%20hub%3F\"><h3>Does this plugin work without an ITI Digital hub?<\/h3><\/dt>\n<dd><p>No. The plugin depends on external ITI Digital API responses.<\/p><\/dd>\n<dt id=\"why%20are%20some%20tabs%20hidden%20in%20settings%3F\"><h3>Why are some tabs hidden in settings?<\/h3><\/dt>\n<dd><p>The plugin checks the configured hub and only shows modules enabled for that hub.<\/p><\/dd>\n<dt id=\"how%20do%20i%20reset%20the%20plugin%20connection%3F\"><h3>How do I reset the plugin connection?<\/h3><\/dt>\n<dd><p>Use the Disconnect button in the General tab. This clears the saved hub connection and returns the plugin to first-time setup state.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20add%20schema%3F\"><h3>Does the plugin add schema?<\/h3><\/dt>\n<dd><p>The plugin uses ITI Digital API content and can suppress default schema from supported SEO plugins on dynamic event and place routes.<\/p><\/dd>\n<dt id=\"which%20seo%20plugins%20are%20supported%3F\"><h3>Which SEO plugins are supported?<\/h3><\/dt>\n<dd><p>The plugin includes compatibility handling for:\n* Rank Math\n* Yoast SEO\n* All in One SEO<\/p><\/dd>\n<dt id=\"why%20are%20my%20urls%20not%20working%3F\"><h3>Why are my URLs not working?<\/h3><\/dt>\n<dd><p>Make sure you saved WordPress Permalinks after updating settings.<\/p><\/dd>\n<dt id=\"why%20is%20my%20canonical%20url%20different%3F\"><h3>Why is my canonical URL different?<\/h3><\/dt>\n<dd><p>Check if Staging mode is enabled.<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20detail%20base%20pages%3F\"><h3>Can I use multiple detail base pages?<\/h3><\/dt>\n<dd><p>Yes. You can select multiple detail base pages where supported.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20cache%20invalidation%20webhooks%3F\"><h3>Does the plugin support cache invalidation webhooks?<\/h3><\/dt>\n<dd><p>Yes. The plugin provides an authenticated webhook endpoint that can receive Event, Place, Itinerary, and module-status updates from the ITI Digital platform. Depending on the update type, the plugin can refresh configured content pages, purge affected URLs, and synchronize module availability.<\/p><\/dd>\n<dt id=\"can%20events%20and%20places%20appear%20in%20wordpress%20search%20results%3F\"><h3>Can Events and Places appear in WordPress search results?<\/h3><\/dt>\n<dd><p>Yes. Events and Places can be included in WordPress search results when enabled from the Events and Places settings tabs.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20search%20result%20templates%3F\"><h3>Can I customize the search result templates?<\/h3><\/dt>\n<dd><p>Yes. Search templates can be overridden from the active theme under <code>itidi-ai-events-places\/search\/<\/code>.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20itineraries%3F\"><h3>Does the plugin support Itineraries?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports Itinerary listings and embedded Itinerary detail content. Listing and detail content entries can be configured from the Itineraries settings tab.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20travel%20planner%3F\"><h3>Does the plugin support Travel Planner?<\/h3><\/dt>\n<dd><p>Yes. When Travel Planner is available for the connected hub, it can be enabled and configured from the plugin settings with frontend placement and loading rules.<\/p><\/dd>\n<dt id=\"what%20is%20llms.txt%3F\"><h3>What is llms.txt?<\/h3><\/dt>\n<dd><p>When enabled, the plugin generates <code>\/llms.txt<\/code> to provide AI crawlers with official Event, Place, and Itinerary discovery links, along with the available ITI Digital sitemap.<\/p><\/dd>\n<dt id=\"can%20i%20use%20custom%20post%20types%20for%20events%2C%20places%2C%20or%20itineraries%3F\"><h3>Can I use custom post types for Events, Places, or Itineraries?<\/h3><\/dt>\n<dd><p>Yes. Pages and Posts are supported by default. Additional eligible public custom post types can be enabled separately for Events, Places, and Itineraries from the Advanced settings tab.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added <code>\/llms.txt<\/code> support for exposing official destination content and discovery links to AI crawlers.<\/li>\n<li>Added Itineraries module integration, including module-status handling, listing and detail content support, settings, shortcode tools, and cache handling.<\/li>\n<li>Added Travel Planner integration with remote availability detection, configurable frontend loading rules, automatic exclusions, and cache handling.<\/li>\n<li>Added support for the <code>tripPlanner<\/code> module-status value for platform synchronization.<\/li>\n<li>Added optional public custom post type support for Events, Places, and Itineraries through the Advanced settings tab.<\/li>\n<li>Added automatic trailing slash API handling based on the WordPress permalink structure.<\/li>\n<li>Improved expired and unavailable Event handling by rendering the full SSR HTML response provided by the API.<\/li>\n<li>Fixed frontend header\/menu layering issues on dynamic single Event and Place pages.<\/li>\n<li>Fixed single Event and Place link previews incorrectly referencing the underlying WordPress layout\/template page.<\/li>\n<li>Added dynamic Open Graph image handling for single Event and Place pages using image data returned by the API.<\/li>\n<li>Removed incorrect WordPress oEmbed discovery links from dynamic single Event and Place URLs.<\/li>\n<li>Improved webhook authentication by accepting the configured cache-purge secret only through the request signature header.<\/li>\n<li>Added guidance for hosting\/CDN caching of <code>\/llms.txt<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed an issue where the scheduled cache refresh process could affect page-builder content on some sites.<\/li>\n<li>Added WP Engine cache refresh support for ITI shortcode pages.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added Event and Place submission form shortcodes.<\/li>\n<li>Added analytics-friendly dataLayer tracking for Event and Place detail pages.<\/li>\n<li>Removed outdated Detail Base Page warning about child pages, since detail URLs use dedicated \/e\/ and \/p\/ route separators.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added configurable listing limits for Events and Places.<\/li>\n<li>Added <code>limit<\/code> shortcode attribute support for Event and Place listing shortcodes.<\/li>\n<li>Added admin shortcode builder tools to help create full Event and Place listing shortcodes with attributes, including add\/remove handling for shortcode parameters.<\/li>\n<li>Improved listing widget initialization when third-party widget scripts load later due to optimization or delayed JavaScript settings.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with SSR support for Events and Places<\/li>\n<li>API key authentication support<\/li>\n<li>Optional WordPress search integration for Event and Place results<\/li>\n<li>Theme-overridable search templates<\/li>\n<li>Dynamic sitemap<\/li>\n<li>Canonical URL caching<\/li>\n<li>Staging URL replacement<\/li>\n<li>Improved routing with \/e\/ and \/p\/<\/li>\n<li>Automatic sitemap exclusion support for internal SSR layout pages<\/li>\n<li>Automatic cache refresh system<\/li>\n<li>Manual cache management tools<\/li>\n<li>Secure webhook-based cache invalidation<\/li>\n<li>Dynamic route cache exclusion recommendations<\/li>\n<li>SSR cache refresh support for Event and Place listings<\/li>\n<li>Support for Rank Math, Yoast SEO, and All in One SEO<\/li>\n<li>Legacy Embed Finder migration helper<\/li>\n<li>AI discoverability and structured content optimization<\/li>\n<\/ul>","raw_excerpt":"SEO-friendly Events, Places, Itineraries, and Travel Planner integration for WordPress powered by the ITI Digital platform.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/325119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=325119"}],"author":[{"embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/itidigital"}],"wp:attachment":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=325119"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=325119"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=325119"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=325119"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=325119"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=325119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}