WC_Product_Importer::get_variation_parent_attributes()protectedWC 1.0

Get variation parent attributes and set "is_variation".

Метод класса: WC_Product_Importer{}

Хуков нет.

Возвращает

Массив.

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

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->get_variation_parent_attributes( $attributes, $parent );
$attributes(массив) (обязательный)
Attributes list.
$parent(WC_Product) (обязательный)
Parent product data.

Код WC_Product_Importer::get_variation_parent_attributes() WC 8.7.0

protected function get_variation_parent_attributes( $attributes, $parent ) {
	$parent_attributes = $parent->get_attributes();
	$require_save      = false;

	foreach ( $attributes as $attribute ) {
		$attribute_id = 0;

		// Get ID if is a global attribute.
		if ( ! empty( $attribute['taxonomy'] ) ) {
			$attribute_id = $this->get_attribute_taxonomy_id( $attribute['name'] );
		}

		if ( $attribute_id ) {
			$attribute_name = wc_attribute_taxonomy_name_by_id( $attribute_id );
		} else {
			$attribute_name = sanitize_title( $attribute['name'] );
		}

		// Check if attribute handle variations.
		if ( isset( $parent_attributes[ $attribute_name ] ) && ! $parent_attributes[ $attribute_name ]->get_variation() ) {
			// Re-create the attribute to CRUD save and generate again.
			$parent_attributes[ $attribute_name ] = clone $parent_attributes[ $attribute_name ];
			$parent_attributes[ $attribute_name ]->set_variation( 1 );

			$require_save = true;
		}
	}

	// Save variation attributes.
	if ( $require_save ) {
		$parent->set_attributes( array_values( $parent_attributes ) );
		$parent->save();
	}

	return $parent_attributes;
}