{"id":370502,"date":"2026-09-25T05:33:47","date_gmt":"2026-09-25T05:33:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/eventotron\/"},"modified":"2026-09-25T09:12:42","modified_gmt":"2026-09-25T09:12:42","slug":"eventotron","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/eventotron\/","author":23567880,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"5.2.10","stable_tag":"5.2.10","tested":"7.1.2","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"Eventotron","header_author":"Eventotron","header_description":"Display and filter events, venues and merchandise from your Eventotron season. Ticket sales via the Eventotron embed.","assets_banners_color":"ffaa25","last_updated":"2026-09-25 09:12:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/eventotron.com\/kb\/wordpress-plugin","header_author_uri":"https:\/\/eventotron.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"5.2.10":{"tag":"5.2.10","author":"eventotron","date":"2026-09-25 09:12:42","revision":3712739}},"upgrade_notice":{"5.2.10":"<p>Removes the last unprefixed global variable. No functional change.<\/p>","5.2.9":"<p>Repairs migrations that 5.2.5 to 5.2.8 left incomplete, including sites with only archived seasons and genre, date or venue terms shared with another plugin. Listings and maps now serve images from your own media library. Recommended for every site on 5.2.5 or later.<\/p>","5.2.8":"<p>Safer first-run migration, inline security checks on every admin request, and no inline scripts in filter results. Theme copies of <code>single-performance.php<\/code> or <code>etron-perflist.php<\/code> keep working; new copies should call <code>etron_the_ticket_button_atts()<\/code>.<\/p>","5.2.7":"<p>Fixes for the ticket window on small screens: the bottom of a long ticket list is reachable again and &quot;Add to Basket&quot; stays visible. No changes to the plugin&#039;s own settings or content.<\/p>","5.2.6":"<p>Fixes empty listings after 5.2.5 where a shortcode or theme template still used the old <code>post_type<\/code> names. Recommended for anyone who has already updated to 5.2.5.<\/p>","5.2.5":"<p>Post types and taxonomies gain an <code>etron_<\/code> prefix (<code>events<\/code> is now <code>etron_events<\/code>, etc.). Content migrates itself and URLs don&#039;t change, but theme copies of the plugin&#039;s templates and custom queries must use the new names. The Facebook Pixel field no longer does anything.<\/p>","5.2.0":"<p>Maps move from Google to OpenStreetMap. If your theme has its own copies of archive-events.php, archive-performances.php, archive-venues.php, single-venue.php or taxonomy-venue.php, re-copy them from the plugin: the old copies still load Google Maps with a key that no longer exists.<\/p>","5.1.1":"<p>Sites connected to more than one season should check the Sales season setting under Eventotron &gt; Settings after updating.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3712423,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3712423,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3712423,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3712423,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3712423,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["5.2.10"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[13459,1486,24213,4771,1149],"plugin_category":[40,58],"plugin_contributors":[282645],"plugin_business_model":[],"class_list":["post-370502","plugin","type-plugin","status-publish","hentry","plugin_tags-box-office","plugin_tags-events","plugin_tags-festival","plugin_tags-tickets","plugin_tags-venues","plugin_category-calendar-and-events","plugin_category-user-management","plugin_contributors-eventotron","plugin_committers-eventotron"],"banners":{"banner":"https:\/\/ps.w.org\/eventotron\/assets\/banner-772x250.png?rev=3712423","banner_2x":"https:\/\/ps.w.org\/eventotron\/assets\/banner-1544x500.png?rev=3712423","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/eventotron\/assets\/icon.svg?rev=3712423","icon":"https:\/\/ps.w.org\/eventotron\/assets\/icon.svg?rev=3712423","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Eventotron is a festival and season management service used by arts festivals, fringes and venues. This plugin connects a WordPress site to a season in your Eventotron account and publishes it on the site.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Imports events, performances, venues and merchandise from your season as WordPress content, with the fields you choose mapped onto each page.<\/li>\n<li>Adds searchable \"What's On\" listings for events, performances and venues, filterable by date, genre, venue, keyword, your own custom fields, and distance from a typed location.<\/li>\n<li>Shows a map of the results and of each venue.<\/li>\n<li>Adds a \"departure board\" shortcode of the next performances starting near the visitor, using their browser's location if they allow it.<\/li>\n<li>Keeps the site in step with Eventotron: refresh a season by hand, or let a background sync pick up changed events and venues every 15 minutes.<\/li>\n<li>Sells tickets and merchandise through the Eventotron checkout. Buying happens inside Eventotron's own window; this plugin does not take payment details.<\/li>\n<li>Lets buyers sign in to their Eventotron account from your site with the <code>[etron_account]<\/code> shortcode, so they can see their orders. Sign-in happens inside Eventotron's window too.<\/li>\n<li>Lets you tailor every listing and page layout from the settings screens, or override the templates from your theme.<\/li>\n<\/ul>\n\n<p><strong>You need an Eventotron account.<\/strong> The plugin does nothing until it is connected to a season with an API key from your Eventotron dashboard. Eventotron is a paid service; see https:\/\/eventotron.com for plans and terms.<\/p>\n\n<p><strong>Third-party code<\/strong><\/p>\n\n<ul>\n<li>Leaflet 1.9.4 (https:\/\/leafletjs.com), BSD-2-Clause, bundled unminified in <code>assets\/lib\/leaflet<\/code>.<\/li>\n<li>The distance search is adapted from WP Geo Query by Greg Schoppe (https:\/\/gschoppe.com\/wordpress\/geo-searches\/).<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on the services below. Nothing is sent to anyone else, and no usage data is collected by the plugin itself.<\/p>\n\n<p><strong>Eventotron (https:\/\/eventotron.com)<\/strong> \u2014 the service this plugin exists to publish. It is used for three things:<\/p>\n\n<ul>\n<li>Importing your season: the plugin fetches your season's events, performances, venues and merchandise from Eventotron's API (<code>https:\/\/eventotron.com\/api\/wp-bridge\/<\/code>) using the season API key you enter in the settings. This happens when you connect or refresh a season, and every 15 minutes if background sync is switched on. Only the API key is sent.<\/li>\n<li>Selling tickets: pages that sell tickets load Eventotron's checkout script from <code>https:\/\/eventotron.com\/embed\/v1\/embed.js<\/code>. Ticket selection, buyer sign-in and payment all happen inside Eventotron's own window; this plugin never sees payment details or buyer accounts.<\/li>\n<li>The \"Where\" filter: the place name a visitor types is sent to Eventotron to be turned into map coordinates. Nothing else about the visitor is sent, and results are cached for a day.<\/li>\n<\/ul>\n\n<p>Terms: https:\/\/eventotron.com\/terms. Privacy: https:\/\/eventotron.com\/privacy. You need an Eventotron account for any of this to work.<\/p>\n\n<p><strong>Eventotron's image store<\/strong> \u2014 when you import an event, venue or merchandise item, its main image is downloaded from Eventotron's content delivery network (<code>d1vlmco8ur52ud.cloudfront.net<\/code>) into your media library, and built-in listings, maps and social-image metadata use that media-library copy. If the image import fails, these views omit the image rather than loading the original remote URL. Custom template fields styled as images, custom HTML and theme overrides may still load URLs supplied by the site owner or the imported data directly; those image hosts then receive the visitor\u2019s IP address and normal browser request headers. Covered by the Eventotron terms and privacy policy above.<\/p>\n\n<p><strong>OpenStreetMap (https:\/\/www.openstreetmap.org)<\/strong> \u2014 map tiles are loaded from OpenStreetMap's public tile servers when a page shows a map, which means those servers receive the visitor's IP address as part of the request. Tile usage policy: https:\/\/operations.osmfoundation.org\/policies\/tiles\/. Privacy: https:\/\/wiki.osmfoundation.org\/wiki\/Privacy_Policy. Busy sites should use the <code>etron_map_tile_url<\/code> and <code>etron_map_tile_attribution<\/code> filters to point at a hosted tile provider of their choice.<\/p>\n\n<p><strong>YouTube and Vimeo<\/strong> \u2014 if an event or venue in your season has a YouTube or Vimeo video, its page embeds that video with the provider's own player (<code>youtube.com<\/code>, <code>player.vimeo.com<\/code>), which loads only when that page is viewed. YouTube terms: https:\/\/www.youtube.com\/t\/terms, privacy: https:\/\/policies.google.com\/privacy. Vimeo terms: https:\/\/vimeo.com\/terms, privacy: https:\/\/vimeo.com\/privacy.<\/p>\n\n<p><strong>The visitor's browser location<\/strong> \u2014 the departure board's \"Nearest\" option asks the browser for the visitor's location. The browser asks the visitor for permission first, and the coordinates are used only to order results on that page; they are not stored.<\/p>\n\n<!--section=installation-->\n<p><strong>Before you start:<\/strong> This version of the plugin replaces any previous version distributed directly from Eventotron or sent to you by Eventotron staff (anything with version number 4.x.x or lower). Please deactivate and remove older versions before proceeding to install this version. You only need to do this once - future upgrades will be handled automatically.<\/p>\n\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen, and activate it.<\/li>\n<li>Go to <strong>Eventotron<\/strong> in the admin menu and paste the API key for your season from your Eventotron dashboard. The season appears as a new tab.<\/li>\n<li>On the season tab, choose which Eventotron fields supply the event image, description and genre, save, then import the events you want to publish.<\/li>\n<li>Your listings are now live at <code>\/events\/<\/code>, <code>\/performances\/<\/code> and <code>\/venues\/<\/code>. Add them to your menus. Visit <strong>Settings &gt; Permalinks<\/strong> once if the pages return 404.<\/li>\n<li>Optional: switch on <strong>Auto-sync with Eventotron<\/strong> under Eventotron &gt; Settings to keep imported content up to date automatically.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20google%20maps%20api%20key%3F\"><h3>Do I need a Google Maps API key?<\/h3><\/dt>\n<dd><p>No. Maps use OpenStreetMap through Leaflet, and place names typed into the location filter are looked up through your Eventotron account. There is nothing to configure.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20different%20map%20provider%3F\"><h3>Can I use a different map provider?<\/h3><\/dt>\n<dd><p>Yes. Add the <code>etron_map_tile_url<\/code> and <code>etron_map_tile_attribution<\/code> filters in your theme or a small plugin to point the maps at any XYZ tile provider, such as MapTiler or Stadia Maps.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20handle%20payments%3F\"><h3>Does the plugin handle payments?<\/h3><\/dt>\n<dd><p>No. Ticket and merchandise purchases open Eventotron's own checkout in a window on the page. Card details never touch your WordPress site.<\/p><\/dd>\n<dt id=\"can%20i%20change%20how%20the%20pages%20look%3F\"><h3>Can I change how the pages look?<\/h3><\/dt>\n<dd><p>Yes. The settings screens control which fields appear where on each listing, page and tile. For deeper changes copy any of the plugin's <code>single-*.php<\/code>, <code>archive-*.php<\/code> or <code>taxonomy-*.php<\/code> templates into your theme; the theme copy is used instead.<\/p><\/dd>\n<dt id=\"can%20buyers%20sign%20in%20to%20their%20eventotron%20account%20on%20my%20site%3F\"><h3>Can buyers sign in to their Eventotron account on my site?<\/h3><\/dt>\n<dd><p>Yes. Put <code>[etron_account]<\/code> in a page, widget or template. It shows a \"Sign in\" button that opens Eventotron's own sign-in (email link or password) in a window on the page, and once signed in shows the buyer's name with a link to their orders. Add <code>style=\"icon-only\"<\/code> for a compact icon. For a button in your theme, call <code>etronOpenLogin()<\/code> from its onclick. Nothing about the buyer's account is stored in WordPress.<\/p><\/dd>\n<dt id=\"which%20pages%20sell%20which%20season%3F\"><h3>Which pages sell which season?<\/h3><\/dt>\n<dd><p>Each event, performance and merchandise page sells the season it was imported from. Listings, the departure board and your own pages sell the <strong>Sales season<\/strong> chosen under Eventotron &gt; Settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>5.2.10<\/h4>\n\n<ul>\n<li>The advanced-search toggles on the events listing now read the page's own <code>?adv=<\/code> query string directly instead of a variable set by the template, so no unprefixed global remains and theme copies of <code>archive-events.php<\/code> from any version keep their toggles ticked.<\/li>\n<\/ul>\n\n<h4>5.2.9<\/h4>\n\n<ul>\n<li>The one-time 5.2.5 content migration now also runs on sites whose only seasons are archived, and retries on sites where 5.2.8 recorded it as finished without completing it. If a listing or a genre filter went empty after updating, this release repairs it.<\/li>\n<li>A genre, date or venue term shared with content from another plugin is now copied rather than renamed, so the other plugin keeps its own term and yours moves across with its settings and description intact. Term counts and cached listings are refreshed as the migration goes.<\/li>\n<li>If a term cannot be created, the migration now stops and leaves your existing content exactly as it was, rather than recording itself as finished. The next admin page load tries again.<\/li>\n<li>Listings, maps and social-sharing images use the copy of each image in your own media library. Where an image did not import, these views leave it out instead of loading the original from Eventotron.<\/li>\n<li>Template settings uploads and the bundled defaults are read through WordPress's own JSON file reader.<\/li>\n<\/ul>\n\n<h4>5.2.8<\/h4>\n\n<ul>\n<li>The one-time 5.2.5 content migration now only runs on sites that had an earlier version installed, and only renames posts and terms this plugin imported (identified by the Eventotron meta it stamps on them). A fresh install no longer touches any other plugin's content that happens to use a post type called <code>events<\/code> or <code>venues<\/code>.<\/li>\n<li>Every admin request handler checks its nonce and the user's capability inline, and the import routines no longer read the request themselves; they receive their ids from the handler that already verified it.<\/li>\n<li>Filter results come back as plain markup: the response no longer carries <code>&lt;script&gt;<\/code> tags, and the plugin's script reads a hidden state element instead. Ticket buttons use data attributes rather than inline <code>onclick<\/code> handlers, so a strict Content Security Policy no longer blocks them.<\/li>\n<li>Bundled icons are filed in the media library through the WordPress filesystem and media APIs. Requires WordPress 5.9 or later.<\/li>\n<\/ul>\n\n<h4>5.2.7<\/h4>\n\n<ul>\n<li>The ticket window is no longer cut off at the bottom of the screen on phones, so you can reach the bottom of a long list of ticket options.<\/li>\n<li>\"Add to Basket\" now stays in view while you scroll through the ticket options, instead of sitting below the last one.<\/li>\n<li>Ticket options you cannot buy say why \u2014 \"Sold out\", \"Maximum 6 per order\" or \"No more available\" \u2014 rather than only greying out the + and \u2212 buttons.<\/li>\n<li>Where several ticket types share one section's remaining tickets, taking the last of them now closes the others, so you can no longer pick more tickets than exist and have the basket refuse them at the end.<\/li>\n<li>These are changes to the Eventotron ticket window itself, which is served from eventotron.com. This release updates the plugin's version number so visitors' browsers fetch the new version rather than reusing a cached copy.<\/li>\n<\/ul>\n\n<h4>5.2.6<\/h4>\n\n<ul>\n<li>Shortcodes and theme templates written before 5.2.5 that still ask for <code>events<\/code>, <code>performances<\/code>, <code>venues<\/code>, <code>merch<\/code>, <code>sku<\/code> or <code>archived-events<\/code> by their old names now find the right content again instead of showing nothing. If you have <code>[etron_events post_type=\"performances\"]<\/code> on a page, it works as it did before 5.2.5 \u2014 though it is worth updating it to <code>etron_performances<\/code> when you next edit the page.<\/li>\n<\/ul>\n\n<h4>5.2.5<\/h4>\n\n<ul>\n<li>New <code>[etron_account]<\/code> shortcode: a \"Sign in\" button that opens Eventotron's own sign-in on the page, and once the buyer is signed in shows their name with a link to their orders. Add <code>style=\"icon-only\"<\/code> for the compact icon, or call <code>etronOpenLogin()<\/code> from a button in your own theme. Nothing about the buyer's account is stored in WordPress.<\/li>\n<li>Post types and taxonomies now carry the plugin's prefix (<code>etron_events<\/code>, <code>etron_performances<\/code>, <code>etron_venues<\/code>, <code>etron_merch<\/code>, <code>etron_sku<\/code>, <code>etron_archived<\/code>; <code>etron_genres<\/code>, <code>etron_dates<\/code>, <code>etron_venues<\/code>, <code>etron_seasons<\/code>). Existing content is migrated on the first page load after updating, and public URLs such as <code>\/events\/<\/code> and <code>\/performances\/<\/code> do not change. See the upgrade notice if your theme overrides the plugin's templates.<\/li>\n<li>The Facebook Pixel is no longer loaded. It fired on every event and performance page that had a <code>meta_pixel_id<\/code> field, with no opt-in and no visitor consent; use a consent-aware tag manager instead.<\/li>\n<li>The \"Add a button\" item in the event and venue template editors is gone, along with the \"Please Login\" image it produced. It was left over from the old built-in box office and had nothing behind it since 5.0.0; a button saved in older settings now renders nothing.<\/li>\n<li>Every script and stylesheet the plugin adds to a page goes through WordPress's enqueue system rather than inline tags, and the admin screens share one stylesheet.<\/li>\n<li>Venue term pages show the venue image from your media library instead of hotlinking Eventotron's CDN.<\/li>\n<li>Settings saved from the Settings and template screens are sanitized field by field, and admin requests always use <code>admin_url()<\/code>.<\/li>\n<li>The <code>[etron_dboard]<\/code> shortcode returns its markup instead of printing it, so it works inside blocks and other shortcodes.<\/li>\n<li>No more \"incorrectly called\" notice on activation. The Eventotron menu now sits with the other plugin menus at the bottom of the admin sidebar.<\/li>\n<li>The External services section of this readme now lists every host the plugin talks to.<\/li>\n<\/ul>\n\n<h4>5.2.4<\/h4>\n\n<ul>\n<li>Every global constant and class carries the plugin's own prefix (<code>EE_CORE<\/code>, <code>EE_VERSION<\/code> and friends are now <code>ETRON_CORE<\/code>, <code>ETRON_VERSION<\/code>, etc.), closing the last warnings from the WordPress.org Plugin Check pass. No user-facing changes.<\/li>\n<\/ul>\n\n<h4>5.2.3<\/h4>\n\n<ul>\n<li>Full Plugin Check pass: every superglobal read sanitized, every AJAX and admin endpoint nonce-verified (including a new nonce on the template import forms), no unprefixed global function or variable names, and every direct database query either replaced or documented. No user-facing changes.<\/li>\n<\/ul>\n\n<h4>5.2.2<\/h4>\n\n<ul>\n<li>Text domain is <code>eventotron<\/code>, matching the WordPress.org slug, so translations load.<\/li>\n<li>No hardcoded plugin folder paths: assets and template fallbacks resolve wherever the plugin is installed.<\/li>\n<\/ul>\n\n<h4>5.2.1<\/h4>\n\n<ul>\n<li>The plugin's directory listing links to its knowledge-base article at eventotron.com.<\/li>\n<\/ul>\n\n<h4>5.2.0<\/h4>\n\n<ul>\n<li>Maps are drawn with Leaflet on OpenStreetMap tiles. The Google Maps key is gone and there is nothing to configure; use the <code>etron_map_tile_url<\/code> filter to pick another tile provider.<\/li>\n<li>The \"Where\" filter looks places up through your Eventotron account instead of Google Places.<\/li>\n<li>Security and standards pass for the WordPress.org directory: every output escaped, all database queries prepared, direct-access guards on every file, the WordPress HTTP API in place of cURL, and one text domain throughout.<\/li>\n<li>Plugin renamed to Eventotron. Super Simple Box Office was retired in 5.0.0.<\/li>\n<\/ul>\n\n<h4>5.1.1<\/h4>\n\n<ul>\n<li>Buy buttons now sell the season the performance belongs to, and pages not tied to one season use the new Sales season setting.<\/li>\n<\/ul>\n\n<h4>5.1.0<\/h4>\n\n<ul>\n<li>Background sync: changed events and venues are refreshed from Eventotron every 15 minutes when enabled.<\/li>\n<li>Removed legacy code paths.<\/li>\n<\/ul>\n\n<h4>5.0.0<\/h4>\n\n<ul>\n<li>Ticketing moved to the Eventotron checkout. The built-in Super Simple Box Office was removed.<\/li>\n<\/ul>","raw_excerpt":"Publish your Eventotron season&#039;s events, performances, venues and merchandise on your site, with tickets sold through Eventotron.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370502","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=370502"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/eventotron"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370502"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370502"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370502"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370502"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370502"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}