Automattic\WooCommerce\StoreApi\Schemas\V1

CartItemSchema::format_variation_data()protectedWC 1.0

Format variation data, for example convert slugs such as attribute_pa_size to Size.

Method of the class: CartItemSchema{}

Hooks from the method

Return

Array.

Usage

// protected - for code of main (parent) or child class
$result = $this->format_variation_data( $variation_data, $product );
$variation_data(array) (required)
Array of data from the cart.
$product(\WC_Product) (required)
Product data.

CartItemSchema::format_variation_data() code WC 7.7.0

protected function format_variation_data( $variation_data, $product ) {
	$return = [];

	if ( ! is_iterable( $variation_data ) ) {
		return $return;
	}

	foreach ( $variation_data as $key => $value ) {
		$taxonomy = wc_attribute_taxonomy_name( str_replace( 'attribute_pa_', '', urldecode( $key ) ) );

		if ( taxonomy_exists( $taxonomy ) ) {
			// If this is a term slug, get the term's nice name.
			$term = get_term_by( 'slug', $value, $taxonomy );
			if ( ! is_wp_error( $term ) && $term && $term->name ) {
				$value = $term->name;
			}
			$label = wc_attribute_label( $taxonomy );
		} else {
			/**
			 * Filters the variation option name.
			 *
			 * Filters the variation option name for custom option slugs.
			 *
			 * @since 2.5.0
			 *
			 * @internal Matches filter name in WooCommerce core.
			 *
			 * @param string $value The name to display.
			 * @param null $unused Unused because this is not a variation taxonomy.
			 * @param string $taxonomy Taxonomy or product attribute name.
			 * @param \WC_Product $product Product data.
			 * @return string
			 */
			$value = apply_filters( 'woocommerce_variation_option_name', $value, null, $taxonomy, $product );
			$label = wc_attribute_label( str_replace( 'attribute_', '', $key ), $product );
		}

		$return[] = [
			'attribute' => $this->prepare_html_response( $label ),
			'value'     => $this->prepare_html_response( $value ),
		];
	}

	return $return;
}