Misc fixes: Storefront shop layout, product filter UI improvements, and cart badge styling

This commit is contained in:
Dwindi Ramadhana
2026-06-02 19:37:50 +07:00
parent dcdd6d8cac
commit fd8eb38512
10 changed files with 402 additions and 131 deletions

View File

@@ -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,

View File

@@ -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)