Documentation
Everything you need to set up, configure, and customize Woo Filter Studio for your WooCommerce store.
Installation
- Download the plugin
.zipfile from CodeCanyon. - Go to WordPress Admin → Plugins → Add New → Upload Plugin.
- Choose the zip file and click Install Now.
- Activate the plugin.
- Navigate to WooCommerce → Woo Filter Studio to configure.
WooCommerce must be installed and active before activating Woo Filter Studio.
Requirements
Quick Start
- Install & activate the plugin (see above).
- Go to Woo Filter Studio → Settings and toggle which filter types to show.
- Go to Woo Filter Studio → Styling and pick a skin preset.
- Visit your Shop page — filters appear automatically in a sidebar.
Filters automatically appear on WooCommerce shop and product archive pages. No shortcode needed for the default shop.
Filter Types
Woo Filter Studio provides eight filter types that work together. Each can be independently enabled or disabled from the admin settings.
| Filter | Type | Description |
|---|---|---|
| Category | Single-select | Filter by WooCommerce product category |
| Brand | Multi-select | Brand taxonomy filter (pa_brand, product_brand, or brand) |
| Color | Multi-select | Color swatches (pa_color or color) |
| Custom Attributes | Multi-select | Any WooCommerce pa_* attribute taxonomy |
| Price Range | Slider | Dual-handle min/max price slider with text inputs |
| Rating | Radio | Minimum star rating (1–5 stars) |
| In Stock | Checkbox | Show only in-stock products |
| On Sale | Checkbox | Show only products currently on sale |
Category Filter
Displays product categories as radio buttons for single-select filtering. The selected category is applied via the wf_cat URL parameter.
Brand & Color Filters
The plugin auto-detects brand and color taxonomies in this order:
- Brand:
pa_brand→product_brand→brand - Color:
pa_color→color
Colors render as visual swatches. Both support multi-select with checkboxes.
Custom Attribute Filters
Any WooCommerce product attribute (e.g., pa_size, pa_material) is automatically detected and rendered as a multi-select checkbox filter. No configuration needed — just create the attribute in WooCommerce and assign it to products.
Price Range
A dual-handle slider with synced min/max text inputs. Updates the query in real time via AJAX as customers drag the handles. Uses min_price and max_price URL parameters.
Customer Rating
Radio buttons for minimum star rating (1–5). Uses the rating_filter URL parameter. Ideal for stores with review-driven purchasing.
Availability
Two checkbox filters:
- In Stock — shows only products with stock status
instock - On Sale — shows only products currently on sale
AND / OR Logic
When multiple values are selected within a filter (e.g., two brands), the logic mode controls how they combine:
| Mode | URL | Behavior |
|---|---|---|
| OR (default) | wf_logic=or | Products matching any selected value |
| AND | wf_logic=and | Products matching all selected values |
Shortcode
Use the [woo_filters] shortcode to place filters and a product grid on any page or Elementor widget.
// Basic usage
[woo_filters]
// With all attributes
[woo_filters
per_page="12"
columns="3"
category="electronics"
show_filters="yes"
show_pagination="yes"
]Shortcode
Attributes
| Attribute | Default | Description |
|---|---|---|
per_page | 12 | Number of products per page (max 120) |
columns | 4 | Product grid columns (1–6) |
category | none | Pre-filter by category slug |
show_filters | yes | Show the filter sidebar (yes / no) |
show_pagination | yes | Show pagination controls (yes / no) |
Examples
Show 20 products in 3 columns, electronics only
[woo_filters per_page="20" columns="3" category="electronics"]
Product grid without filters
[woo_filters show_filters="no" columns="4"]
Minimal grid, no pagination
[woo_filters per_page="6" columns="3" show_pagination="no"]
URL Parameters
Every filter combination generates a unique, shareable URL. Customers can bookmark or share filtered views.
| Parameter | Type | Example |
|---|---|---|
wf_cat | string (slug) | wf_cat=shoes |
wf_brand[] | array | wf_brand[]=apple&wf_brand[]=samsung |
wf_color[] | array | wf_color[]=red&wf_color[]=blue |
wf_logic | string | wf_logic=and |
min_price | decimal | min_price=25 |
max_price | decimal | max_price=150 |
rating_filter | int (1–5) | rating_filter=4 |
wf_in_stock | flag | wf_in_stock=1 |
wf_on_sale | flag | wf_on_sale=1 |
wf_attr_*[] | array | wf_attr_size[]=large |
wf_per_page | int | wf_per_page=40 |
Full example URL
/shop?wf_cat=shoes&wf_brand[]=nike&min_price=50&max_price=200&rating_filter=4&wf_in_stock=1URL
Filter Visibility Settings
Navigate to Woo Filter Studio → Settings to toggle individual filter types on or off.
| Option | Key | Default |
|---|---|---|
| Show Categories | show_categories | yes |
| Show Brands | show_brands | yes |
| Show Price Range | show_price | yes |
| Show Rating | show_rating | yes |
| Show Availability | show_availability | yes |
| Show Colors | show_colors | yes |
| Delete data on uninstall | delete_data_on_uninstall | no |
Style & Skins
Navigate to Woo Filter Studio → Styling to customize the appearance.
Preset Skins
Select a skin to apply its preset colors, then fine-tune individual values below.
Color Settings
| Setting | CSS Variable | Default (Classic) |
|---|---|---|
| Accent Color | --wf-accent | #0b6a78 |
| Sidebar Background | --wf-sidebar-bg | #ffffff |
| Sidebar Border | --wf-sidebar-border | #e5e8ee |
| Heading Color | --wf-heading-color | #1f2937 |
| Text Color | --wf-text-color | #1f2937 |
| Muted Text | --wf-muted-text | #64748b |
| Chip Background | --wf-chip-bg | #ffffff |
| Chip Border | --wf-chip-border | #c7d5e3 |
| Button Background | --wf-button-bg | #4b5563 |
| Button Text | --wf-button-text | #ffffff |
| Input Background | --wf-input-bg | #ffffff |
| Control Border | --wf-control-border | #cbd5e1 |
| No Results BG | --wf-empty-bg | #ffffff |
| No Results Border | --wf-empty-border | #dbe2ea |
| No Results Shadow | --wf-empty-shadow | #0f172a |
Typography & Layout
| Setting | CSS Variable | Default | Range |
|---|---|---|---|
| Font Family | --wf-font-family | inherit | — |
| Font Size | --wf-font-size | 16px | 10–48 |
| Sidebar Width | --wf-sidebar-width | 280px | 180–600 |
| Sidebar/Product Gap | --wf-layout-gap | 24px | 0–80 |
| Section Spacing | --wf-section-spacing | 18px | 0–60 |
| Sidebar Radius | --wf-sidebar-radius | 14px | 0–60 |
| Control Radius | --wf-control-radius | 10px | 0–60 |
| Button Radius | --wf-button-radius | 12px | 0–60 |
Custom CSS
Add custom CSS in Styling → Custom CSS. The CSS is output inline on the frontend.
/* Example: wider sidebar on desktop */
.wf-shop-layout {
--wf-sidebar-width: 320px;
}
/* Example: round filter chips */
.wf-chip {
border-radius: 100px;
}CSS
CSS Variables Reference
All styling is driven by CSS custom properties on .wf-shop-layout. Override them in your theme or Custom CSS field:
.wf-shop-layout {
--wf-accent: #0b6a78;
--wf-sidebar-bg: #ffffff;
--wf-sidebar-border: #e5e8ee;
--wf-heading-color: #1f2937;
--wf-text-color: #1f2937;
--wf-muted-text: #64748b;
--wf-chip-bg: #ffffff;
--wf-chip-border: #c7d5e3;
--wf-button-bg: #4b5563;
--wf-button-text: #ffffff;
--wf-input-bg: #ffffff;
--wf-control-border: #cbd5e1;
--wf-font-family: inherit;
--wf-font-size: 16px;
--wf-sidebar-width: 280px;
--wf-layout-gap: 24px;
--wf-sidebar-radius: 14px;
--wf-control-radius: 10px;
--wf-button-radius: 12px;
--wf-section-spacing: 18px;
--wf-empty-bg: #ffffff;
--wf-empty-border: #dbe2ea;
--wf-empty-shadow: #0f172a;
}CSS Variables
Analytics Dashboard
Navigate to Woo Filter Studio → Analytics to see how customers use your filters.
Tracked Metrics
- Total Events — cumulative count of filter applications
- Distinct Values — unique filter combinations used
- Last Event — timestamp of the most recent filter usage
What Gets Tracked
Every filter interaction on shop archive pages is recorded:
- Category selections (
wf_cat) - Brand selections (
wf_brand) - Color selections (
wf_color) - Logic mode (
wf_logic) - Price range (
min_price,max_price) - Rating selections (
rating_filter) - Stock / Sale flags
- Custom attributes (
wf_attr_*)
Data Storage
- Stored natively in
wp_options— no external services - Events are batched (flushed after 10 events or 5 minutes)
- Top 500 distinct values per filter type are retained
- One-click reset button to clear all analytics data
Analytics data stays in your WordPress database. No data is sent externally. GDPR-friendly by design.
CSS Class Hooks
Use these classes in your custom CSS or JavaScript to target specific elements:
| Class | Element |
|---|---|
.wf-shop-layout | Main layout wrapper (has all CSS variables) |
.wf-sidebar | Filter sidebar container |
.wf-products | Product grid wrapper |
.wf-filter-form | Filter form element |
.wf-filter-block | Individual filter section |
.wf-chip | Active filter chip |
.wf-chip-list | Active filter chips container |
.wf-active-filters | Active filters section in sidebar |
.wf-top-active-filters | Active filters strip above products |
.wf-clear-all | Clear all filters link |
.wf-price-slider | Price range slider |
.wf-price-track | Price slider visual track |
.wf-price-grid | Min/max price input fields |
.wf-actions | Form buttons container |
.wf-btn | Button base class |
.wf-btn-primary | Primary action button |
.wf-btn-secondary | Secondary action button |
.wf-no-results | No products found card |
.wf-filter-toggle | Mobile filter drawer button |
.wf-sidebar-overlay | Mobile backdrop overlay |
.wf-sidebar-close | Mobile sidebar close button |
.wf-per-page | Per-page switcher |
.wf-option-search | Filter option search input (shown when >7 options) |
.wf-shortcode-layout | Added when rendered via shortcode |
HTML Structure
Archive page layout
.wf-shop-layout
├── .wf-filter-toggle // mobile button
├── .wf-sidebar-overlay // mobile backdrop
├── .wf-sidebar
│ ├── .wf-sidebar-close
│ └── .wf-filter-form
│ ├── .wf-active-filters
│ ├── .wf-filter-block // repeated
│ └── .wf-actions
└── .wf-products
├── .wf-top-active-filters
├── .wf-per-page
└── WooCommerce product loopStructure
Cache & Performance
- Filter metadata is cached using the
wf_shop_filterscache group. - Cache is automatically invalidated when products are created, updated, trashed, or deleted.
- Term/taxonomy changes (create, edit, delete, reassign) also trigger invalidation.
- Stock status changes invalidate the cache.
If you use an object cache plugin (Redis, Memcached), filter data will be stored there for even faster retrieval.
Data Management
The plugin stores three option keys in the WordPress database:
| Option Key | Data |
|---|---|
wf_filter_options | Filter visibility settings |
wf_style_options | Styling configuration |
wf_analytics_data | Analytics statistics |
If Delete data on uninstall is enabled in Settings, all plugin data will be permanently removed when the plugin is deleted. This is off by default.
Compatibility
| Platform | Version |
|---|---|
| WordPress | 6.0 – 6.8+ |
| WooCommerce | 7.0 – 10.0+ |
| PHP | 7.4+ |
| WooCommerce HPOS | Compatible |
| Cart/Checkout Blocks | Compatible |
| Elementor | Shortcode ready |