WC_Product_CSV_Exporter::prepare_attributes_for_export
Export attributes data.
Method of the class: WC_Product_CSV_Exporter{}
No Hooks.
Returns
null. Nothing (null).
Usage
// protected - for code of main (parent) or child class $result = $this->prepare_attributes_for_export( $product, $row );
- $product(WC_Product) (required)
- Product being exported.
- $row(array) (required) (passed by reference — &)
- Row being exported.
Changelog
| Since 3.1.0 | Introduced. |
WC_Product_CSV_Exporter::prepare_attributes_for_export() WC Product CSV Exporter::prepare attributes for export code WC 10.5.0
protected function prepare_attributes_for_export( $product, &$row ) {
if ( $this->is_column_exporting( 'attributes' ) ) {
$attributes = $product->get_attributes();
$default_attributes = $product->get_default_attributes();
if ( count( $attributes ) ) {
$i = 1;
foreach ( $attributes as $attribute_name => $attribute ) {
/* translators: %s: attribute number */
$this->column_names[ 'attributes:name' . $i ] = sprintf( __( 'Attribute %d name', 'woocommerce' ), $i );
/* translators: %s: attribute number */
$this->column_names[ 'attributes:value' . $i ] = sprintf( __( 'Attribute %d value(s)', 'woocommerce' ), $i );
/* translators: %s: attribute number */
$this->column_names[ 'attributes:visible' . $i ] = sprintf( __( 'Attribute %d visible', 'woocommerce' ), $i );
/* translators: %s: attribute number */
$this->column_names[ 'attributes:taxonomy' . $i ] = sprintf( __( 'Attribute %d global', 'woocommerce' ), $i );
if ( is_a( $attribute, 'WC_Product_Attribute' ) ) {
$row[ 'attributes:name' . $i ] = html_entity_decode( wc_attribute_label( $attribute->get_name(), $product ), ENT_QUOTES );
if ( $attribute->is_taxonomy() ) {
$terms = $attribute->get_terms();
$values = array();
foreach ( $terms as $term ) {
$values[] = $term->name;
}
$row[ 'attributes:value' . $i ] = $this->implode_values( $values );
$row[ 'attributes:taxonomy' . $i ] = 1;
} else {
$row[ 'attributes:value' . $i ] = $this->implode_values( $attribute->get_options() );
$row[ 'attributes:taxonomy' . $i ] = 0;
}
$row[ 'attributes:visible' . $i ] = $attribute->get_visible();
} else {
$row[ 'attributes:name' . $i ] = html_entity_decode( wc_attribute_label( $attribute_name, $product ), ENT_QUOTES );
if ( 0 === strpos( $attribute_name, 'pa_' ) ) {
$option_term = get_term_by( 'slug', $attribute, $attribute_name ); // @codingStandardsIgnoreLine.
$row[ 'attributes:value' . $i ] = $option_term && ! is_wp_error( $option_term ) ? html_entity_decode( str_replace( ',', '\\,', $option_term->name ), ENT_QUOTES ) : html_entity_decode( str_replace( ',', '\\,', $attribute ), ENT_QUOTES );
$row[ 'attributes:taxonomy' . $i ] = 1;
} else {
$row[ 'attributes:value' . $i ] = html_entity_decode( str_replace( ',', '\\,', $attribute ), ENT_QUOTES );
$row[ 'attributes:taxonomy' . $i ] = 0;
}
$row[ 'attributes:visible' . $i ] = '';
}
if ( $product->is_type( ProductType::VARIABLE ) && isset( $default_attributes[ sanitize_title( $attribute_name ) ] ) ) {
/* translators: %s: attribute number */
$this->column_names[ 'attributes:default' . $i ] = sprintf( __( 'Attribute %d default', 'woocommerce' ), $i );
$default_value = $default_attributes[ sanitize_title( $attribute_name ) ];
if ( 0 === strpos( $attribute_name, 'pa_' ) ) {
$option_term = get_term_by( 'slug', $default_value, $attribute_name ); // @codingStandardsIgnoreLine.
$row[ 'attributes:default' . $i ] = $option_term && ! is_wp_error( $option_term ) ? $option_term->name : $default_value;
} else {
$row[ 'attributes:default' . $i ] = $default_value;
}
}
++$i;
}
}
}
}