# sync-basalam/1.10.19/includes/Admin/Product/Data/Handlers/VariableProductHandler.php

ووسلام – همگام سازی ووکامرس و باسلام, version 1.10.19. 42 lines.

- Page: https://pluginprobe.com/plugins/sync-basalam/1.10.19/code/includes/Admin/Product/Data/Handlers/VariableProductHandler.php
- Raw: https://pluginprobe.com/plugins/sync-basalam/1.10.19/raw/includes/Admin/Product/Data/Handlers/VariableProductHandler.php
- Modified: 2026-09-17T09:40:56+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/sync-basalam/1.10.19/code/includes/Admin/Product/Data/Handlers/VariableProductHandler.php#L10-L20`.

```php
<?php

namespace SyncBasalam\Admin\Product\Data\Handlers;

use SyncBasalam\Admin\Product\Data\Services\VariantService;

defined('ABSPATH') || exit;

class VariableProductHandler extends SimpleProductHandler
{
    private $variantService;

    public function __construct()
    {
        parent::__construct();
        $this->variantService = new VariantService();
    }

    public function getVariants($product): array
    {
        return $this->variantService->getVariants($product);
    }

    public function getSku($product): ?string
    {
        $sku = trim((string) $product->get_sku());
        if ($sku !== '') return $sku;

        // Variable products keep their SKUs at variation level (the parent SKU field
        // is usually empty in WooCommerce), so resolve the product-level SKU from
        // the first variation that has one.
        foreach ($product->get_children() as $variationId) {
            $variation = \wc_get_product($variationId);
            if (!$variation) continue;

            $variationSku = trim((string) $variation->get_sku());
            if ($variationSku !== '') return $variationSku;
        }

        return null;
    }
}
```
