Переглядаючи різні , зверніть також увагу на завантажувані продукти. Як випливає з самої назви, це цифрові продукти, які можна завантажувати — книги, програмне забезпечення, відео тощо. Цей тип контенту сьогодні стає все більш популярним. Таким чином ви можете отримати значну вигоду від додавання їх у каталог вашого магазину.

 за допомогою адмін панелі може бути досить складним, оскільки потребує багатьох кроків. На щастя, існує програмний спосіб оптимізації процесу.

Описаний нижче код допоможе вам створити завантажувані продукти в Magento 2 програмно:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get(\Magento\Framework\App\State::class);
$state->setAreaCode('frontend');

try {
$product = $objectManager->create(\Magento\Catalog\Api\Data\ProductInterface::class);
$product
->setSku('sku') // Set your sku here
->setName('Product Name') // Name of Product
->setAttributeSetId(4) // Attribute set id
->setStatus(1) // Status on product enabled/ disabled 1/0
->setWeight(10) // weight of product
->setVisibility(4) // visibilty of product (catalog / search / catalog, search / Not visible individually)
->setTaxClassId(0) // Tax class id
->setTypeId('downloadable') // type of product (simple/virtual/downloadable/configurable)
->setPrice(500) // price of product
->setLinkType('url') // Set Link Type
->setLinkUrl('path of url') // Set Url Link
->setSampleType('url') // Set simple Link Type
->setSampleUrl('url') // Set Simple Url Link
->setStockData(
array(
'use_config_manage_stock' => 0,
'manage_stock' => 1,
'is_in_stock' => 1,
'qty' => 40
)
);

// Adding Image to product
$imagePath = ""; //Set the path of Image for product
$product->addImageToMediaGallery($imagePath, ['image', 'small_image', 'thumbnail'], false, false);
$product->save();

// Adding Custom option to product
$options = [
[
"sort_order" => 1,
"title" => "Field Option",
"price_type" => "fixed",
"price" => "",
"type" => "field",
"is_require" => 0
]
];

$product->setHasOptions(1);
$product->setCanSaveCustomOptions(true);
foreach ($options as $arrayOption) {

$option = $objectManager->create(\Magento\Catalog\Model\Product\Option::class)
->setProductId($product->getId())
->setStoreId($product->getStoreId())
->addData($arrayOption);

$option->save();
$product->addOption($option);
}

echo 'success';

} catch (\Exception $e) {
$objectManager->get(\Psr\Log\LoggerInterface::class)->info($e->getMessage());
echo $e->getMessage();
}

Ось і все! Досить просто, чи не так?

Якщо ви освоїте цей метод, то та стане ще простіше, якщо ви ще не знаєте, як це зробити.