Wie Igor bereits erwähnt hat, können Sie Folgendes versuchen. Erstellen Sie zunächst eine geplante Aktualisierungsinstanz und legen Sie den Namen sowie die Start- und Endzeit fest.
/**
* @var \Magento\Staging\Api\UpdateRepositoryInterface
*/
protected $updateRepository;
/**
* @var \Magento\Staging\Api\Data\UpdateInterfaceFactory
*/
protected $updateFactory;
/**
* @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
*/
protected $localeDate;
/**
* @var \Magento\Catalog\Api\ProductRepositoryInterface
*/
protected $productRepository;
/**
* @var \Magento\CatalogStaging\Api\ProductStagingInterface
*/
protected $productStaging;
/**
* @var \Magento\Staging\Model\VersionManager
*/
protected $versionManager;
/**
* @param \Magento\Staging\Api\UpdateRepositoryInterface $updateRepositoryInterface
* @param \Magento\Staging\Api\Data\UpdateInterfaceFactory $updateFactory
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
* @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepositoryInterface
* @param \Magento\CatalogStaging\Api\ProductStagingInterface $productStagingInterface
* @param \Magento\Staging\Model\VersionManagerFactory $versionManagerFactory
*/
public function __construct(
\Magento\Staging\Api\UpdateRepositoryInterface $updateRepositoryInterface,
\Magento\Staging\Api\Data\UpdateInterfaceFactory $updateFactory,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
\Magento\Catalog\Api\ProductRepositoryInterface $productRepositoryInterface,
\Magento\CatalogStaging\Api\ProductStagingInterface $productStagingInterface,
\Magento\Staging\Model\VersionManagerFactory $versionManagerFactory
){
$this->updateRepository = $updateRepositoryInterface;
$this->updateFactory = $updateFactory;
$this->localeDate = $localeDate;
$this->productRepository = $productRepositoryInterface;
$this->productStaging = $productStagingInterface;
$this->versionManager = $versionManagerFactory->create();
}
/** @var \Magento\Staging\Api\Data\UpdateInterface $schedule */
$schedule = $this->updateFactory->create();
$schedule->setName("test update");
$timestampStart = $this->localeDate->scopeTimeStamp() + 3600;
$date = new \DateTime('@' . $timestampStart, new \DateTimeZone('UTC'));
$schedule->setStartTime($date->format('Y-m-d H:i:s'));
$timestampEnd = $timestampStart + (60 * 60 * 24);
$date = new \DateTime('@' . $timestampEnd, new \DateTimeZone('UTC'));
$schedule->setEndTime($date->format('Y-m-d H:i:s'));
Wenn Sie das Enddatum nicht festlegen, wird die geplante Aktualisierung auf unbestimmte Zeit ausgeführt. Speichern Sie am Ende das geplante Update und legen Sie die Version fest.
// @var \Magento\Staging\Api\Data\UpdateInterface
$stagingRepo = $this->updateRepository->save($schedule);
$this->versionManager->setCurrentVersionId($stagingRepo->getId());
Erstellen Sie als Nächstes Produktupdates
$repository = $this->productRepository;
$product = $repository->get('239487');
$name = $product->getName();
$product->setName($name . " - New");
$price = $product->getPrice();
$product->setSpecialPrice($price - 10);
Der letzte Schritt besteht darin, Produktaktualisierungen zu planen
$this->productStaging->schedule($product, $stagingRepo->getId());
Ich schrieb ein kleines Beispiel und es kann gefunden werden hier