Locus Changelog

1.8.4 - 2026-06-03

WooCommerce configuration in the admin panel
Two new sections have been added to GEO Engine Settings > WooCommerce, making the WooCommerce schema features fully configurable without any custom code.

Product Attribute Schema Properties Add the WooCommerce attribute slugs you want to appear as structured data properties on your product pages. For example, adding material will cause Locus to output the product's Material attribute as an additionalProperty node in the schema, making it readable by search engines and AI models. Enter each attribute on a separate row using the slug shown in WooCommerce > Attributes.

Category FAQs Add FAQ questions and answers for each product category. Enter the category slug and then add as many question/answer pairs as needed. Locus will output a FAQPage schema block on that category's archive page, eligible for FAQ rich results in Google Search.

Both sections were previously only configurable by a developer. They are now managed entirely within the WordPress admin panel.

1.8.3 - 2026-06-03

Internal housekeeping release. No change to schema output for correctly configured sites.

The WooCommerce class has been fully generalised - it no longer contains any site-specific defaults for product attribute names, category FAQ content, or shipping scope. All of these are now configured per site via WordPress filters. This makes Locus suitable for deployment on any WooCommerce site without modification.

1.8.2 - 2026-06-03

Patch release. Changes in two files only: includes/class-locus-acf.php and includes/class-locus-woocommerce.php.

Changes
New ACF tab: WooCommerce (includes/class-locus-acf.php)

A new WooCommerce tab has been added to GEO Engine Settings (between the Person Entity tab and the API Settings tab) with two fields:

  • geo_merchant_return_days (number) — Return window in days. Default 14, reflecting the EU/UK distance selling legal minimum and a safe baseline for most sites. Set to your actual policy value on sites with a different window.
  • geo_merchant_return_link (url) — Full URL of the returns and refund policy page. Falls back to {home_url}/returns/ if not set.

build_return_policy() updated (includes/class-locus-woocommerce.php)

  • merchantReturnDays now reads from geo_merchant_return_days ACF options field. Default is 14 (EU/UK distance selling minimum), not the 30 placeholder from earlier versions.
  • merchantReturnLink now reads from geo_merchant_return_link ACF options field. Falls back to {home_url}/returns/ if not set. The previous hardcoded path has been removed.
  • refundType added with value https://schema.org/StoreCreditRefund — reflects that most returns policies offer credit or exchange rather than unconditional full cash refunds. Overridable via the locus/woocommerce/return_policy filter.

1.8.1 - 2026-06-03

Minor update to the WooCommerce schema integration introduced in v1.8.0.

  • Product category FAQ questions now correctly appear on the Belay/Lower-Off and Guides & Books category pages.
  • Schema output for shipping and return policy has been cleaned up to pass structured data validation without warnings.
  • Return policy country is now derived automatically from WooCommerce settings, ensuring the plugin works correctly on any site.

1.8.0 - 2026-06-03

WooCommerce Schema Support
Locus now generates structured schema for WooCommerce product and product category pages, extending its GEO and entity schema capabilities to e-commerce sites.

Product pages
On individual product pages, Locus outputs a complete Product schema node including:

Product name, description, SKU, brand, and category
Product images (main image and gallery images where present)
Offer data including price, currency, stock availability, condition, and seller reference
Variable products - each variation gets its own Offer entry with its specific price, SKU, and stock status
Worldwide shipping declaration
Merchant return policy reference
Product attributes (material, anchor type, breaking strain, certification standards) output as additionalProperty nodes

Product category pages
On product category archive pages, Locus outputs:

A CollectionPage node describing the category, drawing on ACF category description fields where set
An ItemList of products in the category - name, URL, and thumbnail for each product, up to 50 items
A FAQPage with climbing-hardware-specific questions and answers, matched to the category

How it works
The WooCommerce class loads automatically when WooCommerce is active on the site. No configuration is required beyond having Locus activated with a valid licence.

The schema respects all existing Locus output - Organisation, Person, and WebSite entity schema already generated by Locus are not duplicated. All WooCommerce schema fires after the existing Locus entity output.

Currency is always read from the WooCommerce base currency setting - no manual configuration needed.

1.7.3 - 2026-05-28

  • WordPress 7.0 compatibility: replaced hardcoded admin colour with --wp-admin-theme-color CSS variable in sort header hover state.

1.7.2 - 2026-05-19

  • Custom Locus crosshair icon displayed in WordPress admin menu, replacing the generic location dashicon

1.7.1 - 2026-05-19

  • Primary Schema Type field upgraded to Select2 searchable dropdown
  • Schema types grouped with section headers and subtypes indented for clear visual hierarchy
  • Separator rows are non-interactive and cannot be saved as field values

1.7.0 - 2026-05-18

  • Primary Schema Type expanded from 19 to 137 valid schema.org types
  • Full LocalBusiness hierarchy added across 17 groups (Automotive, Food & Drink, Retail, Health & Medical, Home & Construction, etc.)
  • Non-LocalBusiness Organization branches added: Education, NGO, Government, SportsOrganization, PerformingGroup, Corporation, ResearchOrganization, NewsMediaOrganization, WorkersUnion, Consortium
  • geo, openingHoursSpecification, and priceRange suppressed for non-LocalBusiness types
  • priceRange now outputs correctly for all LocalBusiness subtypes, not just the literal LocalBusiness type
  • Schema Map label lookup and unknown-type warning updated to cover all 137 types
  • Migration: Charity remapped to NGO on upgrade

1.6.3 - 2026-05-19

  • areaServed, provider, audience, isRelatedTo, and offers only output on service pages when the schema type supports them
  • SoftwareApplication on existing pages remapped to Service at render time to prevent invalid property output

1.6.2 - 2026-05-19

  • Activation migration remaps WebDesignCompany and MarketingAgency database values to ProfessionalService
  • Schema Map displays human-readable type labels instead of raw schema.org keys
  • Schema Map shows inline warning if an unrecognised business type is detected

1.6.1 - 2026-05-19

  • WebDesignCompany and MarketingAgency removed from Primary Schema Type select (not valid schema.org types)
  • SoftwareApplication removed from service schema type select
  • geo and openingHoursSpecification suppressed when business type is not a LocalBusiness/Place subtype
  • isRelatedTo and hasOfferFrom suppressed when service schema type is SoftwareApplication
  • Related entity types from AI enrichment validated against allowlist; invalid types mapped to Thing
  • AI enrichment prompt updated to remove Concept from entity type options

1.6.0 - 2026-05-18

(Session base version - built on 1.4.0)

1.4.0 - 2026-05-18

  • Sitewide entity schema (class-locus-entity.php): Organisation, Person, and WebSite JSON-LD blocks injected into wp_head
  • Organisation block includes @type, name, legalName, description, logo, address, geo, telephone, email, contactPoint, foundingDate, priceRange, vatID, leiCode, openingHoursSpecification, aggregateRating, knowsAbout, hasOfferCatalog, areaServed, sameAs, subjectOf, founder
  • Person block with jobTitle, description, image, alumniOf, knowsAbout, hasCredential, sameAs
  • WebSite block with SearchAction on front page only
  • Lean areaServed (counties/regions/country) on all pages; full city list injected on homepage only
  • llms.txt and llms-full.txt generation (class-locus-llms.php) with transient caching
    Profile Wizard (class-locus-profile-wizard.php) - Method A (scrape) and Method B (paste) for populating ACF fields via Claude
  • UK places reference data (locus-uk-places.php) for geographic page detection
  • Full ACF options page expansion: Business Entity, Services, Social & Identity, LLMS.txt, Person Entity, and Generation Settings tabs
  • Filters: locus/entity/organisation, locus/entity/person, locus/entity/website, locus/entity/homepage_areas

1.1.2 - 2026-05-18

  • Reliable ACF Pro detection using ACF_PRO constant and ACF_Pro class check
  • admin_menu fallback for late-loading ACF Pro instances

1.1.1 - 2026-05-18

  • Licence credentials (locus_licence_key, locus_licence_status, locus_deactivation_secret) excluded from uninstall - survive reinstallation
  • acf_add_options_page() called directly at boot rather than deferred

1.1.0 - 2026-05-18

  • register_options_page() split from acf/init hook onto direct boot call to resolve timing issues

1.0.9 - 2026-05-18

  • Boot priority raised from 5 to 20 on plugins_loaded to ensure ACF Pro (priority 10) has loaded first

1.0.8 - 2026-05-18

  • ACF Free fallback placeholder page with upgrade prompt
  • acf_pro_ok detection used in dashboard onboarding checklist

1.0.7 - 2026-05-18

  • ACF options page registered under Locus admin menu
  • Dashboard onboarding checklist rewritten

1.0.6 - 2026-05-18

  • Duplicate licence notice removed
  • Admin menu always registers regardless of licence state
  • Stop button added to dashboard Quick Run - finishes current page before halting

1.0.5 - 2026-05-18

  • admin_post handlers moved from register_menu() to Locus_Admin::init() to fix handling on admin-post.php requests
  • Hub URL removed from all user-facing strings
  • Updater rewritten

1.0.4 - 2026-05-18

  • Fixed fatal error on uninstall caused by LOCUS_VERSION constant referenced in class property default

1.0.3 - 2026-05-18

  • Fixed SERVER_URL namespace, all endpoint names, response field names, and placeholder format in licence client

1.0.2 - 2026-05-18

  • Added missing has_key(), status(), and get_info() methods to Locus_Licence

1.0.1 - 2026-05-18

  • Security fixes
  • Fixed syntax error (missing closing brace in register_menu())

1.0.0 - 2026-05-18

  • Initial release
  • WordPress plugin with ACF Pro + Rank Math + Cornerstone/CSAI integration
  • Licence client with HMAC-signed status storage
  • 3-tier Anthropic API key management (global, per-site, per-user)
  • Bulk runner with REST API and per-page progress
  • Page Audit with geo_page_type classification
  • Page-level JSON-LD schema with geographic containedInPlace hierarchy
  • Schema Map with filterable type-to-page-type mapping
  • Rank Math schema suppression
  • FAQ collector for Cornerstone components
  • Update checker with 12-hour transient cache
  • Locus Licence Server 1.0.0: procedural, no WooCommerce dependency, REST endpoints for verify, deactivate, update-check, plugin-info, release; admin UI for licence management, releases, and activity log