Plugin Directory

Test out the new Plugin Directory and let us know what you think.

WP Store Locator

An easy to use location management system that enables users to search for nearby physical stores.

2.2.7, December 31, 2016

  • Changed: Included the latest version of the EDD_SL_Plugin_Updater class ( 1.6.8 ).
  • Changed: Reverted a change in the CSS file that ended up breaking the map for some users.

2.2.6, December 24, 2016

  • Fixed: The opening hours not working correctly for Saturday / Sunday in the admin area. The 12:00 AM field was missing.
  • Fixed: A PHP notice showing up when an invalid value was set for the radius / max results dropdown.
  • Fixed: The zoom attribute now works correctly for the wpsl_map shortcode.
  • Changed: Included the latest version of the EDD_SL_Plugin_Updater class ( 1.6.7 ).
  • Changed: Removed unused locationCount var from wpsl-gmap.js.
  • Changed: Added a CSS rule that makes it harder for themes to scaled images on the map.

2.2.5, December 11, 2016

  • Fixed: Made it work with the latest WPML version.
  • Fixed: Remove the WPSL caps and Store Locator Manager role on uninstall. The code was always there to do so, but was never called.
  • Fixed: A PHP notice that showed up when the settings page was saved with an empty start location field.
  • Changed: Adjusted the structure of the post type labels so you can correctly translate them in singular / plural forms based on the used language. Via deshack.
  • Changed: Added a tooltip to the 'Attempt to auto-locate the user' field explaining that HTTPS is now required in Chrome and Safari.
  • Changed: The coordinates from the start location are now used to center the map in the map section on the settings page instead of it always defaulting to Holland.
  • Changed: Renamed the existing option that prevents two Google Maps libraries from loading at the same time to "Enable compatibility mode" on the settings page ( Tools section ).
  • Changed: Updated the wpsl.pot file.
  • Changed: No longer use the deprecated icl_object_id() function when the WPML version is newer then 3.2.

2.2.4, Augustus 6, 2016

  • New: Added an option to the tools section to prevent other scripts from including the Google Maps API a second time on the store locator page. This sometimes breaks the map.
  • Fixed: Assigned the correct country code to Martinique on the settings page.
  • Fixed: The code that calls wp_editor now includes a random ID after 'wpsleditor' to make sure you can use it multiple times on the same page.
  • Fixed: The inline qTranslate X syntax ( [:en]English Text[:de]Deutsch[:] ) now works for the label fields.
  • Fixed: Added a workaround for this bug with the Geolocation API in Firefox.
  • Changed: Automatically adjust the language Google Maps uses when WMPL or qTranslate X is active.
  • Changed: Improved the handling of error codes returned by the Google Geocode API.
  • Changed: Removed the '_' prefix from the returned language code in check_multilingual_code().
  • Changed: Updated the wpsl.pot file.

2.2.3, June 27, 2016

  • Fixed: Included the browser key in requests made to the Google Maps JavaScript API in the admin area. This is now required.
  • Changed: Include the language code in the AJAX request if WPML is active.
  • New: Spanish translations (es_ES). Via Jaime Smeke.
  • New: Added support for the upcoming statistics add-on.

2.2.2, May 18, 2016

  • Fixed: Corrected the path for the cluster marker images.

2.2.1, March 24, 2016

  • Fixed: A JS bug that sometimes resulted in duplicate results showing up in the search results.

2.2, March 20, 2016

  • New: The option to show the categories with checkboxes instead of a dropdown.
  • Note: If you're showing the categories with checkboxes, then you can change the amount of used columns by setting the "checkbox_columns" ( between 1 and 4 ) on the [wpsl] shortcode.
  • New: A wpsl_no_results filter that allows you to create a custom HTML block that replaces the 'No results found' text.
  • New: The option to enable autocomplete for location searches.
  • Note: Read this if you're using a custom template and want to use the autocomplete option.
  • New: A wpsl_enable_styled_dropdowns filter that allows you to disable the current JS styling for all the dropdowns.
  • New: You can now change the "Any" text used in the category dropdown in the labels section on the settings page.
  • New: The option to hide the country name in the search results / marker pop-up.
  • New: The option to show the contact details below the address.
  • New: A wpsl_hide_closed_hours filter that enables you to hide the days that the location is closed from the opening hours list.
  • New: Values from custom dropdowns that have a "wpsl-custom-dropdown" class set are automatically included in the AJAX data.
  • New: Added a Add-Ons page to the "Store Locator" menu.
  • New: A wpsl_map_tab_anchor_return filter that allows you to choose between return true or false if the tab anchor is clicked.
  • New: Added the "aria-required" attribute to the search field.
  • Changed: The category dropdown is now created with wp_dropdown_categories and correctly indents sub categories.
  • Changed: If a search returns no results, then the map will now focus on the searched location instead of only showing the "No results found" msg.
  • Changed: Instead of a single "API key" field there are now separate server and browser key fields. If an API key existed, then it's assumed to be a server key.
  • Changed: A scrollbar is shown inside the styled dropdown filters if they are heigher then 300px. You can change the maximum height with the wpsl_max_dropdown_height filter.
  • Changed: Removed the text wrap on the category filter items. If a category name is too long, then it will now go over two lines instead of being cut off.
  • Changed: Updated the wpml-config.xml and wpsl.pot.
  • Changed: If the autocomplete for the start location on the settings page fails ( JS error ), then the set start location is geocoded in the background when the settings are saved.
  • Changed: A single JS function now handles all the conditional options on the settings page instead of several smaller ones.
  • Changed: The "zoom_name" and "zoom_latlng" setting is renamed to "start_name" and "start_latlng".
  • Changed: Renamed the "category_dropdown" setting to "category_filter" to better reflect the value that it holds ( either checkbox or dropdown ). So if you're using a custom template, then make sure to change "category_dropdown" to "category_filter" in your code.
  • Fixed: If you click on one of the styled dropdowns when it's already open, then it will now close.

2.1.2, March 4, 2016

  • Fixed: Invalid HTML in the category dropdown.
  • Fixed: Clicking on the marker on a single store / [wpsl_map] page triggered a JS error if the location permalinks are enabled.
  • Fixed: The wpsl_map_tab_anchor filter not working with the [wpsl_map] shortcode.
  • Fixed: Compatibility issue with Underscore 1.8.3.

2.1.1, January 13, 2016

  • New: Restrict the search results to one or more categories by using the "category" attribute on the [wpsl] shortcode.
  • New: A "start_location" attribute for the [wpsl] shortcode.
  • New: Included a link to the add-ons page in the plugin meta row.
  • New: Support for the "wp_editor" type with the wpsl_meta_box_fields filter, this will render the default WP Editor. Via Richard.
  • Changed: Moved the documentation link from the plugin actions row to the plugin meta row.
  • Changed: If you use the "category" attribute on the [wpsl_map] shortcode, then the store names in the marker info window will automatically link to the store page or custom url.

2.1.0, December 23, 2015

  • New: You can now use the "category" attribute ( use the category slugs as values ) on the [wpsl_map] shortcode to show locations that belong to one or more categories.
  • New: Support to load the marker images from a different folder.
  • New: A wpsl_marker_props filter that enables you to change the default "anchor", "scaledSize" and "origin" for the marker image.
  • New: A wpsl_geocode_components filter that enables you to restrict the returned geocode results by administrativeArea, country, locality, postalCode and route.
  • New: A wpsl_draggable filter that enables you to enable/disable the dragging of the map.
  • New: Support for the upcoming add-ons.
  • Note: Read this if you're using a custom template!
  • Changed: If you need to geocode the full address ( new store ), and a value for 'state' is provided it's now included in the geocode request.
  • Changed: If the Geocode API returns a REQUEST_DENIED status, then the returned error message is shown explaining why it failed.
  • Fixed: In rare cases the SQL query returned duplicate locations with the same post id. To prevent this from happening the results are now by default grouped by post id.

2.0.4, November 23, 2015

  • Fixed: HTML entity encoding issue in the marker tooltip, via momo-fr and js-enigma.
  • Fixed: Missing tooltip text for the start marker, and the info window for the start marker breaking when the Geolocation API successfully determined the users location.
  • Fixed: Multiple shortcode attributes ignoring the "false" value, via dynamitepets and drfoxg.
  • Changed: If a WPML compatible plugin is detected, a notice is shown above the label section explaining that the "String Translations" section in the used multilingual plugin should be used to change the labels.
  • Changed: Removed the "sensor" parameter from the Google Maps JavaScript API. It triggered a 'SensorNotRequired' warning.
  • Changed: Updated translation files.

2.0.3, October 27, 2015

  • Fixed: The default search radius is no longer ignored if the Geolocation API is used. Via xeyefex.
  • Changed: Replaced get_page ( deprecated ) with get_post.
  • Changed: Adjusted the position, and size of the reset map / current location icon to make them match with the new control styles introduced in v3.22 of the Google Maps API.
  • Changed: Made it harder for themes to overwrite the icon font that is used to show the reset map / current location icon.
  • Changed: Removed support for the map's pan control and zoom control style from the settings page and [wpsl_map] shortcode attributes. They are both deprecated in v3.22 of the Google Maps API.

2.0.2, September 19, 2015

  • Fixed: Not all users always seeing the notice to convert the 1.x locations to custom post types.
  • Fixed: Prevented empty search results from ending up in the autoload transient.
  • Fixed: The autoload transient not being cleared after changing the start location on the settings page.
  • Changed: Added extra CSS to make it harder for themes to turn the map completely grey, and set the default opening hours alignment to left.
  • Changed: If you use the store locator in a tab, then it no longer requires the tab anchor to be 'wpsl-map-tab'. You can use whatever you want with the 'wpsl_map_tab_anchor' filter.

2.0.1, September 10, 2015

  • Fixed: Prevented other plugins that use underscore or backbone from breaking the JavaScript templates, via fatman49 and zurf.
  • Fixed: Street view not showing the correct location after using it more then once, via marijke_25.

2.0, September 7, 2015

  • New: Moved away from a custom db table, the store locations are now registered as custom post types.
  • Note: The upgrade procedure will ask you to convert the current store locations to custom post types. This takes around 1 minute for every 1000 store locations.
  • New: The option to enable/disable permalinks for the stores, and set a custom slug from the settings page.
  • New: Three new shortcodes: [wpsl_map], [wpsl_hours] and [wpsl_address].
  • New: A template attribute for the wpsl shortcode, via Damien Carbery.
  • New: Supports WPML and qTranslate X.
  • New: A textarea on the settings page where you can paste JSON code to create a custom map style.
  • New: The option to hide the search radius dropdown on the frontend.
  • New: A wpsl_geolocation_timeout filter.
  • New: The option to choose between different address formats, and a filter to add custom ones.
  • New: The option to use the InfoBox library to style the info window.
  • New: The option to choose between two different effects when a user hovers over the result list.
  • New: Set the opening hours through dropdowns instead of a textarea.
  • New: Filters that make it possible to add custom store data, and change the HTML structure of the info window and store listing template.
  • New: The option to define a max location load if the auto loading of locations is enabled.
  • New: The option to enable/disable scroll wheel zooming and the map type control on the map.
  • New: Added 'Email' and 'Url' to the labels on the settings page.
  • New: Added a general settings and documentation link to the plugin action links.
  • New: The option to set a max auto zoom level to prevent the auto zoom from zooming to far.
  • New: The option to set a different map type for the location preview.
  • New: A check to see if the SCRIPT_DEBUG constant is set, if this is the case the full scripts are loaded, otherwise the minified scripts are used.
  • New: A wpsl_thumb_size filter that enables you to set the thumb size on the frontend without editing CSS files.
  • New: The option to hide the distance in the store listing.
  • New: Added JS code that prevents a grey map when the store locator is placed in a tab. This does require the use of a #wpsl-map-tab anchor.
  • New: Portuguese translation via Rúben Martins.
  • Changed: Better error handling for the Geolocation API.
  • Changed: Regardless of the selected template, the store map is always placed before the store list on smaller screens.
  • Changed: The wp-content/languages folder is checked for translations before using the translations in the plugin folder.
  • Changed: The 'reset map' button now uses an icon font, and is placed in right bottom corner together with a new 'current location' icon.
  • Changed: The cluster marker image will use HTTPS when available.
  • Changed: Increased the default Geolocation timeout from 3000 to 5000 ms.
  • Changed: The geocode requests to the Google Maps API will always use HTTPS.
  • Changed: Instead of curl or file_get_contents the Google Maps API request will now use wp_remote_get.
  • Changed: Replaced the 'wpsl_capability' filter with a 'Store Locator Manager' role.
  • Changed: Added an extra check in JS to prevent the search radius or max results value being set to NaN.
  • Changed: The wpsl_templates filter now expects an id field to be present in the array.
  • Changed: Renamed the 'wpsl_gmap_api_attributes' filter to wpsl_gmap_api_params.
  • Changed: Added the 'enableHighAccuracy' parameter to the Geolocation request to make it more accurate on mobile devices.
  • Fixed: An issue that prevented the settings page from saving the changes on servers that used the mod_security module.
  • Fixed: The pan control option not working on the frontend if it was enabled on the settings page.
  • Fixed: Prevented an empty comma from appearing in the direction URL if the zip code didn't exist.
  • Fixed: Modified the CSS to prevent themes hiding the map images.
  • Fixed: Dragging the store location marker in the store editor would sometimes return the incorrect coordinates.
  • Fixed: The 'Back' button appeared multiple times after the user clicked on the 'Directions' link from different info windows.
  • Fixed: The dropdown fields not being restored to the default values after the 'reset map' button was clicked.
  • Note: Requires at least WP 3.7 instead of WP 3.5.


  • Fixed: The store search breaking after the reset button was clicked, via Drew75
  • Fixed: Two PHP notices.


  • Fixed: Clicking the marker would no longer open the info window after a Google Maps API update. This only happened if street view was enabled.
  • Fixed: A fatal error on some installations caused by the usage of mysql_real_escape_string, it is replaced with esc_sql.
  • Fixed: A problem where some themes would just show "1" instead of the shortcode output.
  • Fixed: The "dismiss" link not working in the notice that reminds users to define a start point.
  • Fixed: A missing html tag that broken the store listing in IE7/8.
  • Changed: Replaced the non-GPL compatible dropdown script.


  • Fixed the geocoding request for the map preview on the add/edit page not including the zipcode when it's present, which can misplace the marker


  • Fixed compatibility issues with the Google Maps field in the Advanced Custom Fields plugin
  • Fixed the store urls in the store listings sometimes breaking
  • Removed the requirement for a zipcode on the add/edit store page
  • Improved the documentation in the js files


  • Fixed an js error breaking the store locator


  • Fixed the directions url sometimes showing an incomplete address due to an encoding issue
  • Fixed the 'items' count on the store overview page showing the incorrect number after deleting a store
  • Fixed the autocomplete for the 'start point' field sometimes not working on the settings page
  • Fixed php notices breaking the store search when wp_debug is set to true
  • Fixed the bulk actions when set to 'Bulk Actions' showing the full store list without paging
  • Fixed small css alignment issues in the admin area
  • Fixed the js script still trying to load store data when autoload was disabled
  • Fixed the clickable area around the marker being to big
  • Improved: After a user clicks on 'directions' and then clicks 'back', the map view is returned to the original location
  • Removed: the 'Preview location on the map' button no longer updates the zip code value it receives from the Google Maps API
  • Changed the way the dropdown filters are handled on mobile devices. They are now styled and behave according to the default UI of the device
  • Added support for WP Multisite
  • Added 'Screen Options' for the 'Current Stores' page, so you can define the amount of stores that are visible on a single page
  • Added the option to make phone numbers clickable on mobile devices by adding a link around them with 'tel:'
  • Added the option to make store names automatically clickable if the store url exists
  • Added the option to show a 'zoom here' and 'street view' (when available) into the infowindow
  • Added a second address field to the store fields
  • Added the option to enable marker clusters
  • Added the option to set a default country for the "Add Store" page
  • Added Dutch (nl_NL) translations
  • Added a .pot file to the languages folder for translators
  • Added error handling for the driving directions
  • Added several filters for developers: 'wpsl_templates' for loading a custom template from another directory 'wpsl_menu_position' for adjusting the position of the store locator menu in the admin panel 'wpsl_capability' to manually set the required user capability for adding/editing stores 'wpsl_gmap_api_attributes' to modify the Google maps parameters ( change the map language dynamically )


  • Fixed the store search not returning any results when the limit results dropdown is hidden


  • Added an option to choose where the 'More info' details is shown, either in the store listings or on the map
  • Added the 'back' and 'reset' text to the label fields on the settings page
  • Added the option to remove the scrollbar when the store listings are shown below the map
  • Improved the position of the reset button when the map controls are right aligned
  • Fixed the 'More info' translation not working
  • Fixed the start position marker disappearing when dragged


  • Fixed the distance format always using km when you click the 'directions' text in the marker
  • Fixed an issue where a CSS rule in some themes would place a background image on the active item in the dropdown list
  • Added an option to disable the mouse cursor on pageload focusing on the location input field
  • Added an option to add a 'More info' link to the store listings, which when clicked will open the info window in the marker on the map


  • Added an option to show the store listings below the map instead of next to it
  • Added an option to open the directions in a new window on maps.google.com itself
  • Fixed a 'too much recursion' js error that showed up when no start location was defined
  • Fixed the auto loading of stores not being ordered by distance
  • Fixed a problem with the input fields not always aligning in Chrome
  • Improved the handling of thumbnails. If the thumbnail format is disabled in the theme, it will look for the medium or full format instead
  • Several other small code improvements


  • Added the option to open a link in a new window
  • Added the option to show a reset button that will reset the map back to how it was on page load
  • Added the option to load all stores on page load
  • Fixed a problem with the shortcode output


  • Fixed the styling for the store locator dropdowns being applied site wide
  • Fixed a problem with slashes in store titles


  • Initial release

Requires: 3.7 or higher
Compatible up to: 4.7.3
Last Updated: 3 months ago
Active Installs: 20,000+


4.9 out of 5 stars


24 of 76 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

1 person says it works.
0 people say it's broken.

100,2,2 100,2,2
100,4,4 100,1,1
100,3,3 100,2,2 100,2,2 100,1,1
100,1,1 100,1,1 100,3,3 75,4,3 100,1,1
100,2,2 100,3,3
100,1,1 100,1,1
100,1,1 100,2,2 100,1,1 100,1,1
100,2,2 67,6,4
100,2,2 67,3,2 100,2,2
100,1,1 100,1,1 100,1,1 100,2,2