Automattic\WooCommerce\StoreApi\Schemas\V1

ProductSchema::get_attributes()protectedWC 1.0

Get list of product attributes and attribute terms.

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

Хуков нет.

Возвращает

Массив.

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

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

Код ProductSchema::get_attributes() WC 8.7.0

protected function get_attributes( \WC_Product $product ) {
	$attributes         = array_filter( $product->get_attributes(), [ $this, 'filter_valid_attribute' ] );
	$default_attributes = $product->get_default_attributes();
	$return             = [];

	foreach ( $attributes as $attribute_slug => $attribute ) {
		// Only visible or variation attributes will be exposed by this API.
		if ( ! $attribute->get_visible() && ! $attribute->get_variation() ) {
			continue;
		}

		$terms = $attribute->is_taxonomy() ? array_map( [ $this, 'prepare_product_attribute_taxonomy_value' ], $attribute->get_terms() ) : array_map( [ $this, 'prepare_product_attribute_value' ], $attribute->get_options() );
		// Custom attribute names are sanitized to be the array keys.
		// So when we do the array_key_exists check below we also need to sanitize the attribute names.

		$sanitized_attribute_name = sanitize_key( $attribute->get_name() );

		if ( array_key_exists( $sanitized_attribute_name, $default_attributes ) ) {
			foreach ( $terms as $term ) {
				$term->default = $term->slug === $default_attributes[ $sanitized_attribute_name ];
			}
		}

		$return[] = (object) [
			'id'             => $attribute->get_id(),
			'name'           => wc_attribute_label( $attribute->get_name(), $product ),
			'taxonomy'       => $attribute->is_taxonomy() ? $attribute->get_name() : null,
			'has_variations' => true === $attribute->get_variation(),
			'terms'          => $terms,
		];
	}

	return $return;
}