Misc fixes: Storefront shop layout, product filter UI improvements, and cart badge styling
This commit is contained in:
@@ -356,6 +356,7 @@ class AppearanceController
|
||||
'card_style' => sanitize_text_field($data['layout']['card_style'] ?? 'card'),
|
||||
'aspect_ratio' => sanitize_text_field($data['layout']['aspect_ratio'] ?? 'square'),
|
||||
'card_text_align' => sanitize_text_field($data['layout']['card_text_align'] ?? 'left'),
|
||||
'filter_layout' => sanitize_text_field($data['layout']['filter_layout'] ?? 'basic'),
|
||||
],
|
||||
'elements' => [
|
||||
'category_filter' => (bool) ($data['elements']['category_filter'] ?? true),
|
||||
@@ -588,6 +589,7 @@ class AppearanceController
|
||||
'grid_columns' => '3',
|
||||
'card_style' => 'card',
|
||||
'aspect_ratio' => 'square',
|
||||
'filter_layout' => 'basic',
|
||||
],
|
||||
'elements' => [
|
||||
'category_filter' => true,
|
||||
|
||||
@@ -54,6 +54,14 @@ class ShopController
|
||||
'default' => '',
|
||||
'sanitize_callback' => 'sanitize_text_field',
|
||||
],
|
||||
'min_price' => [
|
||||
'default' => '',
|
||||
'sanitize_callback' => 'sanitize_text_field',
|
||||
],
|
||||
'max_price' => [
|
||||
'default' => '',
|
||||
'sanitize_callback' => 'sanitize_text_field',
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
||||
@@ -106,6 +114,8 @@ class ShopController
|
||||
$slug = $request->get_param('slug');
|
||||
$include = $request->get_param('include');
|
||||
$exclude = $request->get_param('exclude');
|
||||
$min_price = $request->get_param('min_price');
|
||||
$max_price = $request->get_param('max_price');
|
||||
|
||||
$args = [
|
||||
'post_type' => 'product',
|
||||
@@ -152,6 +162,30 @@ class ShopController
|
||||
$args['s'] = $search;
|
||||
}
|
||||
|
||||
// Add price filter
|
||||
if ($min_price !== '' || $max_price !== '') {
|
||||
$price_query = [
|
||||
'key' => '_price',
|
||||
'type' => 'NUMERIC',
|
||||
];
|
||||
|
||||
if ($min_price !== '' && $max_price !== '') {
|
||||
$price_query['compare'] = 'BETWEEN';
|
||||
$price_query['value'] = [(float)$min_price, (float)$max_price];
|
||||
} elseif ($min_price !== '') {
|
||||
$price_query['compare'] = '>=';
|
||||
$price_query['value'] = (float)$min_price;
|
||||
} else {
|
||||
$price_query['compare'] = '<=';
|
||||
$price_query['value'] = (float)$max_price;
|
||||
}
|
||||
|
||||
if (!isset($args['meta_query'])) {
|
||||
$args['meta_query'] = [];
|
||||
}
|
||||
$args['meta_query'][] = $price_query;
|
||||
}
|
||||
|
||||
$query = new \WP_Query($args);
|
||||
|
||||
// Check if this is a single product request (by slug)
|
||||
|
||||
Reference in New Issue
Block a user