# woo-mailerlite/3.1.25/includes/common/traits/WooMailerLiteProductVariantsTrait.php

MailerLite – WooCommerce integration, version 3.1.25. 51 lines.

- Page: https://pluginprobe.com/plugins/woo-mailerlite/3.1.25/code/includes/common/traits/WooMailerLiteProductVariantsTrait.php
- Raw: https://pluginprobe.com/plugins/woo-mailerlite/3.1.25/raw/includes/common/traits/WooMailerLiteProductVariantsTrait.php
- Modified: 2026-07-13T09:02:38+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/woo-mailerlite/3.1.25/code/includes/common/traits/WooMailerLiteProductVariantsTrait.php#L10-L20`.

```php
<?php

trait WooMailerLiteProductVariantsTrait
{
    private function getProductVariants($resourceId)
    {
        $product = wc_get_product($resourceId);
        if (!$product || !$product->is_type('variable')) {
            return [];
        }

        $variants = [];
        foreach ($product->get_children() as $variantId) {
            $variant = wc_get_product($variantId);
            if (!$variant) {
                continue;
            }

            $variants[] = [
                'resource_id' => (string) $variant->get_id(),
                'name' => $variant->get_name(),
                'price' => (float) $variant->get_price(),
                'price_type' => 'fixed',
                'attributes' => $this->formatVariantAttributes($variant),
                'image_url' => $this->getVariantImageUrl($variant)
            ];
        }

        return $variants;
    }

    private function getVariantImageUrl($variant)
    {
        if ($variant->get_image_id()) {
            return wp_get_attachment_image_url($variant->get_image_id(), 'full');
        }

        return null;
    }

    private function formatVariantAttributes($variant)
    {
        $attributes = [];
        foreach ($variant->get_attributes() as $key => $value) {
            $attributes[str_replace('pa_', '', $key)] = $value;
        }

        return $attributes;
    }
}

```
