WC_Meta_Box_Product_Data::prepare_attributes( array $data = false )
Prepare attributes for save.
Description Description
Parameters Parameters
- $data
-
(Optional) Attribute data.
Default value: false
Return Return
(array)
Source Source
File: includes/admin/meta-boxes/class-wc-meta-box-product-data.php
public static function prepare_attributes( $data = false ) { $attributes = array(); if ( ! $data ) { $data = stripslashes_deep( $_POST ); // phpcs:ignore WordPress.Security.NonceVerification.Missing } if ( isset( $data['attribute_names'], $data['attribute_values'] ) ) { $attribute_names = $data['attribute_names']; $attribute_values = $data['attribute_values']; $attribute_visibility = isset( $data['attribute_visibility'] ) ? $data['attribute_visibility'] : array(); $attribute_variation = isset( $data['attribute_variation'] ) ? $data['attribute_variation'] : array(); $attribute_position = $data['attribute_position']; $attribute_names_max_key = max( array_keys( $attribute_names ) ); for ( $i = 0; $i <= $attribute_names_max_key; $i++ ) { if ( empty( $attribute_names[ $i ] ) || ! isset( $attribute_values[ $i ] ) ) { continue; } $attribute_id = 0; $attribute_name = wc_clean( esc_html( $attribute_names[ $i ] ) ); if ( 'pa_' === substr( $attribute_name, 0, 3 ) ) { $attribute_id = wc_attribute_taxonomy_id_by_name( $attribute_name ); } $options = isset( $attribute_values[ $i ] ) ? $attribute_values[ $i ] : ''; if ( is_array( $options ) ) { // Term ids sent as array. $options = wp_parse_id_list( $options ); } else { // Terms or text sent in textarea. $options = 0 < $attribute_id ? wc_sanitize_textarea( esc_html( wc_sanitize_term_text_based( $options ) ) ) : wc_sanitize_textarea( esc_html( $options ) ); $options = wc_get_text_attributes( $options ); } if ( empty( $options ) ) { continue; } $attribute = new WC_Product_Attribute(); $attribute->set_id( $attribute_id ); $attribute->set_name( $attribute_name ); $attribute->set_options( $options ); $attribute->set_position( $attribute_position[ $i ] ); $attribute->set_visible( isset( $attribute_visibility[ $i ] ) ); $attribute->set_variation( isset( $attribute_variation[ $i ] ) ); $attributes[] = apply_filters( 'woocommerce_admin_meta_boxes_prepare_attribute', $attribute, $data, $i ); } } return $attributes; }