Skip to content

Commit 59162f4

Browse files
committed
ACP2E-84: Mass attribute update creates URL rewrite for wrong store
1 parent 4cc59ff commit 59162f4

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

app/code/Magento/CatalogUrlRewrite/Model/Products/AdaptUrlRewritesToVisibilityAttribute.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,12 @@ public function __construct(
6565
*
6666
* @param array $productIds
6767
* @param int $visibility
68+
* @param int $storeId
6869
* @throws UrlAlreadyExistsException
6970
*/
70-
public function execute(array $productIds, int $visibility): void
71+
public function execute(array $productIds, int $visibility, int $storeId): void
7172
{
72-
$products = $this->getProductsByIds($productIds);
73+
$products = $this->getProductsByIds($productIds, $storeId);
7374

7475
/** @var Product $product */
7576
foreach ($products as $product) {
@@ -110,11 +111,13 @@ public function execute(array $productIds, int $visibility): void
110111
* Get Product Models by Id's
111112
*
112113
* @param array $productIds
114+
* @param int $storeId
113115
* @return array
114116
*/
115-
private function getProductsByIds(array $productIds): array
117+
private function getProductsByIds(array $productIds, int $storeId): array
116118
{
117119
$productCollection = $this->productCollectionFactory->create();
120+
$productCollection->setStoreId($storeId);
118121
$productCollection->addAttributeToSelect(ProductInterface::VISIBILITY);
119122
$productCollection->addAttributeToSelect('url_key');
120123
$productCollection->addFieldToFilter(

app/code/Magento/CatalogUrlRewrite/Observer/ProcessUrlRewriteOnChangeProductVisibilityObserver.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@ public function execute(Observer $observer)
4343
$event = $observer->getEvent();
4444
$attrData = $event->getAttributesData();
4545
$productIds = $event->getProductIds();
46+
$storeIdFromScope = $event->getStoreId();
4647
$visibility = $attrData[ProductInterface::VISIBILITY] ?? 0;
4748

4849
if (!$visibility || !$productIds) {
4950
return;
5051
}
5152

52-
$this->adaptUrlRewritesToVisibility->execute($productIds, (int)$visibility);
53+
$this->adaptUrlRewritesToVisibility->execute($productIds, (int)$visibility, (int)$storeIdFromScope);
5354
}
5455
}

0 commit comments

Comments
 (0)