Automattic\WooCommerce\Internal\CLI\Migrator\Platforms\Webflow

WebflowMapper::map_product_datapublicWC 1.0

Maps a raw Webflow product+SKUs item into the importer's standardized array shape.

Method of the class: WebflowMapper{}

No Hooks.

Returns

Array. Standardized data array.

Usage

$WebflowMapper = new WebflowMapper();
$WebflowMapper->map_product_data( $platform_data ): array;
$platform_data(object) (required)
Webflow product item: { product: { id, fieldData: ... }, skus: [...], _resolved_categories?: [...] }.

WebflowMapper::map_product_data() code WC 11.0.1

public function map_product_data( object $platform_data ): array {
	$product    = $this->extract_product( $platform_data );
	$field_data = $this->extract_field_data( $product );
	$skus       = $this->extract_skus( $platform_data );

	$properties = $this->extract_sku_properties( $field_data );
	// Needs properties AND more than one SKU. A single-SKU product is imported as simple,
	// intentionally dropping its lone option (a one-value attribute adds no variation choice).
	$is_variable = ! empty( $properties ) && count( $skus ) > 1;

	$wc_data = $this->map_basic_fields( $product, $field_data, $is_variable );

	$wc_data['categories'] = $this->should_process( 'categories' ) ? $this->map_categories( $platform_data ) : array();
	$wc_data['tags']       = array();

	$images            = $this->should_process( 'images' ) ? $this->build_images( $field_data, $skus ) : array();
	$wc_data['images'] = $images;

	if ( $is_variable ) {
		$wc_data = array_merge( $wc_data, $this->map_variable_data( $properties, $skus, $images ) );
	} else {
		$wc_data               = array_merge( $wc_data, $this->map_simple_data( $skus ) );
		$wc_data['attributes'] = array();
		$wc_data['variations'] = array();
	}

	$wc_data['metafields'] = $this->map_seo( $field_data );

	return $wc_data;
}