/** * -------------------------------------------------------- * 2. URL PARAMETER NORMALIZER * Converts filter parameters (like maruti_suzuki) → maruti-suzuki * Works for filter_brand, filter_model, filter_fuel-type, etc. * -------------------------------------------------------- */ add_action('init', function() { if ( empty($_GET) ) return; foreach ($_GET as $key => $value) { if (strpos($key, 'filter_') === 0 && !empty($value)) { // Handle multi-value filters (comma-separated) $terms = array_map('trim', explode(',', $value)); $terms = array_map(function($term) { $slug = sanitize_title($term); // Make WP-safe slug $slug = str_replace('_', '-', $slug); // Replace underscores return $slug; }, $terms); $_GET[$key] = implode(',', $terms); } } }); /** * Add normalized filter_* parameters into WooCommerce tax_query. */ add_filter('woocommerce_product_query_tax_query', function ($tax_query, $query) { $map = [ 'filter_brand' => 'pa_brand', 'filter_model' => 'pa_model', 'filter_fuel-type' => 'pa_fuel-type', ]; foreach ($map as $param => $taxonomy) { if (!empty($_GET[$param])) { $terms = explode(',', $_GET[$param]); $tax_query[] = [ 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $terms, ]; } } return $tax_query; }, 20, 2);
No account yet?
Create an Account