На відміну від інших типів продуктів в Magento 2, віртуальні продукти не мають фізичної форми. Це можуть бути подарункові картки, сертифікати, гарантії тощо.
Використання адмін панелі для створення віртуального продукту — не єдиний спосіб. Якщо ви шукаєте альтернативні шляхи, ви можете спробувати створити віртуальний продукт програмно. У цій статті ви дізнаєтесь, як це зробити.
Для того, щоб створити віртуальний продукт у 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('Main Virtual') // Set your sku here
->setName('Virtual Color Product') // 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('virtual') // type of product (simple/virtual/downloadable/configurable)
->setPrice(500) // price of product
->setStockData(
array(
'use_config_manage_stock' => 0,
'manage_stock' => 1,
'is_in_stock' => 1,
'qty' => 200
)
);
// 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 = array(
array(
"sort_order" => 1,
"title" => "Custom Option 1",
"price_type" => "fixed",
"price" => "10",
"type" => "field",
"is_require" => 0
),
array(
"sort_order" => 2,
"title" => "Custom Option 2",
"price_type" => "fixed",
"price" => "20",
"type" => "field",
"is_require" => 0
)
);
foreach ($options as $arrayOption) {
$product->setHasOptions(1);
$product->getResource()->save($product);
$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();
}
Сподіваємось, цей простий метод програмного створення віртуальних продуктів у Magento буде корисним.
Однак, якщо ви хочете мати різноманітний каталог із великим набором товарів, вам також слід навчитися програмно створювати завантажувані продукти, оскільки вони тісно пов’язані з віртуальними продуктами.