'product' ) ); $en_fields = array(); $dis_fields = array(); if ( ! empty( $groups ) ) { foreach ( $groups as $key => $group ) { $fields = ywca_filter_fields( acf_get_fields( $group['key'] ) ); if ( ! empty( $fields ) ) { foreach ( $fields as $key => $field ) { if ( in_array( $field['key'], $ywca_settings ) ) { $en_fields[ array_search( $field['key'], $ywca_settings ) ] = $field; } else { $dis_fields[] = $field; } } } } } ksort( $en_fields ); ?>
$field ) { add_action( 'yith_woocompare_field_' . $field, function( $product ) use ( $field ) { $product->fields[ $field ] = ywca_get_field_value( $field, $product->get_id() ); }); } } } } add_action( 'plugins_loaded', 'ywca_fields_values' ); if ( ! function_exists( 'ywca_get_field_value' ) ) { /** * Get proguct field value, format it and return * * @param string $field * @param int $post_id * @return string */ function ywca_get_field_value( $field, $post_id ) { $field_value = get_field( $field, $post_id ) ?: '-'; $field_data = get_field_object( $field ); switch ( $field_data['type'] ) { case 'radio': case 'button': if ( is_array( $field_value ) ) { $value = $field_value['value']; } else { $value = $field_value; } break; case 'select': if ( ! $field_data['return_format'] ) { if ( is_array( $field_value ) ) { $value = $field_value['value']; } else { $value = $field_value; } } else { if ( ! is_array( $field_value ) ) { $value = $field_value; } else { $values = array(); foreach ( $field_value as $f_value ) { if ( is_array( $f_value ) ) { $values[] = $f_value['value']; } else { $values[] = $f_value; } } $value = implode( ', ', $values ); } } break; case 'checkbox': if ( is_array( $field_value ) ) { $values = array(); foreach ( $field_value as $key => $f_value ) { if ( is_array( $f_value ) ) { $values[] = $f_value['value']; } else { $values[] = $f_value; } } $value = implode( ', ', $values ); } else { $value = $field_value; } break; case 'date_picker': case 'date_time_picker': case 'number': case 'time_picker': case 'email': case 'text': case 'textarea': case 'range': case 'wysiwyg': $value = $field_value; break; case 'link': if ( $field_data['return_format'] == 'url' ) { $value = '' . $field_value . ''; } else { $target = ! empty( $field_value['target'] ) ? 'target="_blank"' : ''; $value = '' . $field_value['title'] . ''; } break; case 'page_link': case 'url': $value = '' . $field_value . ''; break; case 'taxonomy': $ids = array(); $values = array(); // Single value if ( $field_data['field_type'] == 'radio' || $field_data['field_type'] == 'select' ) { if ( is_object( $field_value ) ) { $ids[] = $field_value->term_id; } else { $ids[] = $field_value; } } // Multiple values if ( $field_data['field_type'] == 'checkbox' || $field_data['field_type'] == 'multi_select' ) { foreach ( $field_value as $f_value) { if ( is_object( $f_value ) ) { $ids[] = $f_value->term_id; } else { $ids[] = $f_value; } } } foreach ( $ids as $key => $id ) { $term = get_term( $id, $field_data['taxonomy'] ); $values[] = $term->name; } $value = implode( ', ', $values ); break; default: $value = $field_value; break; } return $value; } }