Description
Web Directory Free turns WordPress into a searchable business directory. Sort listings into categories, locations and tags, build your own listing form, drop the directory onto any page with a shortcode, and let visitors search and browse — on a list or an interactive map.
In the free edition you add and edit listings from the WordPress admin, and visitors browse, search and view them on the front end.
Live demo: https://directory.salephpscripts.com/
Key features
- Categories, locations and tags to organise your listings.
- A listing-form builder — add your own fields (text, select, checkbox, price, opening hours, date, website, email, and more).
- Maps with Google Maps, Mapbox or MapLibre (MapTiler tiles), per-category marker icons and clustering.
- Advanced search: by category, location, custom fields, and address + radius search.
- Google reCAPTCHA on the listing contact form.
- CSV import and export for bulk listing management.
- Translation-ready: ships a POT file for any standard gettext/PO editor.
- Fast on large directories: marker clustering and on-demand loading keep thousands of listings responsive.
This plugin uses external services (map providers and, if you enable it, Google reCAPTCHA). See the External Services section below.
Upgrading
The full version of Web 2.0 Directory adds front-end paid submission, membership plans and WooCommerce checkout for paid, featured, renewed and upgraded listings. Those modules are not part of the free edition.
External Services
Web Directory Free uses the following third-party services. Nothing is sent until you use the matching feature:
- Map providers (Google Maps, Mapbox, MapTiler / MapLibre) — when a map loads or an address is geocoded, the request (coordinates, the address being searched, and your API key/token) is sent to the provider you chose. See that provider’s terms and privacy policy.
- Google reCAPTCHA — when you turn it on for the contact form, the visitor’s interaction is checked with Google. See Google’s terms and privacy policy.
The free edition does not contact the author’s servers: it gets updates through WordPress.org and does no license or “phone-home” checks.
Installation
- Upload the plugin folder to
/wp-content/plugins/, or install the ZIP via Plugins -> Add New -> Upload Plugin. - Activate Web Directory Free from the Plugins menu.
- Open the settings page, pick your map engine and enter its API key/token (Google Maps API key, Mapbox token, or MapTiler key).
- Create your categories and locations, build the listing form, add listings, and place the directory on any page with the shortcode.
FAQ
-
Who can add listings in the free edition?
-
Listings are created and edited from the WordPress admin. Front-end submission (with optional moderation, expiration and renewal) is part of the full version.
-
Do I need API keys?
-
For maps, yes — each map provider needs its own key/token, entered on the settings page. Keys are stored on your site and are never sent to us.
-
Which map providers are supported?
-
Google Maps, Mapbox, and MapLibre with MapTiler tiles. You pick one on the settings page.
-
Is it translation ready?
-
Yes. A
languages/w2dc.pottemplate is included; translate it with any standard gettext/PO editor. -
How do paid listings and membership plans work?
-
Paid submission, membership plans and WooCommerce checkout come with the full version of Web 2.0 Directory, not the free edition.
Reviews
Contributors & Developers
“Web Directory Free” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Web Directory Free” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0.6
- New: a Globe projection option for Mapbox and MapLibre directory maps (Edit Map, next to the map style) — the map shows a 3-D globe when zoomed out and flattens to the normal flat map as you zoom in.
- Fix: in the setup wizard, the map step now opens the map already created during setup or migration for editing, instead of starting a blank new one (which left you with a duplicate).
- Improvement: the directory’s Map element shows a “Create new map” button when the site has no maps yet, instead of an empty picker.
- Fix: the rating marker’s text size (the px next to “Rating (score + reviews)”) now actually resizes the label on Mapbox and MapLibre maps, and markers stay locked to their spot while the globe rotates.
- Fix: the directory map no longer shows a false “Google Maps API key is not configured” notice when the key is set. On sites where the plugin was the only one loading Google Maps, it was accidentally removing its own map script along with any conflicting ones; it now keeps its own, so the map displays.
- Fix: permanently deleting a listing no longer leaves empty “ghost” cards (blank tiles with no title or link) in its directories. A one-step “Delete Permanently” could leave stale rows in the directory’s search index; those are now removed as the listing is deleted, and the front end also skips any that remain, so only real, published listings show and the results count matches.
- Fix: long text on listing cards and map popups now wraps at word boundaries instead of breaking words at random characters.
- Fix: the admin reminder about a missing Google Maps API key now shows its bold text and settings-page link correctly instead of raw HTML tags.
- Fix: in the listing-form builder, a field’s chosen icon now shows in the Field Properties panel right away, instead of looking blank until you re-select it.
- Fix: in the listing-form builder, grabbing a field and dropping it back in the same place no longer leaves it dimmed.
- Fix: deactivating and reactivating the plugin no longer breaks permalinks (listing, category, location and directory pages returning 404 until Settings Permalinks was re-saved). Rewrite rules are now flushed on the next page load after activation, when the post types and directory URL rules are actually registered.
- New: give a directory a default filter (category, location, tag, author, custom fields or specific listings) so it shows only the listings and markers you choose. A visitor’s search overrides it field by field.
- New: “Hide listings until search” option for the Listings block — the grid stays empty until the visitor searches.
- New: a Slider element for directories — a looping, swipeable carousel of listing logos, each linking to its listing, with an optional name, star rating and “Featured” badge; arrows, autoplay and pagination dots. Also the [webdirectory-slider] shortcode and WPBakery / Elementor elements.
- New: the listing-page Images gallery gains a Display option — Gallery (the responsive grid) or Slider (the same carousel); clicking an image still opens the lightbox.
- New: a one-click front-end self-test that checks the directory works on the live site, catching problems caused by other plugins.
- Improvement: with “Follow the map” on, the Listings block now shows the map’s matching listings as the normal grid — results count, sort control and numbered pagination — instead of the map’s scrolling sidebar.
- Performance: on a page with a map and search but no listings grid, the map search now loads only the markers instead of also building a listings payload nothing shows.
- Fix: on pages built with a page builder (Elementor, WPBakery, blocks), listing links now point to the correct directory URL instead of the raw /w2dc_listing/ address.
- Fix: when editing a map, the live preview applies unsaved settings again (style, colours, controls).
- Fix: the image lightbox’s previous / next arrows are vertically centred regardless of the active theme’s button styles.
- Fix: migration now carries over the map engine and API key, and no longer adds a map where the old site had none.
- Fix: migrated directories now come with a working search form (Address, Radius, Keyword, Categories, Locations) instead of an empty search area.
- Fix: with Yoast SEO, listing, category and location pages get their own page title again instead of showing the site title.
- Fix: a website address can be entered without “https://” on the listing form, and an email pasted with a stray space is no longer rejected as invalid.
2.0.5
- Fix: choosing a different main image (logo) — or reordering a listing’s images — now takes effect on the front. The listing renderer was reading a pre-rebuild image key and ignored edits made in the editor, so the main image “stuck” on the first image; it now honours the current image order and the chosen logo.
- New: a listing’s images can be reordered by dragging their handle in the editor — the first image (or the one marked as the logo) becomes the main image.
- New: the on-map search form gains a collapse/expand toggle beside the drag handle — both shown by the “Allow form drag and toggle” option (Edit Map Search form).
- Fix: after migrating a legacy site, category / location / listing links no longer open the directory home instead of the right page — the migration deterministically rebuilds the directory URL rules, and a “Rebuild directory routing” button on Tools W2DC Migration re-applies them on demand.
2.0.4
- Fix: migrating from a legacy directory no longer risks published listings being switched to Draft — old carried-over expiration dates are grandfathered to “never expire” and the hourly expiration check is paused until the migration finishes (with automatic repair of any listings a previous run had suspended).
- Fix: the migration no longer stalls with an “Unexpected token” error on large sites — the heaviest step now runs one custom field per request and automatically retries and resumes after a server timeout.
- Fix: listing and directory links work right after migration — permalinks are refreshed automatically (no need to re-save Settings Permalinks).
- Fix: the “Preview” button and “View Listing” link are back on the listing editor.
- Fix: migrated directories show a working map instead of an empty map area.
- New: the directory elements are available in both the WPBakery / Visual Composer and Elementor page builders, using the same element names, so pages built with them render and stay editable.
- New: listing cards gain a Cover / Contain image-fit option alongside the aspect-ratio control.
2.0.3
- New: a “Map language” setting — show Google Maps place labels, Places autocomplete and the geocoder in a chosen language (e.g. English), independent of the site language.
- Fix: a new listing created in the WordPress admin now publishes reliably even when the form takes more than a minute to fill in — WordPress’ autosave could previously leave it as an unpublished draft that was missing from the Listings list and the map.
- Fix: the public directory map no longer breaks with a “Cookie check failed” (403) error on cached pages or after a long-open session — its read-only data is now fetched without a REST nonce, so full-page caches and expired sessions can’t stop it loading.
2.0.2
- Security: only users allowed to submit listings can upload files; uploads are limited to safe file types and a maximum size, and low-privilege users are rate-limited.
- Security: through the API, users can now only view and edit their own listings.
- Security: anonymous star ratings are counted once per visitor and rate-limited (with optional reCAPTCHA) to stop rating spam.
2.0.1
- Packaging: restore the historical main plugin file name so updates from earlier versions apply cleanly without deactivating the plugin. No functional changes.
2.0
- Rebuilt on the shared SalePHP engine: the directory core (categories, locations, tags), the custom listing-form builder, maps (Google, Mapbox, MapLibre) and advanced search.
- Hardened request-input sanitization across admin handlers; added a nonce and capability check to the license-notice endpoint; guarded a CSV image path against traversal.
- No self-hosted updater or license checks — updates are delivered through WordPress.org.
- Trimmed the bundled demo payload (removed compressed archives and the large country sample data).
- Routed internal diagnostics through a WP_DEBUG-gated logger so production logs stay quiet.










