{"id":316945,"date":"2026-08-26T06:12:18","date_gmt":"2026-08-26T06:12:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/orchestra-map\/"},"modified":"2026-08-26T06:12:07","modified_gmt":"2026-08-26T06:12:07","slug":"orchestra-map","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/orchestra-map\/","author":23503557,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.9.90","stable_tag":"1.9.90","tested":"7.0.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Orchestra Map","header_author":"SWu Labs","header_description":"Interactive orchestra map powered by Leaflet \u2013 manage orchestras and display them on a map or list.","assets_banners_color":"3c5071","last_updated":"2026-08-26 06:12:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/swulabs.com\/code\/orchestra-map\/","header_author_uri":"https:\/\/swulabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.9.90":{"tag":"1.9.90","author":"swulabs","date":"2026-08-26 06:12:07"}},"upgrade_notice":{"1.9.22":"<p>Update recommended: fixes custom fields being editable without a valid Orchestra Map Pro license.<\/p>","1.9.21":"<p>Geocoding is now available in the free plugin. No license required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3666309,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3666309,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3666309,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3666309,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.9.90"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3666309,"resolution":"1","location":"assets","locale":"","width":1200,"height":761},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3666309,"resolution":"2","location":"assets","locale":"","width":1200,"height":1713},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3666309,"resolution":"3","location":"assets","locale":"","width":1200,"height":675},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3666309,"resolution":"4","location":"assets","locale":"","width":1200,"height":1487},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3666309,"resolution":"5","location":"assets","locale":"","width":1200,"height":1124},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3666309,"resolution":"6","location":"assets","locale":"","width":1200,"height":1188}},"screenshots":{"1":"Interactive Leaflet map with MarkerCluster","2":"Orchestra list view with search and filter","3":"Admin \u2013 orchestra list with sortable, customisable columns","4":"Admin \u2013 add orchestra form","5":"Admin \u2013 Fields settings: add, reorder and configure custom fields","6":"Admin \u2013 Design settings: customise map, popup, list and search colors"}},"plugin_section":[],"plugin_tags":[2466,4595,2909,40118,80],"plugin_category":[43,49],"plugin_contributors":[277505],"plugin_business_model":[],"class_list":["post-316945","plugin","type-plugin","status-publish","hentry","plugin_tags-directory","plugin_tags-leaflet","plugin_tags-map","plugin_tags-orchestra","plugin_tags-shortcode","plugin_category-customization","plugin_category-maps-and-location","plugin_contributors-swulabs","plugin_committers-swulabs"],"banners":{"banner":"https:\/\/ps.w.org\/orchestra-map\/assets\/banner-772x250.png?rev=3666309","banner_2x":"https:\/\/ps.w.org\/orchestra-map\/assets\/banner-1544x500.png?rev=3666309","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/orchestra-map\/assets\/icon-128x128.png?rev=3666309","icon_2x":"https:\/\/ps.w.org\/orchestra-map\/assets\/icon-256x256.png?rev=3666309","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/orchestra-map\/assets\/screenshot-1.png?rev=3666309","caption":"Interactive Leaflet map with MarkerCluster"},{"src":"https:\/\/ps.w.org\/orchestra-map\/assets\/screenshot-2.png?rev=3666309","caption":"Orchestra list view with search and filter"},{"src":"https:\/\/ps.w.org\/orchestra-map\/assets\/screenshot-3.png?rev=3666309","caption":"Admin \u2013 orchestra list with sortable, customisable columns"},{"src":"https:\/\/ps.w.org\/orchestra-map\/assets\/screenshot-4.png?rev=3666309","caption":"Admin \u2013 add orchestra form"},{"src":"https:\/\/ps.w.org\/orchestra-map\/assets\/screenshot-5.png?rev=3666309","caption":"Admin \u2013 Fields settings: add, reorder and configure custom fields"},{"src":"https:\/\/ps.w.org\/orchestra-map\/assets\/screenshot-6.png?rev=3666309","caption":"Admin \u2013 Design settings: customise map, popup, list and search colors"}],"raw_content":"<!--section=description-->\n<p><strong>Orchestra Map<\/strong> lets you build an interactive directory of orchestras (or any kind of location-based entries) and display them on a Leaflet map, in a filterable list, or with a standalone search bar.<\/p>\n\n<h4>Core features (free)<\/h4>\n\n<ul>\n<li><strong>Interactive map<\/strong> via [orchestra_map] shortcode \u2013 powered by Leaflet.js and MarkerCluster<\/li>\n<li><strong>List view<\/strong> via [orchestra_list] shortcode \u2013 filterable, connected to the map<\/li>\n<li><strong>Search bar<\/strong> via [orchestra_search] shortcode \u2013 communicates with map and list via DOM events<\/li>\n<li><strong>Add \/ edit \/ delete<\/strong> orchestras in a clean admin UI<\/li>\n<li><strong>Built-in fields<\/strong>: Name, Website, Email, Venue name, Address, ZIP, City, Country<\/li>\n<li><strong>Custom Fields<\/strong> \u2013 add, reorder, and label your own data columns in the Fields settings page<\/li>\n<li><strong>Design settings<\/strong> \u2013 customise map colors, fonts and sizes in the Design settings page<\/li>\n<li><strong>Geocoding<\/strong> \u2013 converts addresses to coordinates automatically via OpenStreetMap Nominatim (free, no API key required)<\/li>\n<li><strong>Shortcode reference<\/strong> \u2013 full attribute documentation for all shortcodes, right in the admin<\/li>\n<\/ul>\n\n<h4>Pro add-on<\/h4>\n\n<p>The <strong>Orchestra Map Pro<\/strong> add-on (sold separately at <a href=\"https:\/\/swulabs.com\/code\/orchestra-map\/\">swulabs.com<\/a>) extends the free plugin with:<\/p>\n\n<ul>\n<li>Import &amp; Export (CSV \/ Excel)<\/li>\n<\/ul>\n\n<h4>Shortcode reference<\/h4>\n\n<p>Site-wide defaults (colors, initial map view, which fields show where) are configured on the Design and Fields admin pages. The attributes below only override those defaults for a single shortcode instance \u2013 see the in-plugin \"Shortcode\" admin page for the full reference.<\/p>\n\n<p><strong>[orchestra_map]<\/strong><\/p>\n\n\n\n\n  Attribute\n  Default\n  Description\n\n\n\n\n  height\n  600px\n  Map height (any CSS value)\n\n\n  lat\n  51.1657\n  Initial map center latitude\n\n\n  lng\n  10.4515\n  Initial map center longitude\n\n\n  zoom\n  6\n  Initial zoom level\n\n\n  address\n  (none)\n  Initial map center as an address, auto-geocoded and cached (overrides lat\/lng)\n\n\n  radius_km\n  (none)\n  Fit the initial view to this radius in kilometers (overrides zoom)\n\n\n  search\n  yes\n  Show integrated search (yes\/no)\n\n\n  search_position\n  top\n  Search position (top\/bottom)\n\n\n\n\n<p><strong>[orchestra_list]<\/strong> \u2013 displays a filterable table of all geocoded orchestras.<\/p>\n\n<p><strong>[orchestra_search]<\/strong> \u2013 standalone search input; communicates with the map and list via the custom DOM events <code>om:filter<\/code> and <code>om:select<\/code>.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>This plugin bundles the following open-source libraries:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/leafletjs.com\/\">Leaflet<\/a> \u2013 BSD-2-Clause License, Copyright (c) 2010\u20132023 Vladimir Agafonkin<\/li>\n<li><a href=\"https:\/\/github.com\/Leaflet\/Leaflet.markercluster\">Leaflet.markercluster<\/a> \u2013 MIT License, Copyright (c) 2012 David Leaver<\/li>\n<li>Geocoding via <a href=\"https:\/\/nominatim.openstreetmap.org\/\">OpenStreetMap Nominatim<\/a> \u2013 usage subject to the <a href=\"https:\/\/operations.osmfoundation.org\/policies\/nominatim\/\">Nominatim Usage Policy<\/a><\/li>\n<li>Map tiles via <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> \u2013 \u00a9 OpenStreetMap contributors, data licensed under the <a href=\"https:\/\/opendatacommons.org\/licenses\/odbl\/\">Open Database License (ODbL)<\/a>, tile usage subject to the <a href=\"https:\/\/operations.osmfoundation.org\/policies\/tiles\/\">Tile Usage Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>orchestra-map<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin via <em>Plugins \u2192 Installed Plugins<\/em>.<\/li>\n<li>Go to <em>Orchestra Map \u2192 + Add<\/em> and create your first entry.<\/li>\n<li>Use the geocoding button in the orchestra list to convert addresses to coordinates.<\/li>\n<li>Insert <code>[orchestra_map]<\/code> into any page or block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20an%20api%20key%3F\"><h3>Does this plugin require an API key?<\/h3><\/dt>\n<dd><p>No. Geocoding uses OpenStreetMap Nominatim, which is free and requires no registration.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20data%20to%20external%20servers%3F\"><h3>Does this plugin send data to external servers?<\/h3><\/dt>\n<dd><p>Two kinds. Geocoding sends the address fields (street, ZIP, city, country) of an orchestra entry to the OpenStreetMap Nominatim API (nominatim.openstreetmap.org) to retrieve geographic coordinates \u2014 always initiated by an admin action, never automatically in the background. Subject to the <a href=\"https:\/\/operations.osmfoundation.org\/policies\/nominatim\/\">Nominatim Usage Policy<\/a>.<\/p>\n\n<p>Separately, every visitor viewing the [orchestra_map] shortcode loads map tiles directly from the OpenStreetMap tile server (tile.openstreetmap.org) in their own browser \u2014 no orchestra data is sent, only standard map tile requests. Subject to the <a href=\"https:\/\/operations.osmfoundation.org\/policies\/tiles\/\">Tile Usage Policy<\/a>. High-traffic sites should consider a commercial tile provider per that policy.<\/p><\/dd>\n<dt id=\"how%20many%20orchestras%20can%20i%20add%3F\"><h3>How many orchestras can I add?<\/h3><\/dt>\n<dd><p>There is no hard limit. The plugin stores data in a custom database table.<\/p><\/dd>\n<dt id=\"can%20i%20import%20from%20excel%20or%20csv%3F\"><h3>Can I import from Excel or CSV?<\/h3><\/dt>\n<dd><p>Import and Export are available in the <strong>Orchestra Map Pro<\/strong> add-on.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20map%20colors%20and%20fonts%3F\"><h3>Can I customise the map colors and fonts?<\/h3><\/dt>\n<dd><p>Yes. The free Design settings page lets you customise marker, search, map, info panel, popup and list colors and sizes.<\/p><\/dd>\n<dt id=\"can%20i%20add%20custom%20data%20fields%3F\"><h3>Can I add custom data fields?<\/h3><\/dt>\n<dd><p>Yes. The free Fields settings page lets you add, reorder and label your own custom data fields.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20full-site%20editing%20%28fse%29%20themes%3F\"><h3>Is the plugin compatible with Full-Site Editing (FSE) themes?<\/h3><\/dt>\n<dd><p>Yes. The shortcodes work in both classic and block-based themes.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.9.90<\/h4>\n\n<ul>\n<li>Fix: One constant (<code>GEOCODING_FIELD_KEYS<\/code>) didn't carry the plugin's naming prefix, per WP.org review feedback - renamed to <code>ORCHESTRA_MAP_GEOCODING_FIELD_KEYS<\/code>.<\/li>\n<li>Change: All internal CSS classes, IDs, CSS custom properties and custom DOM events switched from the <code>om-<\/code> prefix to <code>orchestra-map-<\/code> (e.g. <code>om-card<\/code> \u2192 <code>orchestra-map-card<\/code>, event <code>om:filter<\/code> \u2192 <code>orchestra-map:filter<\/code>), to avoid the short, generic prefix colliding with other plugins\/themes on the same page.<\/li>\n<\/ul>\n\n<h4>1.9.89<\/h4>\n\n<ul>\n<li>Fix: Saving the Fields settings page while a venue-group field's \"Field\" checkbox was off (making its shared \"Title\" checkbox disabled) silently reset that Title flag to off, discarding the previously saved value instead of preserving it.<\/li>\n<li>Fix: Adding a custom field with a key that already existed silently added nothing while still showing \"Field settings saved.\" - now shows a clear \"already exists\" error instead.<\/li>\n<li>Fix: A pasted non-breaking space, zero-width space, or byte-order-mark in a Label field could pass as \"non-empty\" while rendering blank; detecting a blank label now strips these too, not just plain ASCII whitespace.<\/li>\n<li>Change: The default Cluster Color is now a shade of blue matching the plugin's usual accent color, instead of Leaflet's default green, so it's consistent with the rest of the built-in color palette.<\/li>\n<li>Feature: The Design settings page's Marker section now has a \"Cluster Count Text Color\" field, for the number shown inside each cluster bubble - defaults to white, since it wasn't previously configurable and the darker default cluster background made the old (unstyled) text hard to read.<\/li>\n<\/ul>\n\n<h4>1.9.88<\/h4>\n\n<ul>\n<li>Fix: The Orchestra List's \"Alternating Row Color\" (zebra striping) never actually showed - each row's hidden expanded-row sibling in the page threw off the even\/odd counting the striping relied on, so it only ever matched hidden rows. Rows are now striped explicitly instead of relying on position, so this works correctly.<\/li>\n<\/ul>\n\n<h4>1.9.87<\/h4>\n\n<ul>\n<li>Feature: The Orchestra List's own link color and its expanded (accordion) row background are now independently configurable on the Design settings page (\"Link Color\", \"Expanded Row Background\" under Orchestra List), instead of silently reusing the Info Panel's colors. Changing the Info Panel's background\/link color on the Design page no longer affects the list view at all.<\/li>\n<\/ul>\n\n<h4>1.9.86<\/h4>\n\n<ul>\n<li>Fix: The new cluster color (1.9.84) made the cluster bubbles fully solid, losing the lighter-ring-around-a-darker-circle \"halo\" the default green\/yellow\/orange clusters had - restored with the custom color, so clusters still visually read as \"grouped\" at a glance.<\/li>\n<\/ul>\n\n<h4>1.9.85<\/h4>\n\n<ul>\n<li>Fix: Clearing a color or dimension field on the Design settings page (e.g. Border Radius) and saving crashed with a hard error page instead of a normal validation message. Clearing a field now resets it to its default instead.<\/li>\n<li>Feature: Every field on the Design settings page now shows its default value underneath, so it's clear what a field resets to (or started as).<\/li>\n<\/ul>\n\n<p>For older versions see changelog.txt.<\/p>","raw_excerpt":"Interactive orchestra map powered by Leaflet. Manage orchestra entries and display them on a map, in a list, or with a search bar.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/316945","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=316945"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/swulabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=316945"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=316945"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=316945"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=316945"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=316945"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=316945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}