{"id":362351,"date":"2026-09-10T23:31:43","date_gmt":"2026-09-10T23:31:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/locfinder\/"},"modified":"2026-09-13T17:45:10","modified_gmt":"2026-09-13T17:45:10","slug":"locfinder","status":"publish","type":"plugin","link":"https:\/\/bg.wordpress.org\/plugins\/locfinder\/","author":23552403,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Location Finder","header_author":"Codexa","header_description":"Display locations on an interactive Google Map, with keyword, category, and radius \"near me\" search and results in a list or grid layout.","assets_banners_color":"fdfcfa","last_updated":"2026-09-13 17:45:10","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buy.stripe.com\/00wbJ3eAG6ePbaLbGQbEA00","header_plugin_uri":"https:\/\/codexalogic.com\/products\/locfinder","header_author_uri":"https:\/\/codexalogic.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":103,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"codexalogic","date":"2026-09-10 23:40:16","revision":3690610},"1.0.1":{"tag":"1.0.1","author":"codexalogic","date":"2026-09-13 17:45:10","revision":3694022}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3694029,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3694029,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3694029,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3694029,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3694029,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"locfinder\/locfinder-map":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"locfinder\/locfinder-map","title":"Location Finder Map","category":"widgets","icon":"location-alt","description":"A block that displays a Location Finder map with search functionality.","supports":{"html":false},"attributes":{"keywordSearch":{"type":"boolean","default":true},"addressSearch":{"type":"boolean","default":true},"radiusSearch":{"type":"boolean","default":true},"categorySearch":{"type":"boolean","default":true},"defaultRadius":{"type":"number","default":-1},"keywordPlaceholder":{"type":"string","default":""},"addressPlaceholder":{"type":"string","default":""},"searchButtonLabel":{"type":"string","default":""},"radiusLabel":{"type":"string","default":""},"categoryLabel":{"type":"string","default":""},"anyDistanceText":{"type":"string","default":""},"allCategoriesText":{"type":"string","default":""},"sortBy":{"type":"string","default":"default"},"resultsLayout":{"type":"string","default":"default"},"resultsPosition":{"type":"string","default":"default"},"gridCols":{"type":"number","default":3},"resultsColumns":{"type":"number","default":0},"postsPerPage":{"type":"number","default":0},"pinColor":{"type":"string","default":""},"showImage":{"type":"boolean","default":false},"showAddress":{"type":"boolean","default":true},"showDirections":{"type":"boolean","default":true},"showPhone":{"type":"boolean","default":true},"showEmail":{"type":"boolean","default":false},"showWebsite":{"type":"boolean","default":true},"showHours":{"type":"boolean","default":false},"showExcerpt":{"type":"boolean","default":false},"showOpenBadge":{"type":"boolean"},"showCategories":{"type":"boolean","default":true},"taxonomy":{"type":"string","default":""}},"textdomain":"locfinder","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css"},"locfinder\/location-details":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"locfinder\/location-details","title":"Location Details (Locfinder)","category":"widgets","icon":"location-alt","description":"Renders the address, hours, contact info, and categories for the current Location Finder location. Server-rendered; only meaningful inside the Single Location template.","supports":{"html":false,"multiple":false,"inserter":false},"textdomain":"locfinder","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css"}},"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3694029,"resolution":"1","location":"assets","locale":"","width":2752,"height":1886},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3694029,"resolution":"2","location":"assets","locale":"","width":2744,"height":1892},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3694029,"resolution":"3","location":"assets","locale":"","width":2756,"height":1838},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3694029,"resolution":"4","location":"assets","locale":"","width":2456,"height":1938},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3694029,"resolution":"5","location":"assets","locale":"","width":2782,"height":1702},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3694029,"resolution":"6","location":"assets","locale":"","width":2244,"height":1532},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3694029,"resolution":"7","location":"assets","locale":"","width":2636,"height":1348}},"screenshots":[]},"plugin_section":[],"plugin_tags":[2466,1571,351,2909,6102],"plugin_category":[49],"plugin_contributors":[280148],"plugin_business_model":[],"class_list":["post-362351","plugin","type-plugin","status-publish","hentry","plugin_tags-directory","plugin_tags-google-maps","plugin_tags-locations","plugin_tags-map","plugin_tags-store-locator","plugin_category-maps-and-location","plugin_contributors-codexalogic","plugin_committers-codexalogic"],"banners":{"banner":"https:\/\/ps.w.org\/locfinder\/assets\/banner-772x250.png?rev=3694029","banner_2x":"https:\/\/ps.w.org\/locfinder\/assets\/banner-1544x500.png?rev=3694029","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/locfinder\/assets\/icon.svg?rev=3694029","icon":"https:\/\/ps.w.org\/locfinder\/assets\/icon.svg?rev=3694029","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-1.png?rev=3694029","caption":""},{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-2.png?rev=3694029","caption":""},{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-3.png?rev=3694029","caption":""},{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-4.png?rev=3694029","caption":""},{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-5.png?rev=3694029","caption":""},{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-6.png?rev=3694029","caption":""},{"src":"https:\/\/ps.w.org\/locfinder\/assets\/screenshot-7.png?rev=3694029","caption":""}],"raw_content":"<!--section=description-->\n<p>Location Finder makes it easy to create and manage locations for any type of business or organization (stores, restaurants, offices, programs, nonprofits, etc.) and display them as pins on a dynamic Google Map. A Google Maps API key is optional; without one, it still works as a fully searchable directory using keyword and category filtering. Visitors get a fast, intuitive search with built-in keyword, category, and radius-based \"near me\" filtering. The Pro version adds filtering by any custom taxonomy, your own distance choices, and deeper control over map styling and pins.<\/p>\n\n<p>Full documentation and setup guide: <a href=\"https:\/\/codexalogic.com\/documentation\/getting-started-with-location-finder\/\">https:\/\/codexalogic.com\/documentation\/getting-started-with-location-finder\/<\/a><\/p>\n\n<h4>Highlights<\/h4>\n\n<ul>\n<li>Add locations via a friendly admin interface (Custom Post Type), with Google Places autocomplete for fast, accurate address entry.<\/li>\n<li>Display locations as pins on a Google Map, plus a dedicated page for each location with its own map.<\/li>\n<li>Works with or without a Google Maps API key \u2014 use it as a full interactive map locator, or skip the key and run it as a keyword\/category-searchable directory.<\/li>\n<li>Show address, phone (US and international formats), email, website, weekly hours, a \"Get Directions\" link, and categories for each location, each one individually shown or hidden.<\/li>\n<li>Built-in keyword search for quick filtering.<\/li>\n<li>Category filtering and radius-based \"near me\" search, with distance choices of 10, 25, 50, and 75.<\/li>\n<li>Choose a list or grid layout for search results.<\/li>\n<li>Use the Location Finder block or <code>[locfinder]<\/code> shortcode, both offer the same functionality and the same set of options.<\/li>\n<li>A ready-to-use Locations page is created automatically on activation, so the map works right away without building a page yourself. You can rename it, change its URL, or point the plugin at a different page in General Settings.<\/li>\n<li>Built with accessibility in mind: semantic markup, screen reader announcements for search results, and support for reduced motion.<\/li>\n<li>Email addresses are obfuscated in the page source to help deter automated spam harvesting, and are hidden by default until you choose to show them.<\/li>\n<li>Translation-ready (i18n).<\/li>\n<\/ul>\n\n<p>Pro features (optional upgrade):\n* Set your own distance choices for radius search, in place of the built-in 10, 25, 50, and 75.\n* Filter by any custom taxonomy you have registered for locations, beyond the built-in Categories.\n* Distance display on each result for geolocated or radius searches.\n* A custom HTML template for result cards, with dynamic tokens for every location field.\n* Custom map styling (JSON), custom pin icons, and per-category pin colors and icons.<\/p>\n\n<p>Use cases:\n* Store\/branch locator\n* Program and service directories\n* Office\/campus\/venue maps\n* Resource finders for nonprofits and municipalities<\/p>\n\n<h3>Shortcodes<\/h3>\n\n<p>Display the search form, map, and results:<\/p>\n\n<p>[locfinder]<\/p>\n\n<p>Every shortcode attribute is optional and falls back to your Location Finder settings when left out, so <code>[locfinder]<\/code> alone works right out of the box. Attributes let you override those settings for a single instance, including which search fields appear, sort order, results layout, and which location details are shown, for example:<\/p>\n\n<p>[locfinder show_hours=\"0\" grid_cols=\"2\"]<\/p>\n\n<p>The Location Finder block offers the same options directly in the block editor sidebar.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin uses the Google Maps JavaScript API to display an interactive map, geocode addresses, and power address autocomplete in the location editor. A Google Maps API key is required only for those features; without one, Location Finder still works as a searchable directory, using keyword and category search against your saved location data, with no connection to Google at all. Add your own Google Maps API key in the plugin settings whenever you want the map or address-lookup features.<\/p>\n\n<p>When a Google Maps API key is configured and a page containing a map is loaded, the plugin loads a script from https:\/\/maps.googleapis.com and sends the data needed to render that map and resolve address-based searches. This includes the location addresses and coordinates you have saved, any address a visitor types into the search field, and, only when a visitor uses the \"Use my location\" button and grants their browser's permission prompt, that visitor's coordinates (used to look up a readable address to show in the search field).<\/p>\n\n<p>No data is sent to Google unless a Google Maps API key is configured and either a map is displayed or an address-based search or lookup is performed. The plugin does not send data to codexalogic.com or to any service other than Google Maps.<\/p>\n\n<p>Google Maps Platform Terms of Service: https:\/\/cloud.google.com\/maps-platform\/terms\nGoogle Privacy Policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The full source code, including the unminified JavaScript and the build tooling used to generate the compiled assets in <code>build\/<\/code>, is publicly available at:\nhttps:\/\/github.com\/CodexaLogic\/locfinder<\/p>\n\n<p>To build the assets yourself: run <code>npm install<\/code> followed by <code>npm run build<\/code> (see <code>package.json<\/code> for the full script list).<\/p>\n\n<p>Third-party libraries bundled in <code>build\/<\/code>:<\/p>\n\n<ul>\n<li>@googlemaps\/markerclusterer, version 2.6.2, Apache-2.0 licensed. Source: https:\/\/github.com\/googlemaps\/js-markerclusterer<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>locfinder<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the Plugins menu in WordPress.<\/li>\n<li>Add your Google Maps API key in Location Finder &gt; General Settings, if you want to display an interactive map. This step is optional \u2014 the plugin works as a searchable directory without one.<\/li>\n<li>Add locations via Locations in the WordPress admin.<\/li>\n<li>Visit the Locations page created automatically on activation, or embed the map anywhere using the <code>[locfinder]<\/code> shortcode or the Location Finder block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20google%20maps%20api%20key%3F\"><h3>Do I need a Google Maps API key?<\/h3><\/dt>\n<dd><p>Only if you want to display the interactive map. Without one, Location Finder still works as a full-featured directory, with keyword and category search and results in a list or grid layout, just without the map itself. You can get a free API key from the Google Cloud Console any time you want to add it.<\/p><\/dd>\n<dt id=\"will%20this%20work%20for%20any%20kind%20of%20business%20or%20organization%3F\"><h3>Will this work for any kind of business or organization?<\/h3><\/dt>\n<dd><p>Yes. The Location post type works for shops, restaurants, offices, programs, and other businesses or organizations with an address or coordinates.<\/p><\/dd>\n<dt id=\"what%20information%20can%20i%20display%20for%20each%20location%3F\"><h3>What information can I display for each location?<\/h3><\/dt>\n<dd><p>Address, phone number, email, website, weekly hours, a \"Get Directions\" link, and categories. Each field can be shown or hidden independently, globally in settings or per shortcode\/block instance.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20international%20phone%20numbers%3F\"><h3>Does the plugin support international phone numbers?<\/h3><\/dt>\n<dd><p>Yes. Enter a US number as usual, or enter an international number with a leading + and country code (e.g. +44 20 7123 4567).<\/p><\/dd>\n<dt id=\"is%20my%20visitors%27%20privacy%20protected%20when%20i%20show%20an%20email%20address%3F\"><h3>Is my visitors' privacy protected when I show an email address?<\/h3><\/dt>\n<dd><p>Email addresses are encoded in the page's HTML source so they aren't easily collected by automated spam scrapers, while still displaying and working normally as a clickable link for visitors. Email display is also hidden by default until you turn it on.<\/p><\/dd>\n<dt id=\"does%20each%20location%20get%20its%20own%20page%3F\"><h3>Does each location get its own page?<\/h3><\/dt>\n<dd><p>Yes. Every location has its own page with its own map, address, contact details, and hours, in addition to appearing in search results.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20block%20instead%20of%20a%20shortcode%3F\"><h3>Can I use a block instead of a shortcode?<\/h3><\/dt>\n<dd><p>Yes. The Location Finder block is available in the block editor and offers the same configuration options as the shortcode, through the block's own settings panel.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20map%20style%20or%20pin%20icons%3F\"><h3>Can I customize the map style or pin icons?<\/h3><\/dt>\n<dd><p>Pin color can be customized in the plugin settings. The Pro version adds custom pin icons, custom map styling, and per-category pin colors and icons.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20create%20anything%20when%20i%20activate%20it%3F\"><h3>Does the plugin create anything when I activate it?<\/h3><\/dt>\n<dd><p>Yes. Location Finder creates a single page titled \"Locations\" containing the <code>[locfinder]<\/code> shortcode, so you have a working locator immediately. You are free to rename it, change its slug, or delete it. To use a different page instead, choose one under Location Finder &gt; General Settings &gt; Locations Page. The plugin never recreates the page once you have set it, and it does not modify any of your other pages.<\/p><\/dd>\n<dt id=\"can%20i%20use%20different%20categories%20on%20different%20pages%3F\"><h3>Can I use different categories on different pages?<\/h3><\/dt>\n<dd><p>Yes. Each shortcode or block instance can target its own taxonomy, and pin colors are matched per instance to whichever taxonomy that instance is filtering on, so two maps on different pages can use different category sets and different pin colors.<\/p><\/dd>\n<dt id=\"does%20it%20support%20categories%20or%20filtering%3F\"><h3>Does it support categories or filtering?<\/h3><\/dt>\n<dd><p>The free version includes keyword search, filtering by the built-in Categories taxonomy, and radius-based \"near me\" search with distance choices of 10, 25, 50, and 75. The Pro version adds filtering by any custom taxonomy you register for locations, and lets you set your own distance choices.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>By default, nothing is removed. Your plugin settings and all location data are kept. You don't lose anything if you deactivate and later reinstall. (The plugin does always remove the Location-editing permissions it granted to Administrators and Editors, since those have no purpose without the plugin.) If you check \"Delete Data on Uninstall\" on the Tools settings page, uninstalling the plugin will permanently remove all locations, plugin settings, and cached data. This cannot be undone.<\/p><\/dd>\n<dt id=\"is%20it%20translation%20ready%3F\"><h3>Is it translation ready?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>locfinder<\/code> text domain and place translation files in the <code>\/languages<\/code> folder.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: Location Details block is properly recognized by the block editor, preventing it from being flagged as invalid content and accidentally removed from the Single Location template.<\/li>\n<li>Fix: Results Columns setting disables when Layout is set to List, matching the existing Grid Columns behavior.<\/li>\n<li>Fix: Map width is no longer applied when Results Position is set to below the map.<\/li>\n<li>Improvement: Category dropdown shows parent and child categories as a nested, indented list.<\/li>\n<li>Improvement: Keyword and Address search fields use placeholder text inside the input instead of a separate visible label, with the label kept for screen reader accessibility.<\/li>\n<li>Improvement: Result card thumbnails are larger and card spacing is slightly increased.<\/li>\n<li>Docs: Clarified that a Google Maps API key is optional. Search and directory features work fully without one.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Display locations on an interactive Google Map, with keyword, category, and radius &quot;near me&quot; search and results in a list or grid layout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/362351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=362351"}],"author":[{"embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codexalogic"}],"wp:attachment":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=362351"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=362351"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=362351"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=362351"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=362351"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=362351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}