From 81234875be922748e16bc5bb21957f815aa3aa03 Mon Sep 17 00:00:00 2001 From: Erwin Nindl Date: Tue, 27 May 2025 22:00:23 +0200 Subject: [PATCH] Adds README and php plugin code --- README.md | 30 +++++++++++++++++ openfreemap.php | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 openfreemap.php diff --git a/README.md b/README.md index e69de29..06219a8 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,30 @@ +# WP OpenFreeMap - OpenFreeMap WordPress Plugin + +A [WordPress plugin](https://wordpress.org/plugins) that renders [OpenFreeMap](https://openfreemap.org) using [MapLibre GL](https://maplibre.org). + +## Installation +1. Upload the plugin to your `/wp-plugins/` directory +2. Activate the plugin through the 'Plugins' menu in WordPress +3. Go to "Settings > OpenFreemap" to configure the plugin + + +## Basic Usage +Once activated you can render [OpenFreeMap](https://openfreemap.org) map widgets using the shortcode +``` +[openfreemap [options...]] +``` +The options are as follows +- `lat` + Vertical center of the map (default: `47.1092664`) +- `lon` + Horizontal center of the map (default: `12.3453356`) +- `zoom` + Initial zoom of the map (default: `16.5`) +- `color` + Marker color in CSS notation (default: `#ff0000`) +- `height` + Height of the map widget in CSS notation (default: `450px`) + +## Links +- https://openfreemap.org +- https://maplibre.org diff --git a/openfreemap.php b/openfreemap.php new file mode 100644 index 0000000..e99a338 --- /dev/null +++ b/openfreemap.php @@ -0,0 +1,86 @@ + '47.1092664', + 'lon' => '12.3453356', + 'popup_text' => '', + 'color' => '#ff0000', + 'height' => '450px', + 'zoom' => '16.5' + ), $atts, 'openfreemap'); + + // Escape attributes for output + $lat = esc_js($atts['lat']); + $lon = esc_js($atts['lon']); + $popup_text = esc_js($atts['popup_text']); + $color = esc_js($atts['color']); + $height = esc_attr($atts['height']); + $zoom = esc_js($atts['zoom']); + + ob_start(); ?> +
+ + post_content, 'openfreemap')) { + add_action('wp_enqueue_scripts', 'openfreemap_enqueue_shortcode_assets'); + break; // Only need to enqueue once + } + } + + return $posts; +} +add_filter('the_posts', 'openfreemap_detect_shortcode'); + +// Enqueue scripts and styles only if shortcode is used +function openfreemap_enqueue_shortcode_assets() +{ + wp_enqueue_style('openfreemap-style', plugin_dir_url(__FILE__) . 'vendor/maplibre-gl/maplibre-gl.css'); + $load_in_footer = false; + wp_enqueue_script('openfreemap-script', plugin_dir_url(__FILE__) . 'vendor/maplibre-gl/maplibre-gl.js', array('jquery'), null, $load_in_footer); +} +add_action('wp_enqueue_scripts', 'openfreemap_enqueue_shortcode_assets');