WC_API_Products::get_variation_data()privateWC 2.1

Get an individual variation's data

Method of the class: WC_API_Products{}

No Hooks.

Return

Array.

Usage

// private - for code of main (parent) class only
$result = $this->get_variation_data( $product );
$product(WC_Product) (required)
-

Changelog

Since 2.1 Introduced.

WC_API_Products::get_variation_data() code WC 7.7.0

private function get_variation_data( $product ) {
	$variations = array();

	foreach ( $product->get_children() as $child_id ) {
		$variation = wc_get_product( $child_id );

		if ( ! $variation || ! $variation->exists() ) {
			continue;
		}

		$variations[] = array(
			'id'                => $variation->get_id(),
			'created_at'        => $this->server->format_datetime( $variation->get_date_created(), false, true ),
			'updated_at'        => $this->server->format_datetime( $variation->get_date_modified(), false, true ),
			'downloadable'      => $variation->is_downloadable(),
			'virtual'           => $variation->is_virtual(),
			'permalink'         => $variation->get_permalink(),
			'sku'               => $variation->get_sku(),
			'price'             => wc_format_decimal( $variation->get_price(), 2 ),
			'regular_price'     => wc_format_decimal( $variation->get_regular_price(), 2 ),
			'sale_price'        => $variation->get_sale_price() ? wc_format_decimal( $variation->get_sale_price(), 2 ) : null,
			'taxable'           => $variation->is_taxable(),
			'tax_status'        => $variation->get_tax_status(),
			'tax_class'         => $variation->get_tax_class(),
			'stock_quantity'    => (int) $variation->get_stock_quantity(),
			'in_stock'          => $variation->is_in_stock(),
			'backordered'       => $variation->is_on_backorder(),
			'purchaseable'      => $variation->is_purchasable(),
			'visible'           => $variation->variation_is_visible(),
			'on_sale'           => $variation->is_on_sale(),
			'weight'            => $variation->get_weight() ? wc_format_decimal( $variation->get_weight(), 2 ) : null,
			'dimensions'        => array(
				'length' => $variation->get_length(),
				'width'  => $variation->get_width(),
				'height' => $variation->get_height(),
				'unit'   => get_option( 'woocommerce_dimension_unit' ),
			),
			'shipping_class'    => $variation->get_shipping_class(),
			'shipping_class_id' => ( 0 !== $variation->get_shipping_class_id() ) ? $variation->get_shipping_class_id() : null,
			'image'             => $this->get_images( $variation ),
			'attributes'        => $this->get_attributes( $variation ),
			'downloads'         => $this->get_downloads( $variation ),
			'download_limit'    => (int) $product->get_download_limit(),
			'download_expiry'   => (int) $product->get_download_expiry(),
		);
	}

	return $variations;
}