A simple, intuitive Google Map / OpenStreetMap plugin that installs as a Gutenberg block and a shortcode. Packed with useful features — geo-mashup of posts, KML overlays, marker icons, address geocoding — and fully free and open source. No subscriptions, no SaaS, no telemetry.
Slick Google Map lets you embed maps using either:
Features:
[slick_map] shortcode.lat/lng custom fields onto a single map.address="Vienna, Austria" instead of coordinates. Geocoded once per address and cached for 30 days. Uses your Google Geocoding API key if set, falls back to Nominatim/OSM otherwise.48.2082) and DMS (48°12'29.5"N) in any marker.tilt: 45. Only takes visible effect on vector Map IDs, or on satellite/hybrid view over the specific cities where Google has 45° aerial imagery. No effect on raster maps or on Leaflet.[[https://example.com|Display text]] becomes a real link.History:
Slick Google Map 1.0 is a rewrite of the original plugin version 0.3, which was itself a fork of the Comprehensive Google Map Plugin by Alexander Zagniotov (2011–2014). Version 1.0.0 is a complete rewrite for WordPress 6.4+ and PHP 8.1+ — see the “Parity & rewrite” section below for what changed.
Insert a map via the Slick Google Map Gutenberg block, the Slick Map media button in the Classic Editor, or the [slick_map] shortcode. Optionally aggregate posts/pages that have lat/lng custom fields onto a single map (“geo-mashup”), and overlay a KML or GPX file.
[slick_map lat="48.2082" lng="16.3738" zoom="13" height="400px" provider="leaflet"]
Geo-mashup of posts and pages:
[slick_map mashup="post,page"]
KML or GPX overlay:
[slick_map kml="https://example.com/track.kml"]
[slick_map provider="leaflet" gpx="https://example.com/hike.gpx"]
KML works with both providers; GPX requires the Leaflet provider (Google’s Maps JS API does not natively render GPX).
Markers with addresses and custom icons (nested [marker] children):
[slick_map zoom="6"]
[marker address="Vienna, Austria" title="Home"]
[marker lat="52.5" lng="13.4" title="Berlin" icon="https://example.com/star.png"]
[/slick_map]
Each [marker] accepts address (geocoded once and cached) or explicit lat/lng, plus optional title and icon.
The icon attribute accepts either an https://… URL pointing to your own image, or one of the bundled short names: default, restaurant, lodging, cafe, bar, museum, airport, rail, shop, camera, mountain, castle, religious. Legacy filenames from the 2014-era plugin (1-default.png, museum_naval.png, hotel_0star.png, …) are auto-aliased to the nearest modern equivalent.
For geo-mashup markers, set a marker_icon custom field on each post to override the default pin for just that post.
Toggle Google’s built-in UI: zoomcontrol, maptypecontrol, streetviewcontrol, scrollwheel, draggable (all default true).
Google-only overlays: showbike="true", showtraffic="true".
45° aerial tilt: tilt="45". Only takes visible effect on a Google vector Map ID, or in satellite/hybrid view over cities where Google has 45° imagery. Ignored elsewhere.
Custom Google map styles JSON: styles='[{"featureType":"poi","stylers":[{"visibility":"off"}]}]' (ignored when a Map ID is configured — cloud styling takes precedence).
Marker lat / lng values accept either decimal (48.2082) or DMS form (48°12'29.5"N).
Marker titles support [[https://example.com|Display text]] to embed real links, or [[Plain Page]] for unlinked highlighted text.
When a Google Maps API key is configured the plugin uses the Google Geocoding API (same Cloud project as Maps; enable Geocoding API alongside Maps JavaScript). Otherwise it falls back to Nominatim/OpenStreetMap. Results are cached in a 30-day transient per address, so each unique address is geocoded at most once.
Using the Google provider loads scripts and tiles from maps.googleapis.com. Using the Leaflet/OSM provider loads tiles from tile.openstreetmap.org and the Leaflet library from unpkg.com. Choose the provider that matches your site’s privacy posture.
Version 1.0.0 is a complete rewrite of the 2015 codebase. The old plugin’s PHP and JavaScript were written against WordPress 3.6 and PHP 5, used the long-retired Google JSAPI loader, geocoded addresses on every page view, shipped 300+ marker PNGs of mixed provenance, and had several unauthenticated AJAX write paths in wp-admin. Re-issuing it as-is on a modern stack was not viable, so the codebase was rewritten from scratch around the same shortcode vocabulary.
What you keep. Posts written against the very old [google-map-v3 ...] shortcode still render. The plugin registers google-map-v3 as a back-compatibility alias that maps the still-useful attributes (width, height, zoom, kml, maptype, addmarkermashup, addmarkerlist, maptypecontrol, zoomcontrol, streetviewcontrol, scrollwheel, draggable, showbike, showtraffic, tiltfourtyfive, styles) onto the new renderer. The Google provider is selected by default for these legacy shortcodes, the old addmarkerlist="addr{}icon{}desc|..." packed format is parsed transparently, and the most-used legacy icon filenames (1-default.png, museum_naval.png, hotel_0star.png, …) are aliased to the bundled modern SVG set.
What’s gone for good. Some features can’t come back because the upstream services or APIs disappeared:
panoramio — Google shut Panoramio down in November 2016.pancontrol — Google removed panControl from the Maps API in 2017; there is no flag to set anymore.google.maps.KmlLayer — deprecated April 2026; replaced internally with a fetch + KMLGeoJSON renderer.https://www.google.com/jsapi loader — retired by Google in 2017; the modern loader requires a user-supplied API key.What’s not yet back. Marker clustering, directions/routing, geolocation marker, and marker drop/bounce animations are reachable from the rewrite but not yet wired up. See PARITY.md on GitHub for the full, categorised list (restored / new / missing-but-doable / deprecated-by-upstream / deliberately-dropped) plus a migration cheat-sheet.
What was dropped on purpose. The sidebar widget (Classic Widgets is in long-term legacy mode), the saved-shortcodes admin library (it was the largest single security surface in the old plugin), and the 300+ marker PNG library (replaced with 13 modern SVGs plus a legacy-filename alias map) — see PARITY.md for the rationale on each.