Web 2.0 Directory plugin for WordPress

Web 2.0 Directory — Business Directory, Paid Listings & Maps for WordPress Web 2.0 Directory turns WordPress into a complete business directory. Build one or ma

Jan 20, 2026 - 18:09
Aug 21, 2026 - 16:53
 0  1
Web 2.0 Directory plugin for WordPress

Web 2.0 Directory — Business Directory, Paid Listings & Maps for WordPress

Web 2.0 Directory turns WordPress into a complete business directory. Build one or many directories on a single site — each with its own categories, locations, tags and submission form — lay every page out with a drag-and-drop directory builder, and let members submit and pay for listings through WooCommerce. Visitors search and browse by keyword, category, location or distance, and see results on an interactive Google Maps, Mapbox or MapLibre map. Everything — the directory builder, search forms, listing forms, plan constructor, marker editors and CSV tools — runs on a modern React UI with no page reloads.

Live demo: directory.salephpscripts.com

Multi – Directory

Every directory is a self-contained container you compose visually and drop onto any page with a single shortcode.

  • Multiple directories — run a business directory, a real-estate directory and a classifieds board on the same install, each fully independent.
  • Per-directory taxonomies — every directory has its own categories, locations and tags, plus its own listing-form template.
  • Per-directory URLs — set the listing, category and location URL segments per directory; clean pretty-permalink listing pages with a non-pretty fallback.
  • Scoped terms & plans — restrict a directory to a chosen subset of categories, locations and listing plans.
  • [webdirectory id=”N”] — embed a directory anywhere; the ID resolves by post ID, slug or title, and an empty value falls back to your default directory.
  • Duplicate a directory — one click clones a directory’s entire layout and configuration as a starting point for the next one.

Drag-and-Drop Directory Builder

A visual React builder lays out every directory page as rows, columns and elements — no code, no shortcode juggling.

  • Element library — drop in Search, Map, Listings (grid/list), Categories, Locations, Slider, Pricing Plans, Breadcrumbs, Page Title, Buttons and more.
  • Single-listing template — build the listing detail page from elements too: gallery, fields, field groups, rating, reviews, comments, contact form, report and claim.
  • Sub-pages — distinct layouts for the directory home, category view, location view, favourites and single listing.
  • 6-column grid — size elements in sixths (including two-thirds spans) and let elements span multiple rows.
  • Responsive forks — separate tablet and mobile layouts per page with configurable breakpoints, so the directory reflows cleanly on every screen.
  • Every element is also a shortcode — the [webdirectory-*] family lets you hand-place any element in a custom template if you prefer.

Listing Plans & Monetisation

Charge for listings with a per-directory plan constructor and WooCommerce checkout — sell single listings, featured placement, renewals and upgrades.

  • Free or paid plans — mark a plan as payable and set a submit price, a renewal price and a raise-up (bump-to-top) price, with your own period label.
  • WooCommerce checkout — paid submissions, renewals and upgrades are charged through WooCommerce using your existing gateways and currency. Charges are per listing action (submit / renew / upgrade), not a recurring subscription.
  • Per-plan limits — cap listings per package, number of categories, tags, locations, images and videos; or set any of them to unlimited.
  • Duration control — fixed active periods (days, weeks, months, years) or permanent listings, driven by the plan.
  • Access control — choose which user roles can view and which can submit under each plan.
  • Featured & sticky — highlight listings with a ribbon label, pin them to the top, add a “featured” style, or toggle nofollow, a dedicated listing page, logo upload, claiming and ratings per plan.
  • Certain-terms plans — restrict a plan to a specific set of categories or locations.
  • Pricing table element — drop a plans/pricing block onto any page with feature bullets per plan.
  • Plan changes — define upgrade/downgrade transitions and prices, plus an automatic post-expiration transition to another plan.

Three Map Engines, One Plugin

Pick the engine that fits your project — the whole directory renders on it.

  • Google Maps — Places address autocomplete, Street View, Map/Satellite toggle, rotate/tilt and directions.
  • Mapbox GL JS — crisp vector tiles, smooth rotation and zoom, and a library of polished built-in styles.
  • MapLibre GL + MapTiler — fully open-source rendering on open tiles; no vendor lock-in.

Switch engines in Settings at any time — all listings, categories, locations and search forms stay exactly where they are; only the tile layer changes. Every engine ships a curated set of ready-to-use styles selectable from a dropdown.

Markers & Marker Clustering

  • Font Awesome icon markers — any FA icon and a custom colour per category or per individual listing.
  • Image markers — use the listing’s featured photo as the map pin.
  • Price markers — show the listing price badge on the pin; ideal for real estate and classifieds.
  • Per-category icons — a React icon/colour picker on every category and location term.
  • Marker clustering — nearby markers merge into numbered cluster bubbles; configurable grid size and multi-level styles keep busy directories fast.
  • Streaming batch loading — markers load in batches over the REST API so directories with thousands of listings open instantly, with the rest arriving in the background.

A drag-and-drop React form builder composes the search form field by field.

  • Keyword search — a MySQL FULLTEXT index over titles, descriptions and custom fields returns relevance-ranked results, with a debounced autocomplete dropdown.
  • Address + radius search — “show everything within 25 km of me” with a km/miles toggle and a radius circle drawn on the map.
  • Category & location filters — hierarchical dropdowns or checkbox trees over each directory’s taxonomies.
  • Custom-field filters — price-range slider, list/select/checkbox, date range, “open now” opening-hours availability and more — any form field can become a filter.
  • Live results — the listings grid and map markers update instantly as visitors change any filter.

Listings: Grid & List Views

  • Grid or list — choose the default view, allow visitors to switch, and set column counts for desktop, tablet and mobile.
  • Sorting — by date, title, price, rating, a custom field, or a random shuffle; ascending or descending, backed by a dedicated sort/filter index for fast queries on large directories.
  • Sticky & featured first — plan-driven sticky listings always lead the results.
  • Configurable cards — drag-and-drop which fields appear on each listing card, set the image ratio and per-page count.
  • Favourites — visitors can save listings to a favourites view.
  • Map ↔ list interaction — hover a card to fly the map to its marker and highlight it.

Custom Fields & Visual Form Builder

Design each directory’s submission form without touching code. Fields are shared across the submission form, listing cards, the detail page and search filters.

  • Field types — Text, Textarea, Number, Price, URL/Website, Email, Phone, Image, File, List/Select/Radio/Checkbox, Date & Time and Opening Hours (a weekly-schedule editor with “open now” filtering).
  • Field groups — organise fields into labelled sections on the form and the detail page.
  • Reusable templates — manage form templates as their own admin screen and assign them per directory.

Frontend Submission & User Dashboard

Members add and manage their own listings entirely from the frontend — no WordPress admin access needed.

  • [webmap-submit] — a full listing submission wizard with plan selection, payment, image upload and reCAPTCHA.
  • [webmap-dashboard] — a personal dashboard to view, edit, delete, renew and pause listings, check expiry, and (with WooCommerce) review orders.
  • Registration & login — built-in auth on the dashboard; optional anonymous (guest) submissions.
  • Moderation — hold new and edited listings for admin review before they go live.
  • Expiration & renewal — plan-driven active periods with one-click owner renewal and status badges (Active, Expired, Unpaid, Paused).
  • Audit log — an append-only history of every listing lifecycle event, visible to admins.

Reviews, Ratings & Comments

  • Built-in star ratings — visitors rate listings; averages show on cards, the listing page, the map popup and the marker.
  • Full reviews — integrates with the companion Ratings & Reviews engine for multi-criteria reviews, review images and voting, surfaced through dedicated Rating, Reviews and Comments elements.
  • Per-plan control — enable or disable ratings and reviews per listing plan; data is never deleted, only hidden.

Listing Claiming

  • “Claim this listing” — let business owners claim a pre-listed entry; enable claiming per plan.
  • Admin approval — approve or reject claims from the admin, transferring ownership to the claimant on approval.
  • Claim emails — automatic notifications across the claim lifecycle.

Categories, Tags & Locations

  • Hierarchical categories — nested trees, each with its own marker icon and colour.
  • Locations taxonomy — a separate geographic hierarchy (Country → State → City) for the location filter and address display.
  • Tags — flat cross-category grouping.
  • Primary term (★) — mark a listing’s primary category and location for its canonical URL and headline placement.
  • Per-term icons — a React picker sets an icon per category and location term.
  • Category, tag and location names are full-text-indexed, so keyword search spans taxonomy names automatically.

Address & Geocoding

  • Google Places autocomplete on every address field, geocoding as the visitor types.
  • “Get my location” — one-click GPS fills the address automatically.
  • Manual coordinate override — pin a location on a mini-preview map when the address isn’t enough.
  • Configurable address format — a drag-and-drop token builder controls how addresses appear in cards, popups and the detail page.
  • Country restriction — lock autocomplete to a single country for regional directories.

CSV Import & Export

  • Bulk import — create or update listings from a CSV in chunked REST batches so large files don’t time out, with a resumable progress bar.
  • Directory, plan & rating columns — assign listings to directories and plans and seed ratings straight from the CSV.
  • Images & geocoding on import — attach photos from URLs, de-duplicate files, and geocode addresses as rows are processed.
  • Export — export all listings (with image URLs) for backup or migration.
  • Demo content — one-click import of ready-made directories, maps, pages and a form template.

Email Notifications & Contact Form

  • Notification emails — new listing submitted, listing approved/activated, pre-expiration reminder and expiration, plus new-user and claim emails — all templates fully customisable, with a built-in delivery test.
  • Contact form — on every listing page, visitors message the owner without exposing their email; optionally restrict to logged-in users, or swap in a Contact Form 7 shortcode.
  • Google reCAPTCHA v2 & v3 — anti-spam on the contact and submission forms, with a built-in key test.

Colour Customisation

  • A global palette in Settings controls primary, secondary, link, link-hover and button colours, with an optional button gradient.
  • Colours are applied via CSS custom properties, so they cascade through every frontend component automatically.

SEO

  • Per-view meta — title, description and social tags adapt per directory page, category, location and listing.
  • Plays nice with SEO plugins — yields to Yoast, Rank Math, All in One SEO or SEOPress when present, and falls back to its own meta otherwise.
  • Hide the host page title — an optional per-directory toggle removes a duplicate page

    .

Shortcodes

  • [webdirectory id=”N”] — render a full directory (current sub-page layout), or a custom hand-built layout.
  • [webdirectory-listing-page directory=”N”] — the single-listing template.
  • [webdirectory-search] · [webdirectory-map] · [webdirectory-listings] · [webdirectory-categories] · [webdirectory-locations] · [webdirectory-plans] and the rest of the element family for hand-placed layouts.
  • [webmap-submit] — frontend listing submission wizard.
  • [webmap-dashboard] — the member’s listings manager.
  • [webmap id=”N”] — embed a standalone map by ID or slug.

Performance Architecture

  • REST API backend — every frontend operation (search, marker load, popup data, listing CRUD, checkout) runs through a clean versioned REST API.
  • Streaming batch loader — the first batch of markers ships in the config payload; more load in the background without blocking interaction.
  • FULLTEXT search index — a dedicated index table powers relevance-ranked keyword search without scanning postmeta.
  • Sort/filter index — a directory sort index table gives index-seek sorting and range filters on price, numbers and dates even with thousands of listings.
  • React frontend — the directory, map, search form, listings and admin panels are React; DOM updates stay minimal.

Setup, Migration & Diagnostics

  • Setup wizard — a guided first-run wizard for engine selection, API keys, your first directory and demo import.
  • One-click demo import — import ready-made directories, maps, pages and a form template in seconds.
  • Legacy migration — a one-shot in-place migration adopts an existing legacy Web 2.0 Directory install — listings, categories, locations, plans, custom fields and settings — without data loss.
  • Diagnostics — built-in tools to test API keys, reCAPTCHA, email delivery and the search index.

Translation & Compatibility

  • Translation-ready — ships a complete .pot file; load your .mo and the whole plugin is localised.
  • WPML & Polylang compatible — language-dependent IDs resolve through the multilingual filters.
  • WooCommerce — used for paid-listing checkout, currency and orders.
  • Fully responsive — the directory, map, search form and dashboard reflow gracefully on phones and tablets.
  • WordPress 6.0+ and PHP 7.4+.

What’s Included

  • Web 2.0 Directory plugin (all features above).
  • Companion Web 2.0 Directory theme — a ready-made demo/marketing theme pre-wired to the plugin (map engine switcher, “Submit listing” and “Buy plugin” CTAs, built-in SEO meta), provided as a separate download.
  • Demo content — importable directories, maps, pages and a form template.
  • Bundled documentation.
  • 6 months of item support.

Requirements

  • WordPress 6.0 or higher.
  • PHP 7.4 or higher.
  • WooCommerce (only if you sell paid listings).
  • An API key from your chosen map provider:
    Google Maps: browser key (required) + server key (optional, for server-side geocoding).
    Mapbox: Mapbox access token.
    MapLibre + MapTiler: MapTiler API key.
    Keys are stored on your server only and are never sent to us.

Changelog

 = 3.1.3 - 2026-08-21 = * Fix: search form fields keep a consistent height regardless of the active theme. * Fix: a directory search now stays scoped to its own directory when the page carries more than one directory block (e.g. a separate mobile layout). * Improvement: a listing's status now shows as a coloured badge on the Edit Listing screen, matching the listings table. * Fix: paused or expired listings no longer stay visible in the directory (list and map) after being re-published from Quick Edit, a bulk action or another plugin. * Improvement: filter the listings table by the "Paused" status, and the Directory / Plan column shows "All directories" for a listing that appears in every directory. * New: an option to convert imported images to WebP during CSV import (in the import step) - WebP files are typically 25–35% smaller than JPEG; skipped automatically if the host's image library can't write WebP. * New: set a specific expiration date - or "Never" - for any listing right on the Edit Listing screen. Your choice overrides the plan and is kept when the plan changes; leave it on "Default" to follow the plan as before. The "Listing status" and "Listing Info" boxes are now merged into one. * Improvement: the Listing history now records plan changes and expiration-date changes, whether made by hand or automatically (auto-upgrade, renewal). * Improvement: pause or resume a listing from your front-end dashboard too, and the "Change expiration date" screen now uses the same Default / date / Never control. * New: the directory list view now lays out each listing as a row - a fixed-width image on the left, details on the right - instead of a single-column grid. Set the list image width per directory in Edit Directory → Listings; the image keeps the Card image ratio you chose. * New: when you search by address + radius, sort the listings by "Distance" (nearest first), and every listing card shows its distance from the search point - matching the map popups and sidebar. * Fix: map marker coordinates are sent to the browser at normal precision again (some server configurations were appending a long trail of decimal places). * Fix: the Opening hours field again shows a green "Open" / red "Closed" badge, with correctly coloured day labels, on listings and in map popups. * Fix: the Edit pencil next to a listing's title (on cards, in map popups and in the map sidebar) is shown again to signed-in users who can edit that listing - the public map's cache-friendly requests were dropping the sign-in check. * Improvement: searching or browsing a directory by category, location or tag is much faster on large directories - it now uses the directory sort index (the same fast path as sorting and the opening-hours filter) on both the map and the listing grid, instead of a full database scan. * Fix: a listing that has expired can no longer be paused or resumed (from the Listing Info box or the front-end dashboard) - an expired listing must be renewed. Pausing an expired listing used to hide its expired state, and resuming could put it back on the front end past its expiration date. = 3.1.2 - 2026-08-19 = * New: an "Always load front assets" option (Settings → Advanced → JavaScript & CSS) loads the directory's JavaScript and CSS on every page, so a [webdirectory] or [webdirectory-map] shortcode placed in a page-builder header, footer, widget or dynamic template (Divi, Elementor and similar) that is not part of the page's own content still shows its map and listings - no more hidden helper section on every page. * Improvement: creating a listing now starts with an inline "choose a directory and plan" step instead of a separate sidebar box. * Fix: toggling the "Enable automatic user Geolocation" switch on the Edit Map screen now activates the Save button. * Fix: creating a listing no longer reports a false "is required" error on a custom field that is already filled. * Fix: map markers no longer disappear when another plugin or theme also loads Google Maps on the page. * Fix: map search form fields keep their border and full width regardless of the active theme. * Fix: HTML in a field's Description (help text) now renders on the listing form instead of showing as raw tags. = 3.1.1 - 2026-08-12 = * New: the Listing body element can hide the name (label) of any field individually on the listing page. * Improvement: a directory listing page now shows an images gallery under the title by default. * Improvement: after an update, the migration wizard opens automatically when there is legacy data to migrate. = 3.1.0 - 2026-08-11 = * New: the [webdirectory-listings] shortcode accepts "categories" and "locations" attributes (term ids or slugs, comma-separated) to pin a listings grid to specific categories/locations. * New: label-type map markers (the Rating chip and field-value labels) now take per-source background AND text colours - set them in Edit Map → Markers (the same colour control the dots use); background default white, text default #333. The Opening hours label gets two backgrounds - one for Open, one for Closed. * Fix: the rating field's "Icon size (px)" box (search-form builder and the directory's rating element) now accepts any value you type - it no longer jumped to the maximum when you typed a smaller number such as 20. * Improvement: the [webdirectory-map] shortcode now takes a map by id, slug or name - use id="..." (the old map_id still works) - and with no map given it shows all listings on a map with the default settings. * Fix: a directory whose page is built with the [webdirectory custom_home] shortcode (for example inside a page builder like Divi or Elementor) is now recognised as that directory's page, so "Open page" opens it instead of offering to create a duplicate. * Fix: migrating a custom field whose icon was an uploaded image no longer produces a broken icon - such fields fall back to their default icon. * New: an alternative HTML marker mode - map markers rendered as real DOM elements instead of on the canvas, switchable in the Markers "Advanced" panel (canvas stays the default). * Fix: a label marker’s connector “tip” no longer detaches or collapses to a sliver at steep/diagonal angles - it now hugs the pill’s rounded corner cleanly (canvas and HTML markers). * Fix: the directory layout now adapts at the tablet / mobile endpoints set in the layout editor, instead of a fixed ~782px width. * Fix: the Featured badge now shows styled in the Edit Map live preview (its styles were previously loaded only on the front, so it appeared as plain "Featured" text). * Fix: the on-map search form's collapse toggle is now shown only in full-screen - where its folded/expanded state is remembered - so leaving full-screen returns the form to expanded instead of leaving it stuck folded on the page. * Fix: the search form's Radius slider spans the full form width now, aligned with the other fields (its stray side padding is gone). * Fix: after migrating, a directory page that already used the [webdirectory] shortcode no longer comes up blank - the old numeric directory id now resolves to the migrated one, and "Open page" opens that page instead of creating a duplicate. * Fix: an interrupted last migration step no longer leaves the directory URL rules half-built - the run resumes and rebuilds the routing on the next visit, with no manual "Rebuild directory routing". * Fix: a listing, category or location page that briefly 404s during an update or migration now sends no-cache headers, so a CDN or page cache can't pin it as "not found" for hours. * Improvement: the reCaptcha settings page now lists which forms reCAPTCHA protects - dashboard Login / Register / Lost-password, listing submission, "Contact this listing", anonymous ratings, "Report a listing" and "Claim a listing". * Fix: when a cookie-consent plugin (for example Avada's Privacy option) holds back the Google Maps script, the map now says it is waiting for consent - and loads once cookies are accepted - instead of "Google Maps API key is not configured". * Fix: an enabled "Content" field shows on listing cards and map popups again. On some sites (typically after migrating) it was silently dropped even though the listing editor still showed it. * Fix: the listings pager no longer shows the theme's bullet points in front of the page numbers. * Fix: "Show radius circle" now works on the live map, not just the Edit Map preview - drawn at load from the map's own "Show markers in radius" radius, moved to a visitor's address + radius search, and framed by the camera when it is wider than the saved zoom. * Fix: words no longer break in the middle at the end of a line. The 4-line trim on Content and other text fields used a legacy CSS box that ignored word-wrapping rules (most visible in Firefox); it now trims by height, so text wraps at spaces. Pasted text is also cleaned of invisible characters that force breaks, and the listing page's field values and the directions panel are covered too. * Improvement: listing cards, map popups and the map sidebar lead with the photo as a cover image - flush to the top edge, rounded top corners, softer card corners. * Developer: the shared listing-field markup (cards, map popups, sidebar) now carries neutral `…-listing-content__*` class names alongside the historical `…-popup__*` ones. Custom CSS keyed on the old names keeps working - they are kept as deprecated aliases. * Improvement: a new directory opens with its General settings filled in - labels, slugs and the listing form template - instead of blank boxes. These are the values it already used behind the scenes, so existing directories are unchanged. = 3.0.5 - 2026-08-06 = * 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. = 3.0.4 - 2026-08-05 = * 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. * 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. * Fix: migration now carries over the map engine (Google / Mapbox / MapLibre) and its API key, and no longer adds a map where the old site had none. * New: a one-click front-end self-test that checks the directory works on the live site, so problems caused by other plugins (caches, optimizers, security plugins) show up even when wp-admin looks fine. * 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. * Fix: the Currency setting is visible again on the Payments tab, which used to come up empty. It was hidden unless WooCommerce payments were switched on, even though plan prices are shown in that currency whether or not you take payment through WooCommerce. = 3.0.3 - 2026-08-04 = * New: Slider element for directories - a looping, swipeable carousel of listing logos, each linking to its listing. Configure the number of slides, max width, height, aspect ratio and image fit, and show the listing name, its star rating + review count (when a ratings provider is active) and a "Featured" badge on each slide; prev / next arrows, optional autoplay and pagination dots. The slider can mirror the page's Listings block (or Map), or pick its own listings by category / location + sort. Also available as the [webdirectory-slider] shortcode and as WPBakery / Elementor elements. * New: the listing-page Images gallery gains a Display option - Gallery (the responsive grid) or Slider - where Slider shows the listing's images in the same carousel (arrows, drag, autoplay, dots). Clicking any image still opens the lightbox. * Improvement: directory sliders loop at the ends, support an optional pagination-dots pager, and can be dragged with the mouse (desktop) or swiped (touch). * Performance: on a directory page that shows a map + search but no listings grid, the map's search now fetches only the map markers instead of also building a listings payload that nothing displays. * Fix: the image lightbox's previous / next arrows are vertically centred regardless of the active theme's button styles. * Fix: after migrating a legacy site, category / location / listing links no longer open the directory home instead of the right page. The migration now deterministically rebuilds the directory pretty-URL rules, and a "Rebuild directory routing" button on Tools → W2DC Migration re-applies them on demand - no Settings → Permalinks re-save needed. * Fix: on the listing editor, changing a listing's main image (logo) - and reordering its images - now takes effect on the front. The front-end listing renderer was still reading a pre-v3 image key and ignored image/logo edits made in the new editor, so the main image "stuck" on the first image; it now reads the current image order and chosen logo. Images can also be reordered by dragging their handle in the editor. * New: the on-map search form gains a collapse/expand toggle beside the drag handle - both shown by the renamed "Allow form drag and toggle" option under Edit Map → Search form - so visitors can fold the form out of the way. = 3.0.2 - 2026-08-03 = * Fix: on directory 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 (which could redirect to the homepage). Such pages are now recognised as directory hosts automatically, even when the builder keeps the directory shortcode out of the page content. * Fix: when editing a map, the live preview applies unsaved settings again (map style, colors, controls). The Edit-Map screen's REST request was running unauthenticated, so the preview ignored changes until you saved. * Fix: the public map and directory search could still return a "Cookie check failed" (403) on some cached sites. A server-side safeguard now treats a stale/expired security nonce as an anonymous request for public read endpoints, so search and map data keep loading behind full-page caches and CDNs. = 3.0.1 - 2026-08-02 = * Fix: migrating from Web 2.0 Directory 2.x no longer risks published listings being switched to Draft. Legacy listings that carried an old expiration date are grandfathered to "never expire" during migration, and the hourly expiration check is paused until the migration finishes - with an automatic repair for 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 processes one custom field per request, and the tool automatically retries and resumes after a server timeout, so directories with tens of thousands of listings migrate reliably. * Fix: listing and directory links work immediately after migration - permalinks are refreshed automatically, so there is no need to open Settings → Permalinks and re-save. * Fix: the "Preview" button and "View Listing" link are back on the listing editor. * Fix: migrated directories now show a working map out of the box instead of an empty map area. * New: the directory elements - listings, map, search, categories, locations, slider, front buttons, page header/title, breadcrumbs and pricing table - 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. = 3.0.0 - 2026-07-31 = * Rebuilt on the shared SalePHP engine, with the full directory overlay: multiple directories, membership plans, WooCommerce payments and the listing-form builder. * 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. 

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0