PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.7.1
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.7.1
1.7.1 1.7.0 1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 All 51 releases
← All changes | app/Hooks/Handlers/ShortCodes/ShopAppHandler.php +11 -4 1.7.0 → 1.7.1 View file →
@@ -112,8 +112,9 @@
112 112 'ids' => '',
113 113 'exclude_ids' => '',
114 114 'category' => '',
115 115 'category_id' => '',
116 + 'taxonomies' => '',
116 117 'fulfillment_type' => '',
117 118 'product_type' => '',
118 119 'on_sale' => '',
119 120 'sort_by' => '',
@@ -363,12 +364,18 @@
363 364 $existing = Arr::get($mergedTerms, 'product-categories', []);
364 365 $mergedTerms['product-categories'] = array_unique(array_merge($existing, $categoryTermIds));
365 366 }
366 367
367 - // The former tag= / tag_id= attributes filtered on the product-tags
368 - // taxonomy, which FluentCart does not register (won't-ship decision
369 - // 2026-08-06). They never matched anything — worse, tag_id= filtered
370 - // every product out. Unknown attributes are now simply ignored.
368 + // --- Shortcode attribute: taxonomies="product-tags:1,2|product-brands:67" ---
369 + // Any taxonomy registered on products, including store-registered ones.
370 + foreach (Taxonomy::parseShortcodeTaxonomies($this->shortcodeAttributes['taxonomies']) as $taxonomy => $termIds) {
371 + // A segment that resolved to nothing (unknown taxonomy, foreign or
372 + // missing term) must match nothing — dropping it would widen the
373 + // list to products the shortcode never asked for.
374 + $termIds = $termIds ?: [0];
375 + $existing = Arr::get($mergedTerms, $taxonomy, []);
376 + $mergedTerms[$taxonomy] = array_values(array_unique(array_merge($existing, $termIds)));
377 + }
371 378
372 379 // --- Shortcode attribute: sort_by ---
373 380 if (!empty($this->shortcodeAttributes['sort_by'])) {
374 381 $filters['sort_by'] = sanitize_text_field($this->shortcodeAttributes['sort_by']);