WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика
функция не описана

Automattic\WooCommerce\Blocks\StoreApi\Schemas

ProductSchema::get_variations() protected WC 1.0

Get variation IDs and attributes from the DB.

{} Это метод класса: ProductSchema{}

Хуков нет.

Возвращает

Null. Ничего.

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->get_variations( \WC_Product $product );
$product(\WC_Product) (обязательный)
Product instance.

Код ProductSchema::get_variations() WC 4.7.1

<?php
protected function get_variations( \WC_Product $product ) {
	if ( ! $product->is_type( 'variable' ) ) {
		return [];
	}
	global $wpdb;

	$variation_ids               = $product->get_visible_children();
	$attributes                  = array_filter( $product->get_attributes(), [ $this, 'filter_variation_attribute' ] );
	$default_variation_meta_data = array_reduce(
		$attributes,
		function( $defaults, $attribute ) use ( $product ) {
			$meta_key              = wc_variation_attribute_name( $attribute->get_name() );
			$defaults[ $meta_key ] = [
				'name'  => wc_attribute_label( $attribute->get_name(), $product ),
				'value' => null,
			];
			return $defaults;
		},
		[]
	);

	// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
	$variation_meta_data = $wpdb->get_results(
		"
		SELECT post_id as variation_id, meta_key as attribute_key, meta_value as attribute_value
		FROM {$wpdb->postmeta}
		WHERE post_id IN (" . implode( ',', array_map( 'esc_sql', $variation_ids ) ) . ")
		AND meta_key IN ('" . implode( "','", array_map( 'esc_sql', array_keys( $default_variation_meta_data ) ) ) . "')
	"
	);
	// phpcs:enable

	$attributes_by_variation = array_reduce(
		$variation_meta_data,
		function( $values, $data ) {
			$values[ $data->variation_id ][ $data->attribute_key ] = $data->attribute_value;
			return $values;
		},
		array_fill_keys( $variation_ids, [] )
	);

	$variations = [];

	foreach ( $variation_ids as $variation_id ) {
		$attribute_data = $default_variation_meta_data;

		foreach ( $attributes_by_variation[ $variation_id ] as $meta_key => $meta_value ) {
			if ( '' !== $meta_value ) {
				$attribute_data[ $meta_key ]['value'] = $meta_value;
			}
		}

		$variations[] = (object) [
			'id'         => $variation_id,
			'attributes' => array_values( $attribute_data ),
		];
	}

	return $variations;
}