Brand Atlas for WooCommerce
Designer Archives & A–Z Glossaries with Logos
- WP 6.x
- WC 8–9.x
- WPML
- RTL
- GA4
- JSON-LD
- Safe Filter
- Caching
Overview
Brand Atlas adds premium brand browsing to WooCommerce:
- Real brand archives at
/designer/<slug>/(rewrite + page-conflict fallback) - A–Z glossaries (Designers, Safe links, Multi-Tax) with logos and a localized “All” pill
- Safe Shop filtering via nonce (
?ba_brand=&ba_nonce=…) - JSON-LD Brand schema, GA4 events, caching with epoch invalidation
- WPML/Polylang aware links; RTL UI; shortcode-friendly for Elementor/WPBakery
What’s Included
- Plugin folder:
brand-atlas-woo/ - Documentation folder:
documentation/(this site) - Translation template:
languages/brandatlas.pot - WPML String config:
wpml-config.xml
Screenshots








Requirements
- WordPress 6.2+
- WooCommerce 8.x–9.x
- PHP 8.0+ (8.1+ recommended)
- (Optional) WPML or Polylang for multilingual
Installation
- Upload
brand-atlas-wootowp-content/plugins/and Activate. - Go to Settings → Permalinks and click Save.
- Open Brand Atlas → Shortcodes and click Create Page for a Designers page.
- (Optional) Add widgets to Appearance → Widgets → Designer Filters.
Quick Start
- Place
[designer_a2z]on a page (archive links) or[designers_glossary](safe links). - Visit
/designer/<your-brand-slug>/to view the archive. - If you see all products, check Routing.
Settings
| Brand taxonomy | Auto-detected (Woo Brands / PWB / YITH / pa_brand). Override if needed. |
|---|---|
| Rewrite slug | Base for brand archives (default designer). |
| Sidebar on brand archives | Enable the off-canvas “Designer Filters” area. |
| Inline CSS & JS | Print minimal assets only on relevant pages. |
| Glossaries: hide empty | Hide terms without products. |
| Glossary link mode | archive (brand archive) or safe (Shop filter with nonce). |
| Cache TTL | Minutes to keep cached HTML. |
| Custom price filter SQL | Advanced catalogs only; exclude term_taxonomy_ids list. |
| Remove data on uninstall | Delete plugin settings, caches, and pages created by the builder (safe opt-in). |
Shortcodes Reference
[designer_a2z]
| Attribute | Values | Default | Description |
|---|---|---|---|
| hide_empty | yes | no | yes | Hide brands with no products |
| mode | archive | safe | from settings | Link to archive or safe Shop filter |
| heading | text | Designers | Heading above the list |
[designer_a2z hide_empty="yes" mode="archive" heading="Designers"]
[designers_glossary]
| Attribute | Values | Default | Description |
|---|---|---|---|
| hide_empty | yes | no | yes | Hide brands with no products |
[designers_glossary hide_empty="yes"]
[my_glossary]
| Attribute | Values | Default | Description |
|---|---|---|---|
| hide_empty | yes | no | yes | Hide empty terms |
| tax | CSV of taxonomies | category,post_tag,product_cat,pa_brand | Include your brand taxonomy |
| mode | archive | safe | from settings | Applies only to the brand taxonomy within the mix |
[my_glossary hide_empty="yes" tax="category,post_tag,product_cat,pa_brand" mode="archive"]
Brand Archives & Routing
- Rewrite:
/designer/<term>/ → ?{brand_tax}=<term> - If a Page exists at
/designer, WP may parse child URLs as pages. The plugin converts them back to taxonomy queries. - Always Save Permalinks after first activation or when changing the rewrite slug.
Safe Shop Filter
Safe mode produces URLs like /shop/?ba_brand=slug&ba_nonce=…. The main query gets a verified tax_query on brand when viewing the Shop or product archives.
Brand Logos
We read common term meta keys: thumbnail_id, pwb_brand_image, yith_product_brand_logo. Add more via:
add_filter('brandatlas/logo_meta_keys', function($keys){
$keys[] = 'my_brand_logo_id';
return $keys;
});
WPML / Polylang / RTL
- Set your brand taxonomy as Translatable.
- Links localize to the current language; Shop URL uses the localized Shop page.
- “All” pill is localized via String Translation; if missing, we fall back to الكل / همه / سب / הכל in RTL languages.
Glossary UX
- Language-aware A–Z rail (Latin / Arabic / Hebrew)
- Two layouts: single-list (JS filters
li[data-letter]) and sectioned (shows/hides letter sections) - Server renders a localized All pill; JS also inserts a translated pill when needed
Performance & Caching
- Shortcode HTML is cached by language, mode, and taxonomy; invalidated when brands/products change
- Assets render only on relevant pages
- When using a CDN/page cache, purge caches after changing settings
Developer Hooks
Filters
| Hook | Args | Use |
|---|---|---|
brandatlas/designer_filters_enabled | (bool $enabled) | Toggle sidebar on brand archives |
brandatlas/designer_wrap_classes | (string $classes) | Change container classes |
brandatlas/logo_meta_keys | (array $keys) | Add custom logo meta keys |
Actions
| Hook | Args | Use |
|---|---|---|
brandatlas/after_detect | ($winner, $candidates) | React to detection result |
brandatlas/cache/flush | — | Cache epoch bumped; clear custom stores |
Examples
// Disable sidebar on specific theme pages
add_filter('brandatlas/designer_filters_enabled', function($on){
return is_page_template('no-sidebar.php') ? false : $on;
});
// Narrow container width
add_filter('brandatlas/designer_wrap_classes', fn() => 'container container--narrow');
Theme & Builder Compatibility
- Elementor: use the Shortcode widget
- WPBakery: use a Text block
- Theme CSS overrides: scope to
.my-glossary-wrapperand.brandatlas-logos
Troubleshooting
Designer page shows all products
- Save Settings → Permalinks
- Ensure no Page exists at
/designer(or change the rewrite slug) - Try Safe mode links to bypass rewrites
“All” shows in English on Arabic/Hebrew
- We render a localized label via WPML String Translation; if missing, the plugin falls back to الكل / הכל
- Clear page cache/CDN so the new label appears
Brand logos don’t show
- Assign a term image via common meta keys (see Logos)
- Add your custom key using
brandatlas/logo_meta_keys
A–Z filter isn’t working
- Ensure inline JS is enabled (or enqueue the provided
assets/js/frontend.js) - Hard refresh, disable minifier temporarily to test
Some theme styles override the list
- Add a small CSS override scoped to
.my-glossary-wrapper
FAQ
Does it support FooEvents / custom product types?
Yes. Filtering is taxonomy-based on product, so any product type assigned to a brand is included.
Does it add new DB tables?
No. It uses WordPress/WooCommerce core data and term meta only.
Will it slow my site?
Shortcodes are cached and render only where needed; JSON-LD is small; GA4 pushes are optional.
Uninstall & Data Policy
Enable Remove data on uninstall to delete plugin settings, caches, and pages created by the builder. Products and third-party data are untouched. Always flush Permalinks after re-install.
Updating the Plugin
Upload the new ZIP or replace files via SFTP, then purge object/page cache, CDN, and hard refresh (Ctrl/Cmd+Shift+R).
Changelog (short)
- 1.4.0 — Initial marketplace release (archives, glossaries with logos, safe filter, WPML/RTL, JSON-LD, GA4, caching, uninstall toggle, dashboard).
Support
Open a ticket via our helpdesk: https://brandatlas-help.aaa-wa.com/support/
Please include WordPress & WooCommerce versions, PHP version, theme, active plugins, hosting/WAF (Cloudflare/LiteSpeed), steps to reproduce, and any console/network logs.