Support » Plugin: Product Filter by WBW » Filter by Height and Width
Filter by Height and Width
-
Is there a way to filter by the product’s height and width, with the ability to set min and max values?
If not, how would you suggest I go about adding this functionality in with code?
-
I tried the following but it only works when there are no WooBeWoo filters selected. This is in a
pre_get_posts
action function I created.$min_width = $_GET['width_min'] ?? false; $max_width = $_GET['width_max'] ?? false; if ($min_width !== false && $max_width !== false) { $width_query = array( 'key' => '_width', 'compare' => 'BETWEEN', 'value' => array(intval($min_width), intval($max_width)), 'type' => 'NUMERIC', ); array_push($meta_query, $width_query); $query->set( 'meta_query', $meta_query ); }
-
This reply was modified 1 year, 5 months ago by
jordanwebdev.
-
This reply was modified 1 year, 5 months ago by
jordanwebdev.
-
This reply was modified 1 year, 5 months ago by
jordanwebdev.
Not sure if this is related.
Undefined variable $keyData
(woo-product-filter/modules/meta/models/meta.php:164). This error happens on the shop page even when no filters are selected.Got it working with the following. I added a form for this on the front end, which submits values that are retrieved here using $_GET.
Of course it would be nice if this was a part of the plugin :).
Note that I’m using decimal casting because sometimes a value of 0 was set for the height/width, which is incorrect. So I used 0.01 instead of 0 for the min.
add_filter('get_meta_sql','cast_decimal_precision'); function cast_decimal_precision( $array ) { $array['where'] = str_replace('DECIMAL','DECIMAL(10,3)',$array['where']); return $array; }
// Width Query $min_width = $_GET['width_min'] ?? false; $max_width = $_GET['width_max'] ?? false; if ($min_width !== false && $max_width !== false) { $min = intval($min_width) === 0 ? 0.01 : $min_width; $width_query = array( 'key' => '_width', 'value' => array($min, intval($max_width)), 'compare' => 'BETWEEN', 'type' => 'DECIMAL', ); $meta_query[] = $width_query; } // Height Query $min_height = $_GET['height_min'] ?? false; $max_height = $_GET['height_max'] ?? false; if ($min_height !== false && $max_height !== false) { $min = intval($min_height) === 0 ? 0.01 : $min_height; $height_query = array( 'key' => '_height', 'value' => array($min, intval($max_height)), 'compare' => 'BETWEEN', 'type' => 'DECIMAL', ); $meta_query[] = $height_query; }
Hello @jordanwebdev,
Thank you for your hard work and feedback.
Similar functionality can be obtained using the WooCommerce Product Filter by WooBeWoo plugin PRO version.To do this, you need to create an attribute filter based on meta data: https://woobewoo.com/documentation/filter-by-custom-meta-field/
And then select the “Slider” display form: https://woobewoo.com/documentation/attribute-filter-settings/
This way you get a meta data filter with max and min values.
Awesome. Does that $49 1 site license plan include unlimited updates?
Unfortunately, it is forbidden to discuss paid content on this site, please contact our support team: https://woobewoo.com/contact-us/
Hey Jordan,
I’m looking to have the same functionality as you. Did this plugin work for you?I didn’t update to pro. Ended up creating my own custom functionality (see above). I created my own custom form for dimensions below the filters.
-
This reply was modified 1 year, 5 months ago by
- The topic ‘Filter by Height and Width’ is closed to new replies.