diff --git a/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php b/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php index 7e6693ce68ef..375945acedcd 100644 --- a/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php +++ b/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php @@ -399,8 +399,8 @@ protected function getConditions() ? $this->getData('conditions_encoded') : $this->getData('conditions'); - if ($conditions) { - $conditions = $this->conditionsHelper->decode($conditions); + if (is_string($conditions)) { + $conditions = $this->decodeConditions($conditions); } foreach ($conditions as $key => $condition) { @@ -580,4 +580,16 @@ private function getWidgetPagerBlockName() return $pagerBlockName . '.' . $pageName; } + + /** + * Decode encoded special characters and unserialize conditions into array + * + * @param string $encodedConditions + * @return array + * @see \Magento\Widget\Model\Widget::getDirectiveParam + */ + private function decodeConditions(string $encodedConditions): array + { + return $this->conditionsHelper->decode(htmlspecialchars_decode($encodedConditions)); + } }