Waymark

Plugin Banner

Waymark

by morehawes

Download
Description

  • Overlays – Create Markers, Lines and Shapes with a:
    • Title
    • Image (Media Library or link to external image)
    • Description (Rich text editor, HTML supported)
    • Type (defined in Settings)
  • Import
    • GPX
    • KML
    • GeoJSON
    • EXIF (Image location metadata)
    • Elevation data (adds an interactive profile chart for Lines with elevation data)
  • Meta – Add extra information to your Maps; these are customisable form inputs that allow you to add additional content to your Maps.
  • Types – Set options to visually distinguish between Overlays (colours/icons etc.), then select it when using the Editor.
  • Collections – Group Maps together and display multiple Maps at once. Create complex Collection hierarchies to suit your needs and associate Maps with multiple Collections.
  • Submissions – Allow registered users, or guests to create Maps from the front-end of your site. You can control who can Submit Maps, what editor features are available and whether submissions should be approved before they are published.

🌟 GitHub
πŸ‘ WordPress
πŸ“– Demo & Help

Displaying Maps

Embed your Maps using the [Waymark] Shortcode, or link to the Map Details page.

  • Shortcodes
    • Display a single Map, or a Collection of Maps anywhere that Shortcodes are supported.
    • An optional Shortcode Header displays the Map/Collection title, a link to the Map Details page and any Meta.
    • Display a Marker defined through the Shortcode.
    • Display a Basemap only, without any Overlays by providing centre and zoom parameters.
  • Basemaps – Uses OpenStreetMap by default, with support for multiple raster tiled/”slippy” Basemaps. You can switch Basemaps using the Overlay Filter.
  • Overlay Filter – Allow the user to filter which Overlays are currently visible on the Map.
  • Export
    • (Optionally) Let anyone Export Maps into GPX, KML and GeoJSON formats through the Shortcode Header or on the Map Details page.
    • Works on mobile devices.

Customising

Built to be flexible, Waymark has lots of Settings and Types provide one place to control how Overlays (Markers/Lines/Shapes) are displayed.

Marker Icons can be provided as:
– Font Icons (Ionic Icons v2/Font Awesome v4)
– Simple Text, or Emojis (i.e. πŸ•οΈ, 🚩, πŸ“Έ).
– Custom HTML (good ol’ <img src="https://example.com/icon.svg">, or a more complex structure). So you can pretty much create any kind of Icon you want.

For developers:

  • Most elements can be styled using CSS and have sensibly named waymark- classes.
  • WordPress integration:
    • Maps are stored using the custom post type waymark_map.
    • Collections use the waymark_collection Taxonomy.
    • Embed Maps using the [Waymark] Shortcode anywhere they are supported, or dynamically using the do_shortcode(["Waymark"]) function.
  • Geographical data is stored in GeoJSON format. Types are specified using the type Property, i.e. {feature: { geometry: { type: 'Point', coordinates: [0, 0] } }, properties: { type: 'Alert', title: 'Bridge Removed!' }.
  • Specify which GeoJSON feature properties to store when importing (Settings > Overlays > Properties). These can be automatically appended to the Overlay Description, or accessed programmatically via the layer.feature.properties Object.
  • Maps are displayed using the Leaflet JavaScript library, which is bundled with Waymark and can be extended using the waymark_loaded_callback callback function.

User Examples

Development

Note: Docker, Node.js and NPM required.

# Clone the repository
git clone https://github.com/opengis/waymark-wp.git

# Navigate to the Waymark directory
cd waymark-wp

# Install the dependencies (or pnpm/yarn install)
npm install

# Start WordPress at http://localhost:8888 and rebuild assets on change
npm run dev

Help

The help site is a Nuxt 4 app in help/, built with @nuxt/content. Node 24.15 or newer is required.

cd help
npm ci
npm run sync-assets
npm run dev

The local preview runs at http://localhost:11003. To build the static site for GitHub Pages:

NUXT_APP_BASE_URL=/waymark-wp/ npm run generate

Assets

Styles and scripts are compiled from Less and JavaScript sources into the minified bundles enqueued by the plugin β€” edit the sources, not the build output:

  • assets/ β€” the plugin CSS (compiled from assets/less/) and JavaScript, served as the front and admin bundles.
  • waymark-js/ β€” the bundled Waymark JS library powering the Viewer and Editor: sources in src/ and libs/, built into dist/.

Translations

Waymark uses the waymark text domain, with the translation template at languages/waymark.pot.

  • JavaScript strings are mirrored in Waymark_Lang, the JavaScript language defaults and the documentation demo config, so update all three when adding or changing a string.
  • npm run i18n:check verifies that the PHP, JavaScript and documentation language defaults stay in parity, and that waymark_php_lang keys are both localised and read.
  • npm run grunt rebuilds the POT and compiled assets after source changes.
  • Stable Type and Meta keys are internal identifiers, not translated labels. They are used in Shortcodes and CSS and must not be translated.
  • Translations ship through WordPress.org language packs.

Testing

Three suites cover the plugin β€” JavaScript unit tests (Vitest), PHP integration tests (PHPUnit) and browser end-to-end tests (Playwright). The PHP and browser suites run against the disposable wp-env tests instance at http://localhost:8889; the development instance is never touched. The wp-env environment (npm run dev) must be running first.

# JavaScript unit tests (Vitest, jsdom) β€” Viewer, Editor and description sanitisation
npm run test:js

# PHP integration tests (PHPUnit against the WordPress test library)
npm run test:php

# Browser end-to-end tests (Playwright/Chromium) β€” login, Maps, Markers, responsive admin layout, front-end
npm run test:e2e

# Run all three in sequence
npm test

# One-off: prepare the tests container (after a fresh "wp-env destroy")
npm run test:php:setup

All three suites also run automatically in CI on pull requests and pushes to master.

wp-env pins PHP 8.3 to match the plugin’s declared floor. WP_ENV_PHP_VERSION and WP_ENV_CORE override the PHP and WordPress versions β€” useful for testing a release candidate or a newer PHP:

WP_ENV_PHP_VERSION=8.5 WP_ENV_CORE=WordPress/WordPress#trunk npm run test:php
npm run test:php:lint checks PHP syntax at the floor. CI exercises both boundaries β€” WordPress 6.4 with PHP 8.3, and current WordPress with PHP 8.5 β€” while the browser suite runs on current WordPress only.
  1. Add Overlays (Markers, Lines and Shapes) to create detailed interactive Maps. You can import/export from GPX/KML/GeoJSON.

    Add Overlays (Markers, Lines and Shapes) to create detailed interactive Maps. You can import/export from GPX/KML/GeoJSON.

  2. Every Overlay can be given a title, image and description. Marker images can be displayed as a gallery.

    Every Overlay can be given a title, image and description. Marker images can be displayed as a gallery.

  3. Waymark features a clean, intuitive Editor for creating and editing your Maps. Overlays are customisable using Types, which allow you set styles once (colours/icons etc.), so you can simply select it when you are adding to the Map.

    Waymark features a clean, intuitive Editor for creating and editing your Maps. Overlays are customisable using Types, which allow you set styles once (colours/icons etc.), so you can simply select it when you are adding to the Map.

  4. If you have more than one Basemap, you can switch between them when viewing the Map. Overlays can be shown/hidden by Type.

    If you have more than one Basemap, you can switch between them when viewing the Map. Overlays can be shown/hidden by Type.

  5. Use Meta to provide extra information about your Maps. Meta inputs are customisable and can be grouped.

    Use Meta to provide extra information about your Maps. Meta inputs are customisable and can be grouped.

  6. The Map Details page displays an image gallery, elevation profile, export options, featured image and all Meta provided for the Map.

    The Map Details page displays an image gallery, elevation profile, export options, featured image and all Meta provided for the Map.

  7. Add Maps to your content using the Waymark Shortcode. You can choose which Meta is displayed.

    Add Maps to your content using the Waymark Shortcode. You can choose which Meta is displayed.

  8. Organise Maps with Collections and display multiple Maps at once using the Shortcode. Collections can be nested and Maps can be associated with multiple Collections.

    Organise Maps with Collections and display multiple Maps at once using the Shortcode. Collections can be nested and Maps can be associated with multiple Collections.

  9. Basemaps β€” Add, reorder and configure raster basemaps.

    Basemaps β€” Add, reorder and configure raster basemaps.

  10. Shortcodes β€” Control the Shortcode header and admin preview.

    Shortcodes β€” Control the Shortcode header and admin preview.

  11. Elevation β€” Configure the elevation profile, units, colours and initial visibility.

    Elevation β€” Configure the elevation profile, units, colours and initial visibility.

  12. Meta β€” Create custom Meta inputs and organise them into groups.

    Meta β€” Create custom Meta inputs and organise them into groups.

  13. Sleep β€” Set the scroll-zoom wake delay and message.

    Sleep β€” Set the scroll-zoom wake delay and message.

  14. Clustering β€” Group nearby Markers and tune the cluster threshold and radius.

    Clustering β€” Group nearby Markers and tune the cluster threshold and radius.

  15. Misc. β€” Configure map height, zoom, gallery, filter and export behaviour.

    Misc. β€” Configure map height, zoom, gallery, filter and export behaviour.

  16. Markers β€” Define Marker Types: label, shape, size, colour, icon and visibility.

    Markers β€” Define Marker Types: label, shape, size, colour, icon and visibility.

  17. Lines β€” Define Line Types: colour, weight, opacity and visibility.

    Lines β€” Define Line Types: colour, weight, opacity and visibility.

  18. Shapes β€” Define Shape Types: colour, fill opacity and visibility.

    Shapes β€” Define Shape Types: colour, fill opacity and visibility.

  19. Properties β€” Choose which GeoJSON feature properties are imported and shown.

    Properties β€” Choose which GeoJSON feature properties are imported and shown.

  20. Submissions β€” Control front-end submissions by role and for guests.

    Submissions β€” Control front-end submissions by role and for guests.

  21. Advanced β€” Configure editor, collection, permalink, post type and debug options.

    Advanced β€” Configure editor, collection, permalink, post type and debug options.

Can I Get More Help?

Yes, please view the Help.

How Can I Contribute?

If you have anything bad to say, please create an issue before leaving a review, this is how the plugin gets better!

Does Waymark Support Google Maps?

Yes! While the Google Maps API is not used, Google Basemaps can be added to Waymark as raster tiles.

Can I Translate the Plugin?

Please! Waymark is localization ready, translation contributions are greatly appreciated.

Wonderful, Works, Support is great

By (CCRussell) on October 5, 2026

I’ve used several different map display plugins, and this is the one that I’ve settled on for my website. It provides all the features that I need, it works efficiently, it displays information in an attractive and interactive manner. The few times that there have come across some minor formatting issues, the author has answered my questions very quickly, and resolved the problems promptly. I rely on this plugin. It works!

My favorite mapping plugin

By jhmnieuwenhuis on April 19, 2026

This is by far the best mapping plugin i have seen. I was using QGIS only to create maps for my wordpress site. But this plugin does an excellent job and is integrated in wordpress.
I started sponsoring this plugin. I hope more people will do that, it is worth it !
You can support it with a one time amount or a monthly amount. Just a few dollars will help.

Another example of how great WordPress and open source is

By purbeckpixels on November 11, 2025

Was asked if I could add routes and maps to an existing website I made. Thought I’d have to code it from scratch but came across this brilliant plugin which pretty much covered all the functionality I required. Thank you Joe for a great plugin.

So happy that I found this!

By SmaRts on October 4, 2025

As a hiker with a website I was looking for a working plugin like this for a long time. I am so happy that I found this. It’s easy to use, the output is just what I needed to display and share my hikes. Thank you, Joe!

Very good plugin

By Sjaak (svweb) on May 12, 2025

The plugin works great and the support is fast and helpful!

Great plugin

By davidmx1 on January 23, 2025

I was searching for such plugin for some time. Great work, I am going to use it for my hiking trips! Thanks a lot also for immediate support!

Great plugin

By Igor (iggys) on December 7, 2024

Very easy way to create ritch maps with lots of info. Very usefull for any hiking, traveling, trekking, backpackcing, running… web site / blog or for any site that needs simple and powerfull way to add maps with information.

Great job !

By jiem31 on November 2, 2024

Hi Joe,

Thanks so much for that amazing plugin : it’s exactly what I needed. I can almost not believe this is open source.

Thumbs up and warmest regards from France,
Jack

Plugin gΓ©nial et simple Γ  utiliser

By monoeilcom on October 2, 2024

Sans aucun doute le meilleur plugin pour afficher une carte avec tracΓ©s GPX et pour y joindre le profile altimΓ©trique. Merci !

This plugin makes me so happy!

By wlown on August 13, 2024

I can stop using a crazy combination of google maps and other hacks and rely on this excellent maps and routes plug-in. So easy to use with WordPress and includes features I haven’t been able to find until now. THANKS!

1.8.1

  • Help: renamed the admin Documentation links to Help.
  • Help: refreshed the guides, examples and live map demos, removing legacy placeholder content.

1.8.0

  • Feature: Waymark is now fully translatable, with locale-aware number, coordinate and place formatting and right-to-left layout support.
  • Fix: Settings labels and controls are compact and consistently aligned; help icons sit beside their fields.
  • Fix: Marker icon helper links no longer overlap the Icon Name input.
  • Developer: add an i18n key/value parity check and stable type, meta and group keys with legacy aliases.
  • Translators: many translation keys changed; existing translations should be reviewed.

1.7.2

  • Fix “Array to string conversion” warnings when repeatable Settings values are incomplete.
  • Fix Settings rows losing a value when a repeatable column has fewer entries than the other columns.

1.7.1

  • Documentation: record the 1.7.0 changes in this changelog.

1.7.0

  • Security: Waymark now requires PHP 8.3 and WordPress 6.4.
  • Fix fatal errors when attachment metadata, GeoJSON or Collection data is malformed.
  • Fix PHP 8.1+ deprecation notices when optional values are empty or missing.
  • Development: test against the PHP 8.3 / WordPress 6.4 floor as well as current releases.

View changes on GitHub Β»