1.6.0 Current
August 2026
77 changes across free and Pro
Listora
Makes the interactions the interface already advertised actually work, gives automation and webhooks a published contract, and enforces Terms of Service acceptance on the submission API.
New
- Listing photos display as a carousel, so every image stays reachable without scrolling back to the thumbnails.
- The featured image box accepts a dragged file, which its label has always offered.
- Members can set amenities when submitting or editing a listing, instead of only administrators from wp-admin.
- Tags are a discovery dimension: they filter search, appear as a facet, and render as clickable chips on cards and listing pages.
- A listing's video is rendered on the listing page rather than only stored.
- Services can be added, edited and deleted from the member dashboard.
- Automation and webhook subscribers can discover every available trigger from a published registry, with a JSON schema per event.
- The submission API accepts a complete `categories` list for clients that manage the full set.
- Features can be limited to specific listing types, so a Jobs page stops offering classified-ad amenities.
Improve
- An icon chosen in the admin picker is always one the front end can draw, so a selected icon can no longer vanish.
- Search filters and the submission form offer only the categories and features the selected listing type allows.
- Every endpoint returns the same `featured_image` shape, so a client no longer has to handle three variants.
- Every human-facing string leaves the API decoded, so ampersands and apostrophes render as typed.
- Review criteria saved against a listing type are the criteria the review form and averages use.
- Related Listings can be extended from a child theme through dedicated hooks.
- Health Check reports whether the search index is actually populated and indexed, not merely that its table exists.
- The dashboard checklist now guides owners through monetization setup in the order it has to happen.
- Terms of service is mapped once, by choosing the page your site already has, and every surface links to it.
Fix
- Editing a listing no longer deletes the categories the single-select form cannot display.
- Saving a new listing type, and resetting settings, now confirm they worked instead of reloading silently.
- Each member dashboard tab now titles the page after itself, instead of every tab reading "My Listings".
- Upgrading records the map tile source it was already using, so existing maps keep rendering and the source is now visible and editable.
- A map tile URL keeps its {z}/{x}/{y} placeholders when saved, so tiles load instead of every request returning 404.
- The setup wizard asks for a map tile server, so a fresh install is not left with a map it cannot draw.
- A site using Google Maps shows the map again, instead of an "unavailable" notice asking for a tile source Google never uses.
- The "Open Map settings" link, and the dashboard checklist's map item, land on the Map tab instead of falling back to General.
- Editing a service shows the category it is filed under, instead of an empty dropdown.
- Preview Your Listing lists the features you ticked by name, instead of their numeric term IDs.
- Service Categories has an admin screen, so the category dropdown on the member service form can actually be filled.
- Preview Your Listing groups the features you ticked into one row, instead of repeating the heading for each one.
- The listing header address no longer repeats the city and state, and no longer drops the postal code.
- Brand-coloured text meets AA contrast whatever accent colour the site or its theme uses.
- Credits status now reads the same on every screen, so members are no longer told to contact an administrator on a site that can take their payment.
- A listing whose category sits outside its type's allowed list can be edited and saved again.
- A search cache lifetime of 0 disables caching, rather than caching permanently.
- Rebuild Search Index now rebuilds the index instead of reloading the page.
- The map picker renders and accepts a dragged marker on the wp-admin listing editor.
- The favourite heart on the dashboard sits over the card image and responds to clicks.
- Approving or rejecting a claim from wp-admin now notifies the same listeners the API path does.
- Category names containing an ampersand display correctly in the submission form.
- A site missing a canonical page no longer white-screens after an update.
- A review held for approval now says so and keeps saying so, instead of the confirmation being wiped by a page reload that had nothing to show.
- Automation trigger labels translate again, and no longer fill the debug log with a notice on every page load.
Security
- Submitting a listing now requires a valid listing type, so listings can no longer be created without one.
- Terms of Service acceptance is enforced on `POST /submit`, which previously accepted a submission with no consent recorded. Clients that cannot send `agree_terms`, including sites that hide the checkbox, opt out with `add_filter( 'wb_listora_require_terms_acceptance', '__return_false' )`.
Dev
- New helper `wb_listora_directory_is_operational()` reports whether an install is a working directory, wizard walked or not.
- New public helpers: `wb_listora_render_icon()`, `wb_listora_get_icon_choices()`, `wb_listora_get_review_criteria()` and `wb_listora_decode_text()`.
- New public helper `wb_listora_sanitize_tile_url()` sanitizes a tile template without stripping the placeholders Leaflet substitutes.
- New hooks: `wb_listora_before_related_listings`, `wb_listora_after_related_listings` and `wb_listora_require_terms_acceptance`.
- `/search` accepts a `tags` argument; `/settings/app-config` publishes `contact_path`.
- Database version moves to 1.6.0; the migration clears cache entries written without an expiry and runs on activation.
Listora Pro
Adds the low-balance credit alert, restricts pricing plans to listing types, and rebuilds outgoing webhooks on the trigger registry Free now publishes.
New
- Members are emailed once when their credit balance falls to the configured threshold, which the setting has always promised and nothing delivered.
- A pricing plan can be restricted to specific listing types, so a plan only appears for the types it applies to.
- The Moderators screen paginates, offers bulk actions, and searches all users, so moderators can be managed beyond the first fifty.
Improve
- Outgoing webhooks offer only events that can actually be delivered, read from the trigger registry rather than a hand-maintained list.
- Every webhook payload carries a schema version and a per-subscriber delivery id, and uses the same entity shapes the REST API returns.
- Badge pill icons are rendered on the server, so they appear on the front end instead of staying blank.
- Monetization setup appears on the Listora dashboard checklist, in the order it has to be done, and is hidden when monetization is off.
- Comparing listings of different types now shows one table with every listing side by side, instead of a separate table per type.
- The unlicensed-site notice describes only what an owner can act on today: updates are paused, website features are unaffected.
Fix
- Saving a badge returns to the badge list instead of leaving the form open.
- The Pro welcome banner no longer appears on a directory that is already live, and dismissing it is permanent.
- Activating the licence on the Plugins screen is reflected in the Pro setup wizard, and the reverse.
- The Saved Searches and Analytics dashboard tabs title the page after themselves.
- Active Mappings shows the provider and product names, and falls back to their identifiers rather than blank cells.
- Buy Credits, the member dashboard, Transactions and Credit Mappings all report the same monetization status.
- The "Open Features" button shown when monetization is off now opens the Features settings, instead of a page that refuses access.
- The compare shortcode renders the same table as the block, so both entry points behave identically.
- Comparison column headers align with the values beneath them.
- The /needs/ archive now shows the needs marketplace with search and filters, instead of a plain post list.
- Quick Edit no longer clears a plan's listing-type restriction.
- The claim audit trail records the listing a claim targets, and records approvals made from wp-admin.
- Bulk moderator actions report how many rows were actually changed.
- Posting a need with a listing type that does not exist is rejected, and existing needs that carried one are cleared on upgrade.
Dev
- New filters `wb_listora_pro_email_credits_low_view_data` and `wb_listora_pro_email_credits_low_subject`, plus an overridable `emails/credits-low.php` template.
- Claim and credit action listeners accept fewer arguments without fatal errors, so a third-party integration firing a public action cannot take the site down.
Compat
- Requires WB Listora 1.6.0. Install both updates together.