$group_fields ) { foreach ( $group_fields as $key => $field ) { $field_key = $group . '_' . $key; // Hidden fields if ( ! empty( $settings['hidden'][ $field_key ] ) ) { unset( $fields[ $group ][ $key ] ); continue; } // Required override if ( isset( $settings['required'][ $field_key ] ) ) { $fields[ $group ][ $key ]['required'] = (bool) $settings['required'][ $field_key ]; } // Label override if ( ! empty( $settings['labels'][ $field_key ] ) ) { $fields[ $group ][ $key ]['label'] = sanitize_text_field( $settings['labels'][ $field_key ] ); } // Priority (order) override if ( isset( $settings['priority'][ $field_key ] ) ) { $fields[ $group ][ $key ]['priority'] = (int) $settings['priority'][ $field_key ]; } } } return $fields; } public function reorderAddressFields( array $fields ): array { // Sensible default ordering: first name before last name, etc. $order = [ 'first_name' => 10, 'last_name' => 20, 'company' => 30, 'address_1' => 40, 'address_2' => 50, 'city' => 60, 'postcode' => 70, 'state' => 80, 'country' => 90, ]; foreach ( $order as $key => $priority ) { if ( isset( $fields[ $key ] ) ) { $fields[ $key ]['priority'] = $priority; } } return $fields; } }