About this plugin
GTL Maps is built for cycling and outdoor tourism websites that need to publish curated routes with detailed GPX data. The plugin registers a “Route” custom post type, handles GPX upload and parsing, and renders interactive Leaflet maps via shortcode or automatically above single route posts. It also provides a “Point of Interest” post type to highlight attractions around each route and exposes REST API endpoints for custom front-end integrations.
Key features:
- Upload GPX files and automatically compute distance, elevation gain/loss, and bounding boxes.
- Display interactive Leaflet maps with optional elevation profile and POI filtering.
- Maintain POI categories with custom icons and associate POIs with nearby routes.
- Provide REST API endpoints ( gtl/v1/routes and gtl/v1/pois ) so modern front-ends can consume the data.
- Includes Gutenberg/widget support via shortcodes and dedicated widgets for route details and POI lists.
Bug Fixes
- correct GTLMAPS_VERSION constant name in release workflows and sync gtl-maps.php to 0.2.1 ( #55 ) ( 971b9f6 )
- deploy pipeline ( 94839e6 )
Miscellaneous Chores
- update coverage badge [skip ci] ( f9b8d75 )
[0.2.2](https://github.com/hevelius/gtl-maps/compare/0.2.1…0.2.2) (2026-04-12)
Bug Fixes
- correct GTLMAPS_VERSION constant name in release workflows and sync gtl-maps.php to 0.2.1 ( #55 ) ( 971b9f6 )
- deploy pipeline ( 94839e6 )
Miscellaneous Chores
- update coverage badge [skip ci] ( f9b8d75 )
[0.1.0](https://github.com/hevelius/gtl-maps/compare/0.0.20…0.1.0) (2026-02-19)
Features
- add Astra theme for full-width demo page support ( fb54a97 )
- Add code coverage and fix failing tests ( #24 ) ( b281667 )
- add CODEOWNERS file for automatic review assignment ( #34 ) ( 24f782d )
- add custom icons for waypoints and POI categories ( cb8d418 )
- add specialized OpenCode sub-agents for WordPress development ( fe32f6c )
- Add specialized OpenCode sub-agents for WordPress development ( 7d88493 )
- add support for GPX waypoint visualization with default icons ( a07e063 )
- add wp-env development setup with sample data ( 638d48c )
- Add wp-env development setup with sample data ( 61e50ab )
- enhance demo page with comprehensive shortcode examples ( bd94581 )
- enhance release workflow with security and validation ( #21 ) ( 6562480 )
- replace sample GPX routes with real Rome cycling routes ( 470ae23 )
- replace sample routes with Italian inter-city routes ( 3634d1b )
Bug Fixes
- add expression syntax to validate-release condition ( d2ffa3e )
- add missing period and remove trailing whitespace ( e5bbd07 )
- add retry mechanism and test instance check in wp-env workflow ( 1692ea1 )
- add timeout to logs step to prevent hanging ( f7ba4e3 )
- add write permissions for coverage badge commit ( 04a15aa )
- auto-activate plugin in CI if not already active ( 5844092 )
- auto-create.htaccess file for wp-env permalink support ( 273eb6c )
- category shows only related poi ( 3eb51d9 )
- configure make-pot workflow for pull requests ( cd2583f )
- correct POI JSON structure to match import script ( ca4cbdc )
- escape string ( 368a1fa )
- HEREDOC exit code issue in setup script ( 6322862 )
- improve POI association and shortcode escaping ( ee7b388 )
- improve route ID extraction with better error handling ( dc7ef68 )
- linter and test errors ( db884d1 )
- mobile scroll point ( 432ba04 )
- POI filter panel title and button visibility across themes ( d6d9458 )
- remove conflicting mappings from wp-env config ( 9d7c71b )
- remove invalid conditional check in POI relink script ( 679544e )
- remove waypoints from GPX files to prevent map marker clutter ( b638507 )
- replace JPEG-as-PNG screenshots with true PNG files ( #35 ) ( a5b091b )
- resolve workflow errors ( 113f45e )
- set failOnWarning=false to prevent CI failure on deprecations ( 271b88a )
- simplify validate-release workflow condition ( 8326112 )
- skip POT PR creation on pull request events ( 7fd1d9c )
- specify correct coverage report filename ( 17b699e )
- update WordPress deploy action to use correct 10up action ( 5ee6cee )
- use correct meta key for GPX attachment ID ( 3502e08 )
- use correct parameter format for wp-cli command ( a0e4aa1 )
- use dynamic route IDs in demo page content ( 78462e7 )
- use L.Icon object for waypoint markers instead of icon URLs ( a176582 )
- use PHP-compatible coverage badge generator ( 207e2d4 )
- use pre-installed wp-cli instead of manual download ( d890eaa )
- validate-release workflow condition on line 16 ( b0d6249 )
- waypoint popup and POI icon assignment in wp-env ( 6498590 )
- workflows: use multiline format for validate-release if condition ( 18f5d39 )
Miscellaneous Chores
- add.wordpress.org to.gitignore to prevent tracking sensitive files ( 33eb9eb )
- add collapsed poi panel ( 610afa0 )
- add core poi relink function ( 17bcbec )
- add helper scripts for POI icon testing and debugging ( edc0461 )
- deps: bump actions/checkout from 4 to 6 ( #30 ) ( ace2ced )
- deps: bump actions/upload-artifact from 4 to 6 ( #29 ) ( 33e00b5 )
- deps: bump peter-evans/create-pull-request from 6 to 8 ( #28 ) ( a56998c )
- increase words trim ( 000df0c )
- initial commit ( 9073aa3 )
- main: release 0.0.10 ( #10 ) ( 2ddcd33 )
- main: release 0.0.11 ( #11 ) ( aec277d )
- main: release 0.0.12 ( #12 ) ( d3ab487 )
- main: release 0.0.13 ( #13 ) ( 429e7dd )
- main: release 0.0.14 ( #14 ) ( 8ef14d2 )
- main: release 0.0.15 ( #15 ) ( d1550b0 )
- main: release 0.0.16 ( #16 ) ( 58dcbed )
- main: release 0.0.17 ( #17 ) ( 6407e26 )
- main: release 0.0.18 ( #18 ) ( 7aa9a44 )
- main: release 0.0.19 ( #19 ) ( 8dfd7f9 )
- main: release 0.0.20 ( #20 ) ( 79e1da1 )
- main: release 0.0.4 ( #4 ) ( 1fec03f )
- main: release 0.0.5 ( #5 ) ( f2c7a0b )
- main: release 0.0.6 ( #6 ) ( 32f9c3f )
- main: release 0.0.7 ( #7 ) ( ce7f2c7 )
- main: release 0.0.8 ( #8 ) ( 020b6c2 )
- main: release 0.0.9 ( #9 ) ( 92882a7 )
- move footer in body card ( 440e493 )
- new behaviour sidecard ( 682b120 )
- pipeline update ( eecc42e )
- prepare plugin for WordPress.org directory submission ( #36 ) ( a1d639d )
- remove author metadata from sample GPX files ( 51852de )
- remove unused comment ( dea7ebe )
- trigger new release ( 74f4de8 )
- trigger relase ( e193663 )
- trigger release please ( de8219b )
- update ( e4ae6a2 )
- update ( 3becff4 )
- update ( 3138eed )
- update ( cd01092 )
- update ( be31b75 )
- update ( 82f0c1d )
- update ( 29aec77 )
- update ( dc820f2 )
- update ( 0b0ba7b )
- update ( 4d1a116 )
- update ( 14e041f )
- update ( 5e21407 )
- update ( 324fafb )
- update ( 35c73c8 )
- update ci ( e289307 )
- update coverage badge [skip ci] ( cbd31e1 )
- update maps url ( 7722dbf )
- update readme ( 29e7562 )
- update readme ( 69614e7 )
- update readme.txt ( 58ce69f )
- update strings ( 56a3912 )
- update strings items ( 45e7143 )
- update sync ( c16ea00 )
- update sync files ( 9b2f299 )
- update testing info ( a91d124 )
[0.1.0](https://github.com/hevelius/gtl-maps/compare/0.0.20…0.1.0) (2026-02-19)
Features
- add Astra theme for full-width demo page support ( fb54a97 )
- Add code coverage and fix failing tests ( #24 ) ( b281667 )
- add CODEOWNERS file for automatic review assignment ( #34 ) ( 24f782d )
- add custom icons for waypoints and POI categories ( cb8d418 )
- add specialized OpenCode sub-agents for WordPress development ( fe32f6c )
- Add specialized OpenCode sub-agents for WordPress development ( 7d88493 )
- add support for GPX waypoint visualization with default icons ( a07e063 )
- add wp-env development setup with sample data ( 638d48c )
- Add wp-env development setup with sample data ( 61e50ab )
- enhance demo page with comprehensive shortcode examples ( bd94581 )
- enhance release workflow with security and validation ( #21 ) ( 6562480 )
- replace sample GPX routes with real Rome cycling routes ( 470ae23 )
- replace sample routes with Italian inter-city routes ( 3634d1b )
Bug Fixes
- add expression syntax to validate-release condition ( d2ffa3e )
- add missing period and remove trailing whitespace ( e5bbd07 )
- add retry mechanism and test instance check in wp-env workflow ( 1692ea1 )
- add timeout to logs step to prevent hanging ( f7ba4e3 )
- add write permissions for coverage badge commit ( 04a15aa )
- auto-activate plugin in CI if not already active ( 5844092 )
- auto-create.htaccess file for wp-env permalink support ( 273eb6c )
- category shows only related poi ( 3eb51d9 )
- configure make-pot workflow for pull requests ( cd2583f )
- correct POI JSON structure to match import script ( ca4cbdc )
- escape string ( 368a1fa )
- HEREDOC exit code issue in setup script ( 6322862 )
- improve POI association and shortcode escaping ( ee7b388 )
- improve route ID extraction with better error handling ( dc7ef68 )
- linter and test errors ( db884d1 )
- mobile scroll point ( 432ba04 )
- POI filter panel title and button visibility across themes ( d6d9458 )
- remove conflicting mappings from wp-env config ( 9d7c71b )
- remove invalid conditional check in POI relink script ( 679544e )
- remove waypoints from GPX files to prevent map marker clutter ( b638507 )
- replace JPEG-as-PNG screenshots with true PNG files ( #35 ) ( a5b091b )
- resolve workflow errors ( 113f45e )
- set failOnWarning=false to prevent CI failure on deprecations ( 271b88a )
- simplify validate-release workflow condition ( 8326112 )
- skip POT PR creation on pull request events ( 7fd1d9c )
- specify correct coverage report filename ( 17b699e )
- update WordPress deploy action to use correct 10up action ( 5ee6cee )
- use correct meta key for GPX attachment ID ( 3502e08 )
- use correct parameter format for wp-cli command ( a0e4aa1 )
- use dynamic route IDs in demo page content ( 78462e7 )
- use L.Icon object for waypoint markers instead of icon URLs ( a176582 )
- use PHP-compatible coverage badge generator ( 207e2d4 )
- use pre-installed wp-cli instead of manual download ( d890eaa )
- validate-release workflow condition on line 16 ( b0d6249 )
- waypoint popup and POI icon assignment in wp-env ( 6498590 )
- workflows: use multiline format for validate-release if condition ( 18f5d39 )
Miscellaneous Chores
- add.wordpress.org to.gitignore to prevent tracking sensitive files ( 33eb9eb )
- add collapsed poi panel ( 610afa0 )
- add core poi relink function ( 17bcbec )
- add helper scripts for POI icon testing and debugging ( edc0461 )
- deps: bump actions/checkout from 4 to 6 ( #30 ) ( ace2ced )
- deps: bump actions/upload-artifact from 4 to 6 ( #29 ) ( 33e00b5 )
- deps: bump peter-evans/create-pull-request from 6 to 8 ( #28 ) ( a56998c )
- increase words trim ( 000df0c )
- initial commit ( 9073aa3 )
- main: release 0.0.10 ( #10 ) ( 2ddcd33 )
- main: release 0.0.11 ( #11 ) ( aec277d )
- main: release 0.0.12 ( #12 ) ( d3ab487 )
- main: release 0.0.13 ( #13 ) ( 429e7dd )
- main: release 0.0.14 ( #14 ) ( 8ef14d2 )
- main: release 0.0.15 ( #15 ) ( d1550b0 )
- main: release 0.0.16 ( #16 ) ( 58dcbed )
- main: release 0.0.17 ( #17 ) ( 6407e26 )
- main: release 0.0.18 ( #18 ) ( 7aa9a44 )
- main: release 0.0.19 ( #19 ) ( 8dfd7f9 )
- main: release 0.0.20 ( #20 ) ( 79e1da1 )
- main: release 0.0.4 ( #4 ) ( 1fec03f )
- main: release 0.0.5 ( #5 ) ( f2c7a0b )
- main: release 0.0.6 ( #6 ) ( 32f9c3f )
- main: release 0.0.7 ( #7 ) ( ce7f2c7 )
- main: release 0.0.8 ( #8 ) ( 020b6c2 )
- main: release 0.0.9 ( #9 ) ( 92882a7 )
- move footer in body card ( 440e493 )
- new behaviour sidecard ( 682b120 )
- pipeline update ( eecc42e )
- prepare plugin for WordPress.org directory submission ( #36 ) ( a1d639d )
- remove author metadata from sample GPX files ( 51852de )
- remove unused comment ( dea7ebe )
- trigger new release ( 74f4de8 )
- trigger relase ( e193663 )
- trigger release please ( de8219b )
- update ( e4ae6a2 )
- update ( 3becff4 )
- update ( 3138eed )
- update ( cd01092 )
- update ( be31b75 )
- update ( 82f0c1d )
- update ( 29aec77 )
- update ( dc820f2 )
- update ( 0b0ba7b )
- update ( 4d1a116 )
- update ( 14e041f )
- update ( 5e21407 )
- update ( 324fafb )
- update ( 35c73c8 )
- update ci ( e289307 )
- update coverage badge [skip ci] ( cbd31e1 )
- update maps url ( 7722dbf )
- update readme ( 29e7562 )
- update readme ( 69614e7 )
- update readme.txt ( 58ce69f )
- update strings ( 56a3912 )
- update strings items ( 45e7143 )
- update sync ( c16ea00 )
- update sync files ( 9b2f299 )
- update testing info ( a91d124 )
[0.0.20](https://github.com/hevelius/gtl-maps/compare/0.0.19…0.0.20) (2025-11-29)
Bug Fixes
- mobile scroll point ( af7a31c )
[0.0.19](https://github.com/hevelius/gtl-maps/compare/0.0.18…0.0.19) (2025-11-08)
Bug Fixes
- linter and test errors ( 76199de )
Miscellaneous Chores
- add core poi relink function ( 62b0807 )
[0.0.18](https://github.com/hevelius/gtl-maps/compare/0.0.17…0.0.18) (2025-11-08)
Miscellaneous Chores
- add collapsed poi panel ( 7223174 )
- increase words trim ( c494b41 )
- move footer in body card ( c580774 )
- new behaviour sidecard ( 7023e38 )
- remove unused comment ( 61b9ac0 )
- update strings ( 0fb3e10 )
[0.0.17](https://github.com/hevelius/gtl-maps/compare/0.0.16…0.0.17) (2025-11-06)
Bug Fixes
- escape string ( 6a1a764 )
Miscellaneous Chores
- update ( 1beeb9a )
- update maps url ( 86ca716 )
- update strings items ( 99a9b52 )
[0.0.16](https://github.com/hevelius/gtl-maps/compare/0.0.15…0.0.16) (2025-10-28)
Miscellaneous Chores
- pipeline update ( becbfeb )
[0.0.15](https://github.com/hevelius/gtl-maps/compare/0.0.14…0.0.15) (2025-10-28)
Miscellaneous Chores
- add screenshot ( d1badcb )
- update ( 91867dd )
- update ( b3ea610 )
- update sync ( 0cce6b9 )
[0.0.14](https://github.com/hevelius/gtl-maps/compare/0.0.13…0.0.14) (2025-10-28)
Miscellaneous Chores
- update ( 211ccaa )
- update ( f95fa43 )
- update readme ( 47d9894 )
Third-Party Libraries
This plugin includes the following open-source libraries:
-
com/
Interactive mapping library for displaying GPX routes and points of interest on dynamic, tile-based maps.
-
org/
JavaScript charting library for rendering elevation profile visualizations with interactive tooltips.
-
com/mpetazzoni/leaflet-gpx
Leaflet plugin for parsing and displaying GPX track files with waypoint markers.
All included libraries are GPL-compatible and bundled locally for optimal performance and reliability.