magento 2 regenerate product url php code
please follow the step as i show below
1) backup you database
2) create one controller name Producturl.php
3) copy my code into that controller
<?php
namespace Company\Module\Controller\Producturl;
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
use Magento\Store\Model\Store;
class Producturl extends \Magento\Framework\App\Action\Action
{
public function execute()
{
//// for regenerate product url /////////////////
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$this->collection = $objectManager->create('\Magento\Catalog\Model\ResourceModel\Product\Collection');
$this->productUrlRewriteGenerator = $objectManager->create('\Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator');
$this->urlPersist = $objectManager->create('\Magento\UrlRewrite\Model\UrlPersistInterface');
$this->collection->addAttributeToSelect(['url_path', 'url_key']);
$list = $this->collection->load();
$store_id=1; // your store id
foreach($list as $product) {
if($store_id === Store::DEFAULT_STORE_ID)
$product->setStoreId($store_id);
$this->urlPersist->deleteByData([
UrlRewrite::ENTITY_ID => $product->getId(),
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
UrlRewrite::REDIRECT_TYPE => 0,
UrlRewrite::STORE_ID => $store_id
]);
try {
$this->urlPersist->replace(
$this->productUrlRewriteGenerator->generate($product)
);
} catch(\Exception $e) {
$out->writeln('<error>Duplicated url for '. $product->getId() .'</error>');
}
}
}
}
?>
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment