$value) { $key = 'addon-' . sanitize_title( $value['field_name'] ); if(is_array($_POST[$key]) && $value['type'] == 'checkbox') { foreach ($_POST[$key] as $id => $checked) { if ($checked == true) { $_POST[$key][$id] = sanitize_title($value['options'][$id]['label']); $_REQUEST[$key][$id] = $_POST['addon-30-gift-package-0'][$id]; } } } } } /** * @param array $fields * @param WC_Product $product * * @return array|mixed|void */ public function product_fields($fields,$product ) { $product_addons = WC_Product_Addons_Helper::get_product_addons( $product->get_id() ); $field = array(); foreach ( $product_addons as $addon => $value ) { if($value['type']=='multiple_choice'){ $value['type']= 'select'; $product_addons[$addon]['type']='select'; } if( ! in_array( $value['type'], array( 'select', 'radiobutton', 'custom', 'custom_letters_or_digits', 'custom_letters_only', 'custom_textarea', 'custom_text', 'custom_digits_only', 'custom_email', 'custom_price', 'input_multiplier', 'checkbox', ), true ) ) { continue; } $required = ( $value['required'] === 1 || $value['required'] === '1' ); if ( $value['type'] === 'select' || $value['type'] === 'radiobutton' ) { $key = 'addon-' . sanitize_title( $value['field_name'] ); $field[ $key ]['required'] = $required; $field[ $key ]['label'] = $value['name']; $field[ $key ]['type'] = 'select'; $field[ $key ]['options'] = array(); $loop = 0; foreach ( $value['options'] as $option ) { $loop ++; if ( $value['type'] === 'radiobutton' ) { $option_value = sanitize_title( $option['label'] ); } else { $option_value = sanitize_title( $option['label'] ) . '-' . $loop; } $field[ $key ]['options'][ $option_value ] = $option['label']; if ( ! empty( $option['price'] ) && $option['price'] > 0 ) { $field[ $key ]['options'][ $option_value ] .= ' (' . APPMAKER_WC_Helper::get_display_price( $option['price'] ) . ') '; } } } else { foreach ( $value['options'] as $id => $option ) { if ( $value['type'] === 'checkbox' ) { $key = 'addon-' . sanitize_title( $value['field_name'] ) . "[$id]"; } else { $option_key = empty( $option['label'] ) ? $id : sanitize_title( $option['label'] ); $key = 'addon-' . sanitize_title( $value['field_name'] ); } $field[ $key ]['required'] = $required; $field[$key]['value'] = sanitize_title($option['label']); $field[ $key ]['label'] = ! empty( $option['label'] ) ? $option['label'] : $value['name']; if ( ! empty( $option['price'] ) && $option['price'] > 0 ) { $field[ $key ]['label'] .= ' (' . APPMAKER_WC_Helper::get_display_price( $option['price'] ) . ') '; } switch ( $value['type'] ) { case 'custom' : case 'custom_letters_or_digits' : case 'custom_text' : case 'custom_letters_only' : $field[ $key ]['type'] = 'text'; break; case 'custom_textarea' : $field[ $key ]['type'] = 'textarea'; break; case 'custom_digits_only' : $field[ $key ]['type'] = 'number'; break; case 'custom_email' : $field[ $key ]['type'] = 'email'; break; case 'custom_price' : case 'input_multiplier' : $field[ $key ]['type'] = 'number'; break; case 'checkbox' : $field[ $key ]['type'] = 'checkbox'; break; } } } } if(!empty($fields) && !empty($field)) { $field = APPMAKER_WC_Dynamic_form::get_fields($field, 'product'); $fields['items'] = array_merge($fields['items'], $field['items']); $fields['order'] = array_merge($fields['order'], $field['order']); $fields['dependencies'] = array_merge($fields['dependencies'], $field['dependencies']); return $fields; }else if(!empty($field)){ $fields = APPMAKER_WC_Dynamic_form::get_fields($field, 'product'); return $fields; } else{ return $fields; } } } new APPMAKER_WC_Product_Addons();