Orchestra Map

Manage Orchestras · Present on the Map · Live in WordPress

Orchestra Map is a professional plugin for music associations, umbrella organizations, and choirs. Manage orchestra entries with location and display them on an interactive Leaflet map as well as in a list view directly in the frontend – no extra infrastructure, no separate login.

✓ Interactive Leaflet Map · ✓ Import & Export via Excel / CSV · ✓ Geocoding & Custom Fields

Orchestra Map – Changelog

Current Version: 1.9.49

1.9.59

  • Fix: Design Settings colors (marker, search, map border, info panel, popup, orchestra list) weren't reaching the frontend - WordPress had already printed the stylesheet's `<style>` tag in the page `<head>` before the shortcode tried to attach the color values, so they were silently dropped. Sizes (min/max width etc.) were unaffected since those travel through a different, unaffected code path.

1.9.58

  • Feature: The Design Settings page's "Map" section now has a site-wide default initial view (address, radius in km, zoom) - the [orchestra_map] shortcode attributes still override it per instance, but most sites can now skip shortcode attributes entirely.
  • Change: The Dashboard's shortcode list is back to a short overview (name + one line each) with a link to the new full Shortcode Reference page, which now documents every attribute for all four shortcodes.
  • Fix: The left-hand admin menu no longer collapses "Orchestra Map" when on the Edit Orchestra page.

1.9.57

  • Feature: [orchestra_map] now accepts an "address" attribute (auto-geocoded and cached for a week, same OpenStreetMap lookup used for orchestra entries) and a "radius_km" attribute to fit the initial view to a given radius instead of guessing a raw zoom level.

1.9.56

  • Fix: "Fields" and "Design" were missing from the admin header tab bar (only present in the sidebar) - the tab list wasn't updated when those two pages were added.
  • Feature: Design Settings page redesigned - each section (Marker, Search, Map, Info Panel, Popup, Orchestra List) is now its own card, laid out side by side on wider screens; every color field now has a hex text input next to the color swatch, kept in sync in both directions.

1.9.55

  • Fix: Add/Edit Orchestra pages restored to the original styled card layout with "Used for automatic geocoding." hints on address fields, a placeholder on the Website field, and a Cancel button - the DDD rewrite had reduced these to a plain, unstyled form table.

1.9.54

  • Fix: Column visibility toggles are now also available directly in the "Column order" chip bar above the Orchestras table (not just the "Screen Options" tab) - both stay in sync since they read/write the same underlying setting.

1.9.53

  • Feature: Orchestras admin list is now a native WordPress list table – column visibility is configurable via the "Screen Options" tab, columns are sortable by clicking their header, and column order can still be changed by dragging the chips above the table (now saved per-user, persists across sessions instead of resetting on reload).

1.9.52

  • Fix: All 7 admin pages (Dashboard, Orchestras, Add, Edit, Fields, Design, Shortcode Generator) wrapped their entire content in the dark ".om-plugin-header" banner class instead of only including the shared header partial – caused the whole page content to render on a dark background with unreadable text. Pages now correctly include `_header.php`/`_footer.php` inside a plain "wrap om-wrap" container, matching the original admin layout.

1.9.51

  • Fix: Frontend shortcodes ([orchestra_map], [orchestra_list], [orchestra_search], [orchestra_panel]) now run on the new internal architecture, resolving a WP.org CSS-escaping guideline finding in the map/list/panel design-color output. No user-facing behavior change – markup, data and JS stay the same.

1.9.50

  • Fix: Custom Fields and Design settings are no longer gated behind a Pro license check – both now have a free, fully functional admin UI (Fields / Design menu pages), resolving the WP.org Trialware guideline finding.
  • Change: Admin pages (Dashboard, Orchestras, Add, Edit, Fields, Design, Shortcode Generator) now run on the new internal architecture; no user-facing behavior change beyond the above.

1.9.49

  • Fix: Mobile list view no longer shows a stray colon before fields that have no label (data-label="").

1.9.48

  • Fix: Clicking a map marker now also opens the corresponding list accordion. Map marker click dispatches `om:select` (source: map); the list responds with accordion open + scroll; the map skips its own zoom/popup logic for source:map to avoid a double-popup flicker.

1.9.47

  • Fix: List accordion now reliably opens when selecting an orchestra via the standalone search bar. The `selectId` is passed directly in the `om:filter` event so the accordion is opened immediately after the list re-renders, eliminating the previous inter-event timing issue.

1.9.46

  • Fix: Clicking an orchestra in the standalone search bar (`[orchestra_search]`) now correctly opens the map popup, list accordion, and panel. Previously `om:filter` fired after `om:select` and hid the panel again; the event order is now reversed and the list gained an `om:select` listener.

1.9.45

  • Fix: Geocoding warning box now hides immediately after a successful single auto-geocode (triggered on Add/Edit), without requiring a page reload.

1.9.44

  • Fix: Data initialization moved from IIFE top-level to inside `DOMContentLoaded` in all three JS modules. When a theme outputs scripts in `<head>` without `defer`, the IIFE executed before the page body was parsed and `document.getElementById('orchestra-map-config')` returned null. Now the `#orchestra-map-config` div is read at DOM-ready time when it is always present.

1.9.43

  • Fix: Orchestra data (`window.orchestraMapData`) was never available on the frontend in environments where `wp_add_inline_script` is intercepted or dropped (Block Themes / FSE, caching/optimisation plugins). Added a guaranteed HTML fallback: each shortcode now embeds a hidden `<div id="orchestra-map-config" data-config="[JSON]">` directly in its output. All three JS modules (`orchestra-map-public.js`, `orchestra-map-list.js`, `orchestra-map-search.js`) now read from this element when `window.orchestraMapData` is not set, and then share the parsed data via `window.orchestraMapData` for subsequent scripts.

1.9.42

  • Fix: `window.orchestraMapData` was never set on sites running a Block Theme (FSE / WordPress 7+). Block Themes print scripts inside `wp_head()` before `the_content()` processes shortcodes, so any `wp_add_inline_script()` calls from shortcode renderers arrived too late. Added `preload_if_needed()` hooked to `wp_enqueue_scripts` at priority 11: it detects orchestra-map shortcodes in the post content and pre-enqueues scripts + inline data during the normal enqueue phase, guaranteeing the global is available regardless of when the theme prints its scripts.

1.9.41

  • Fix: `window.orchestraMapData` was undefined on the frontend when a JS-optimisation plugin (Autoptimize, LiteSpeed Cache, WP Rocket, etc.) stripped inline scripts attached to the virtual `orchestra-map-data` handle (src=false). The inline data is now attached to a real script handle (`orchestra-map`, `orchestra-map-list`, or `orchestra-map-search`) with a `before` position, falling back to the virtual handle only when no optimiser is present. Also removed duplicate localisation logic from the `[orchestra_search]` shortcode.

1.9.40

  • Fix: Built-in field labels (Orchestra Name, Website, Email, Rehearsal Venue/Street/City, Postal Code, Country) are now translatable – labels are resolved via __() at runtime instead of being hardcoded in the static defaults array.

1.9.39

  • Fix: German translation (de_DE) now loads correctly – load_plugin_textdomain() was empty; added explicit call with __FILE__-based path.

1.9.38

  • Fix: German translation (de_DE) cleaned up – removed Pro-plugin strings that belong in Orchestra Map Pro, added 19 missing Free-plugin strings, updated PO/MO.

1.9.37

  • Fix: Replace raw inline `<script>` / `<style>` output with `wp_add_inline_script()` and `wp_add_inline_style()` to comply with WP.org coding standards. Introduces a virtual `orchestra-map-data` script handle that carries `window.orchestraMapData` as an inline script. Admin column-visibility CSS is now applied via JavaScript on page load instead of a PHP-echoed `<style>` tag.

1.9.36

  • Fix: Popup min/max width percentage calculation now uses Leaflet's own container measurement (map.getSize().x) instead of offsetWidth, which could return 0 before layout is complete.

1.9.35

  • Feature: Popup min. width configurable in Design tab (default 30% of map width) – prevents narrow popups when the orchestra name is short.

1.9.34

  • Feature: Popup max. width configurable in Design tab – accepts pixels (e.g. 300) or percent of map width (e.g. 40%).

1.9.33

  • Cleanup: Shortcode generator – removed obsolete "Combined (Map + List)" box and the search-bar toggle from [orchestra_map] (search is now a standalone [orchestra_search] shortcode).

1.9.32

  • Feature: New [orchestra_panel] shortcode – renders the detail panel as a standalone element, freely positionable on the page.
  • Refactor: [orchestra_map] no longer bundles search or panel; compose your layout freely with [orchestra_map], [orchestra_list], [orchestra_panel], [orchestra_search]. All shortcodes sync automatically when on the same page.
  • Refactor: Map center/lat/lng/zoom moved from orchestraMapData to data-attributes on the map div, so any shortcode can safely initialize the shared data first.

1.9.31

  • Feature: List view now has an inline accordion – clicking a row expands a detail panel with the configured panel fields directly within the table.

1.9.30

  • Feature: Title checkboxes (label_popup, label_panel, label_list) now take effect in the frontend – controls whether the field label is shown before each value in popup, panel and list.

1.9.29

  • Enhancement: Fields table redesigned – elegant grouped column headers with vertical sub-labels (Field/Title), hover rows, compact inputs, and scroll wrapper.

1.9.28

  • Feature: Fields table now shows Field/Title sub-columns for Popup, Panel and List locations – allows hiding the field label per display context.

1.9.27

  • Fix: German translation now loads correctly – added explicit load_plugin_textdomain() call (WP auto-load only applies to WP.org-hosted plugins).

1.9.26

  • Fix: Full WordPress.org Plugin Check (PCP) compliance – suppressed all remaining PHPCS warnings (DirectDatabaseQuery, NonceVerification, PrefixAllGlobals, MissingUnslash, SchemaChange); global functions renamed to prefix-first convention.

1.9.25

  • Fix: Resolved all WordPress.org Plugin Check coding standards issues (output escaping, wp_unslash, translators comments).

1.9.24

  • Fix: Built-in field labels (venue, address, ZIP, city, country) are now English by default; one-time migration resets old German defaults for existing installs.

1.9.23

  • Tweak: Default style colors updated to SWu Labs CI (navy + teal).

1.9.22

  • Fix: Custom fields in the add/edit form are now hidden when Orchestra Map Pro has no valid license.

For older versions see changelog.txt.

Orchestra Map Pro – Changelog

Current Version: 1.0.7

  • Fix: `enqueue_scripts()` now returns early on non-Orchestra Map admin pages (performance guard, matches free plugin pattern).