WP Places Map releasesself-updates
Interactive Google Map plugin for WordPress — custom post type, CSV import, clustering, type filters, GitHub auto-update.
by Aleš Pokora · github.com/ales-pokora/wp-places-map · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/ales-pokora/wp-places-map/releases/download/v1.0.23/wp-places-map.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Interactive Google Map of locations (clinics, hospitals, branches, offices, points of sale — anything) as a self-contained WordPress plugin.
- Custom post type Place + admin meta box (address, GPS, contact, hours).
- CSV bulk import with Google Geocoding fallback for rows missing coordinates.
[wp_places_map]shortcode — drop into Divi, Gutenberg, classic editor or theme template.- Custom-styled markers, marker clustering, type filters, info window with contact details and one-tap "Navigate".
- Public read-only REST API at
/wp-json/wp-places-map/v1/facilities. - GitHub auto-update — WP Admin → Plugins shows update notification, one-click install. No third-party update plugin required.
- Fully localised in Czech.
Install
- Download the latest
wp-places-map.zipfrom Releases. - WP Admin → Plugins → Add New → Upload Plugin → choose the ZIP → activate.
- Settings → Places Map → paste a Google Maps API key (Maps JavaScript API + Geocoding API enabled).
- Add places one-by-one or via Places Map → CSV Import.
- Insert
[wp_places_map]on any page.
Shortcode
[wp_places_map]
[wp_places_map height="600" zoom="7" filters="yes" cluster="yes"]
[wp_places_map type="nemocnice"]
| Attribute | Default | Description |
|---|---|---|
height |
600 |
Map height in px. |
zoom |
7 |
Initial zoom (overridden if markers fit bounds). |
lat, lng |
from settings | Initial centre. |
type |
– | Render only places with this taxonomy term slug. |
filters |
yes |
Show type filter pills above the map. |
cluster |
yes |
Cluster overlapping markers when zoomed out. |
class |
– | Extra CSS class on the wrapper. |
Feeding the map from another post type
By default the map reads the plugin's own wppm_place CPT. When a site already
has its locations in a post type of its own, five filters let the map read that
instead, so the data doesn't have to live in two places:
| Filter | Signature | Purpose |
|---|---|---|
wppm_facilities_query_args |
($args, $type) |
Point WP_Query at another post type. |
wppm_facility |
($row, $post) |
Build one place yourself. Return an array to use it, null to fall through. Runs before the GPS check, so you can supply coordinates from your own meta keys. |
wppm_facilities |
($out, $type) |
Last look at the whole collection before caching. |
wppm_cache_post_types |
($types) |
Post types whose saves bust the places cache. |
wppm_filter_terms |
($terms, $atts) |
Supply the type pills; a foreign source has no terms in wppm_place_type. |
A place row needs at minimum id, title, lat, lng. Rows without usable
coordinates are dropped. Optional keys: type, type_label, address, city,
zip, phone, email, website, hours, description, image.
add_filter( 'wppm_facilities_query_args', function ( $args ) {
$args['post_type'] = 'my_clinic';
unset( $args['tax_query'] );
return $args;
} );
add_filter( 'wppm_facility', function ( $row, $post ) {
if ( $post->post_type !== 'my_clinic' ) {
return $row;
}
return [
'id' => $post->ID,
'title' => get_the_title( $post ),
'lat' => get_post_meta( $post->ID, '_my_lat', true ),
'lng' => get_post_meta( $post->ID, '_my_lng', true ),
'address' => get_post_meta( $post->ID, '_my_address', true ),
'website' => get_permalink( $post ),
];
}, 10, 2 );
add_filter( 'wppm_cache_post_types', fn( $t ) => array_merge( $t, [ 'my_clinic' ] ) );
Release workflow
# Bump "Version:" in wp-places-map.php and "Stable tag:" in readme.txt, commit.
git tag v1.0.1
git push --tags
# Build a clean ZIP (only tracked files, top-level folder matches plugin slug):
git archive --format=zip --prefix=wp-places-map/ -o wp-places-map.zip HEAD
# Attach to a GitHub release — PUC prefers release assets over auto-generated source tarballs:
gh release create v1.0.1 wp-places-map.zip --generate-notes
Sites running the plugin pick up the new version within 12 hours (or instantly via Dashboard → Updates → Check again).
Auto-update internals
Plugin bundles YahnisElsts/plugin-update-checker v5.6 under lib/. On every check it queries the GitHub Releases API for newer tags, prefers ZIP assets whose filename matches /wp-places-map.*\.zip/i, and falls back to the source tarball when no asset is attached.
For private repositories or to raise the API rate limit, supply a Personal Access Token (scope repo):
- Via UI: Settings → Places Map → "GitHub token".
- Via wp-config.php (preferred for production):
define( 'WPPM_GITHUB_TOKEN', 'ghp_xxxxxxxxxxxx' );
License
GPL-2.0-or-later. Vendored plugin-update-checker is MIT (lib/plugin-update-checker/license.txt).
Releases
24 releases. Each count is every asset in that release; expand a row for the breakdown.