You should use this plugin   to add snippets   (otherwise you should create child theme  and put code to  functions.php )

Following plugins supported: Checkout Add-ons, PDF Product Vouchers, Woocommerce Subscriptions, WooCommerce Bookings, WooCommerce Product Vendors, Local Pickup Plus, FooEvents, Tickera, WooCommerce Box Office, Shipping Multiple Addresses, WooCommerce TM Extra Product Options (as column), WooCommerce TM Extra Product Options (as product rows)

WooCommerce PDF Invoices & Packing Slips

// add Credit Note details
add_filter('woe_get_order_fields', 'woe_add_order_fields');
function woe_add_order_fields($fields) {
	$fields['credit_note_number'] = array( 'label' => 'Credit Note Number', 'colname' => 'Credit Note Number', 'checked' => 1 );
	$fields['credit_note_date'] = array( 'label' => 'Credit Note Date', 'colname' => 'Credit Note Date', 'checked' => 1 );
	$fields['credit_note_date_formatted'] = array( 'label' => 'Formatted Credit Note Date', 'colname' => 'Formatted Credit Note Date', 'checked' => 1 );
	return $fields;
}
add_filter('woe_get_order_value_credit_note_number', 'woe_get_credit_note_field', 10, 3);
add_filter('woe_get_order_value_credit_note_date', 'woe_get_credit_note_field', 10, 3);
add_filter('woe_get_order_value_credit_note_date_formatted', 'woe_get_credit_note_field', 10, 3);
function woe_get_credit_note_field($value,$order, $field) {
	 $refunds = $order->get_refunds();
 	 if ( !empty( $refunds ) )  // take 1st!
		$value = get_post_meta( $refunds[0]->id, '_wcpdf_'.$field, true);
	return $value;
}

WooCommerce Checkout Add-ons

// "Checkout Add-ons" plugin
class WOE_Checkout_Addons_Mod {
	var $fields = array('Student Name','Student Grade Lavel','Teacher Name');// edit this line!!
	function __construct() {
		add_filter('woe_get_order_fields', array($this,'add_order_fields') );
		add_action('woe_order_export_started', array($this,'get_fee_details') );
		add_filter('woe_fetch_order_row', array($this,'fill_new_columns'), 10, 2);
	}
	
	function add_order_fields($fields) {
		foreach($this->fields as $pos=>$name) {
			$fields['fee_addon_'.$pos] = array('segment'=>'other','label'=>$name, 'colname'=>$name,'checked'=>1);
		}	
		return $fields;
	}
	
	function get_fee_details($order_id) {
		$this->fee_data = array();
		
		$order = new WC_Order($order_id);
		foreach($order->get_items("fee") as $item_id=>$item) {
			$pos = array_search($item['name'],$this->fields);
			if( $pos  !== false) {
				$item_meta = $order->get_item_meta( $item_id );
				$this->fee_data[$pos] = join(", ", $item_meta['_wc_checkout_add_on_value']); // many values?
			}
		}
		return $order_id; 
	}
	
	// add new values to row
	function fill_new_columns($row,$order_id) {
		foreach($this->fields as $pos=>$name) {
			if(isset($row['fee_addon_'.$pos]) AND isset($this->fee_data[$pos]) )
				$row['fee_addon_'.$pos] = $this->fee_data[$pos] ;
		}		
		return $row;
	}
}
new WOE_Checkout_Addons_Mod();

PDF Product Vouchers

// Export product "Vouchers"
class WOE_Product_Vouchers {
	function __construct() {
	
		// add new fields
		add_filter('woe_get_order_product_fields', function ($fields,$format) {
			$fields['voucher_number'] = array( 'label' => 'Voucher Number', 'colname' => 'Voucher Number', 'checked' => 1 );
			$fields['voucher_value'] = array( 'label' => 'Voucher Value', 'colname' => 'Voucher Value', 'checked' => 1);
			$fields['voucher_value_incl_tax'] = array( 'label' => 'Voucher Value (+Tax)', 'colname' => 'Voucher Value(+Tax)', 'checked' => 1);
			$fields['voucher_recipient_name'] = array( 'label' => 'Recipient Name', 'colname' => 'Recipient Name', 'checked' => 1 );
			$fields['voucher_message'] = array( 'label' => 'Message', 'colname' => 'Message', 'checked' => 1 );
			return $fields;
		}, 10, 2);
		
		// get voucher for item
		add_action( "woe_get_order_product_item", function ($item) {
			$this->voucher = false;
			$voucher_meta = $item->get_meta( '_voucher_id', false );
			if( $voucher_meta ) 
				$this->voucher = wc_pdf_product_vouchers_get_voucher( $voucher_meta[0]->value );
		});
		
		// just return fields 
		add_filter('woe_get_order_product_value_voucher_number', function ($value,$order, $item, $product) {
			if( $this->voucher )
				$value = $this->voucher->get_voucher_number();
			return $value;
		}, 10, 4);

		add_filter('woe_get_order_product_value_voucher_value', function ($value,$order, $item, $product) {
			if( $this->voucher )
				$value = $this->voucher->get_voucher_value();
			return $value;
		}, 10, 4);

		add_filter('woe_get_order_product_value_voucher_value_incl_tax', function ($value,$order, $item, $product) {
			if( $this->voucher )
				$value = $this->voucher->get_voucher_value_incl_tax();
			return $value;
		}, 10, 4);

		add_filter('woe_get_order_product_value_voucher_recipient_name', function ($value,$order, $item, $product) {
			if( $this->voucher )
				$value = $this->voucher->get_recipient_name();
			return $value;
		}, 10, 4);

		add_filter('woe_get_order_product_value_voucher_message', function ($value,$order, $item, $product) {
			if( $this->voucher )
				$value = $this->voucher->get_message();
			return $value;
		}, 10, 4);
	}	
}
new WOE_Product_Vouchers();

Woocommerce Subscriptions

subscription-new-fields

// add status and dates as new columns
class WOE_Subscription_Fields_mod {
	function __construct() {
		add_filter('woe_get_order_fields', array($this,'add_order_fields') );
		add_action('woe_order_export_started', array($this,'get_subscription_details') );
		add_filter('woe_fetch_order_row', array($this,'fill_new_columns'), 10, 2);
	}
	
	function add_order_fields($fields) {
		$fields['sub_status'] = array('segment'=>'cart','label'=>'Sub. Status', 'colname'=>'Sub. Status', 'value'=>'','checked'=>1);
		$fields['sub_start_date'] = array('segment'=>'cart','label'=>'Sub. Start Date', 'colname'=>'Sub. Start Date', 'value'=>'','checked'=>1);
		$fields['sub_next_payment'] = array('segment'=>'cart','label'=>'Sub. Next Payment', 'colname'=>'Sub. Next Payment', 'value'=>'','checked'=>1);
		$fields['sub_last_order_date'] = array('segment'=>'cart','label'=>'Sub. Last Order Date', 'colname'=>'Sub. Last Order Date', 'value'=>'','checked'=>1);
		return $fields;
	}
	
	function get_subscription_details($order_id) {
		$this->sub = array();
		
		if(  WC_Order_Export_Data_Extractor::$object_type=='shop_order' ) {
			$subs = wcs_get_subscriptions_for_order($order_id, array('order_type'=>'any'));		
			$subs = array_values($subs); 
			if(!$subs)
				return $order_id;
			$sub = array_shift($subs);	
		} elseif(WC_Order_Export_Data_Extractor::$object_type=='shop_subscription' ) {
			$sub = wcs_get_subscription($order_id);
		} else {
			return $order_id;// unknow type
		}	
		$this->sub['status'] = $sub->get_status();
		//$this->sub['start_date'] = $sub->get_date_to_display("start_date"); //was 
		
		$this->sub['start_date'] = date_i18n( wc_date_format(), $sub->get_time( 'date_created', 'site' ) );
		$this->sub['next_payment'] = $sub->get_time( 'next_payment_date', 'site' ) ? date_i18n( wc_date_format(), $sub->get_time( 'next_payment_date', 'site' ) ) : '-';
		$this->sub['last_order_date'] = date_i18n( wc_date_format(), $sub->get_time( 'last_order_date_created', 'site' ) );
		return $order_id;
	}
	
	// add new values to row
	function fill_new_columns($row,$order_id) {
		foreach($this->sub as $k=>$v)
			if(isset($row['sub_'.$k]))
				$row['sub_'.$k] = $v;
		return $row;
	}
}
new WOE_Subscription_Fields_mod();

WooCommerce Bookings

class WOE_Bookings{
	function __construct() {
		add_filter('woe_get_order_product_fields',array($this,'add_product_fields') );
		add_filter('woe_get_order_product_item',array($this,'fetch_booking') );
		
		add_filter('woe_get_order_product_value_booking_status', array($this,'get_booking_field_status'), 10, 4 );
		add_filter('woe_get_order_product_value_booking_start_date', array($this,'get_booking_field_start_date'), 10, 4 );
		add_filter('woe_get_order_product_value_booking_start_time', array($this,'get_booking_field_start_time'), 10, 4 );
		add_filter('woe_get_order_product_value_booking_end_date', array($this,'get_booking_field_end_date'), 10, 4 );
		add_filter('woe_get_order_product_value_booking_end_time', array($this,'get_booking_field_end_time'), 10, 4 );
		add_filter('woe_get_order_product_value_booking_resource', array($this,'get_booking_field_resource'), 10, 4 );
	}	
	
	function add_product_fields($fields) {
		$fields['booking_status'] = array('label'=>'Booking Status','colname'=>'Booking Status','checked'=>1,'segment'=>'cart');
		$fields['booking_start_date'] = array('label'=>'Booking Start Date','colname'=>'Booking Start Date','checked'=>1,'segment'=>'cart');
		$fields['booking_start_time'] = array('label'=>'Booking Start Time','colname'=>'Booking Start Time','checked'=>1,'segment'=>'cart');
		$fields['booking_end_date'] = array('label'=>'Booking End Date','colname'=>'Booking End Date','checked'=>1,'segment'=>'cart');
		$fields['booking_end_time'] = array('label'=>'Booking End Time','colname'=>'Booking End Time','checked'=>1,'segment'=>'cart');
		$fields['booking_resource'] = array('label'=>'Booking Resource','colname'=>'Booking Resource','checked'=>1,'segment'=>'cart');
		return $fields;
	}
	
	// booking for item 
	function fetch_booking($item) {
		global $wpdb;
		$this->booking = false;
		$booking_id = $wpdb->get_var( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key= '_booking_order_item_id' AND meta_value=" . intval( $item->get_id() ) );
		if( $booking_id ) {
			$this->booking =  new WC_Booking($booking_id);
		}
		return $item;
	}
	
	function get_booking_field_status($value,$order, $item, $product) {
		return $this->booking ? $this->booking->get_status() : $value;
	}		
	function get_booking_field_start_date($value,$order, $item, $product) {
		return $this->booking ? date_i18n( wc_date_format(), $this->booking->start) : $value;
	}		
	function get_booking_field_start_time($value,$order, $item, $product) {
		return $this->booking ? date_i18n( wc_time_format(), $this->booking->start) : $value;
	}		
	function get_booking_field_end_date($value,$order, $item, $product) {
		return $this->booking ? date_i18n( wc_date_format(), $this->booking->end) : $value;
	}		
	function get_booking_field_end_time($value,$order, $item, $product) {
		return $this->booking ? date_i18n( wc_time_format(), $this->booking->end) : $value;
	}		
	function get_booking_field_resource($value,$order, $item, $product) {
		if (!$this->booking) 
			return $value;
		$resource = $this->booking->get_resource();
		return $resource ? $resource->get_name() : $value;
	}		
}	
new WOE_Bookings();

WooCommerce Product Vendors

 // add product fields "Vendor Email" and  "Vendor Name"
add_filter('woe_get_order_product_fields', function ($fields,$format) {
 $fields['vendor_email'] = array( 'label' => 'Vendor email', 'colname' => 'Vendor email', 'checked' => 1 );
 $fields['vendor_name'] = array( 'label' => 'Vendor email', 'colname' => 'Vendor email', 'checked' => 1 );
 return $fields;
}, 10, 2);

add_filter('woe_get_order_product_value_vendor_email', function ($value,$order, $item, $product,$itemmeta) {
 $vendor = WC_Product_Vendors_Utils::is_vendor_product( $item['product_id'] );
 if ( $vendor AND !empty( $vendor[0] ) ) {
  $vendor_data = WC_Product_Vendors_Utils::get_vendor_data_by_id($vendor[0]->term_id);
  if ( ! empty( $vendor_data ) ) 
   $value = $vendor_data['email'];
 }
 return $value;
}, 10, 5);

add_filter('woe_get_order_product_value_vendor_name', function ($value,$order, $item, $product,$itemmeta) {
 $vendor = WC_Product_Vendors_Utils::is_vendor_product( $item['product_id'] );
 if ( $vendor AND !empty( $vendor[0] ) ) {
  $vendor_data = WC_Product_Vendors_Utils::get_vendor_data_by_id($vendor[0]->term_id);
  if ( ! empty( $vendor_data ) ) 
   $value = $vendor_data['name'];
 }
 return $value;
}, 10, 5);

Local Pickup Plus

 // one location per order
class Woe_Pickup_Location_Fields_to_Order{
	var $shipping_info;
	var $names = array("_pickup_location_id","_pickup_location_name","_pickup_location_address","_pickup_location_phone","_pickup_date","_pickup_items");
	
	function __construct() {
		add_filter('woe_get_order_fields', array($this,'add_shipping_fields') );
		add_filter('woe_settings_validate_defaults', array($this,'hook_new_fields') );
		add_filter('woe_order_export_started',array($this,'fetch_order_shipping'), 10, 1);
	}	
	
	function add_shipping_fields($fields) {
		foreach($this->names as $f) {
			$l = ucwords(trim(str_replace("_"," ",$f)));
			$fields[$f] = array('label'=>$l,'checked' => 1, 'colname'=>$l);
			add_filter('woe_get_order_value_'.$f, array($this,'get_shipping_value'), 10, 3 );
		}	
		return $fields;
	}

	function hook_new_fields($settings) {
		foreach($this->names as $f) {
			add_filter('woe_get_order_value_'.$f, array($this,'get_shipping_value'), 10, 3 );
		}	
		return $settings;
	}
	
	function fetch_order_shipping($order_id) {
		//reset values
		$this->shipping_info = array();
		
		//take 1st ?
		$order = new WC_Order($order_id);
		foreach($order->get_items('shipping') as $shipping) {
			foreach($shipping->get_meta_data() as $meta) {
				$this->shipping_info[$meta->key] = $meta->value;
			}	
			break;
		}
		
		// convert some values
		if( is_array($this->shipping_info['_pickup_location_address']) ) {
			// MODIFY it?
			$_parts = array(
				$this->shipping_info['_pickup_location_address']['address_1'],
				$this->shipping_info['_pickup_location_address']['address_2'],
				$this->shipping_info['_pickup_location_address']['city'],
				$this->shipping_info['_pickup_location_address']['postcode'],
				$this->shipping_info['_pickup_location_address']['state'],
				$this->shipping_info['_pickup_location_address']['country'],
			);
			$this->shipping_info['_pickup_location_address'] = join(", ", array_filter($_parts));
		}	
		if( is_array($this->shipping_info['_pickup_items']) ){
			$items = $order->get_items('line_item');
			$item_names = array();
			foreach($this->shipping_info['_pickup_items'] as $id) {
				if(isset($items[$id]))
					$item_names[] = $items[$id]['name'] . ' x ' . $items[$id]['name'];
			}	
			$this->shipping_info['_pickup_items'] = join(",", $item_names);
		}	
		
		return $order_id;
	}
	
	function get_shipping_value($value,$order,$field) {
		if( isset($this->shipping_info[$field]) ) {
			$value = $this->shipping_info[$field];
		}
		return $value;
	}
	
}
new Woe_Pickup_Location_Fields_to_Order();

FooEvents For WooCommerce

You should EDIT  and TWEAK code , see comments!

class WOE_FooTickets_As_Products {
	var $fields = array("TicketType"=>"Ticket Type","Status"=>"Ticket Status","AttendeeName"=>"Attendee First Name","AttendeeLastName"=>"Attendee Last Name",
					"AttendeeEmail"=>"Attendee Email","AttendeeTelephone"=>"Attendee Phone","AttendeeCompany"=>"Attendee Company","AttendeeDesignation"=>"Attendee Designation","PurchaserFirstName"=>"Purchaser First Name","PurchaserLastName"=>"Purchaser Last Name","PurchaserEmail"=>"Purchaser Email"); 
	var $custom_fields = array("non_participant"=>"Nom participant","club_participant"=>"club Participant"); // ADD as "field"=>"label"
	var $seating_fields = array("seat_row_name"=>"Seating"); // ADD as "field"=>"label" - Added this line for seating 
	function __construct() {
		add_filter('woe_get_order_product_fields', function ($fields) {
			foreach($this->fields as $field=>$label)
				$fields['ticket_standard_'.$field] = array( 'label' => $label, 'colname' => $label, 'checked' => 1 );
			foreach($this->custom_fields as $field=>$label)
				$fields['ticket_custom_'.$field] = array( 'label' => $label, 'colname' => $label, 'checked' => 1 );
			foreach($this->seating_fields as $field=>$label) //Added these 2 lines for seating
				$fields['ticket_seating_'.$field] = array( 'label' => $label, 'colname' => $label, 'checked' => 1 );			
			return $fields;
		});
		add_filter('woe_fetch_order_products',function ($products,$order,$labels, $format, $static_vals) {
			$tickets_set = get_post_meta($order->id, "WooCommerceEventsOrderTickets", true);
			$this->line_id = 1;
			$results = array();
			$pos = 0;
			$products = array_values($products);
			foreach ( $order->get_items('line_item') as $item_id=>$item ) {
				$found_ticket = false;
				// seek for assigned tickets
				$product_data = $products[$pos++]; // take already extracted data for product!
				foreach($tickets_set as $tickets) {
					foreach($tickets as $ticket) {
						// found assigned tickets??
						if(	$item['product_id'] AND !$item['variation_id'] AND ($ticket['WooCommerceEventsProductID'] == $item['product_id'])  
                                                  OR $item['variation_id'] AND ($ticket['WooCommerceEventsVariationID'] == $item['variation_id'])  ) {
							$this->add_ticket($results, $ticket,$labels,$product_data);
							$found_ticket = true;
						}	
					}
				}
				if( ! $found_ticket ) // not ticket, stay unchanaged!
					$results[] = $product_data;
			}
			return $results;
		},10,5);
	}// end __construct
	
	function add_ticket(&$results, $ticket,$labels,$product_data) {
		$row = array();
		foreach ( $labels as $field => $label ) {
			if ( $field == 'line_id' ) {
				$row[ $field ] = $this->line_id++;
			} elseif ( preg_match('#ticket_standard_(.+)$#',$field,$m) ) { // FooEvents field
				$row[ $field ] = $ticket["WooCommerceEvents".$m[1]];
			} elseif ( preg_match('#ticket_custom_(.+)$#',$field,$m) ) { // FooEvents custom field 
				$row[ $field ] = $ticket["WooCommerceEventsCustomAttendeeFields"]["fooevents_custom_".$m[1]];
			} elseif ( preg_match('#ticket_seating_(.+)$#',$field,$m) ) { // FooEvents seating field 
				$row[ $field ] = str_replace('_', ' ',$ticket["WooCommerceEventsSeatingFields"]["fooevents_".$m[1]]);
			} elseif ( isset( $product_data[$field]) ) { // Item field ?
				$row[ $field ] = $product_data[$field];
			} else
				$row[ $field ] = '';
		}
		$results[] = $row;
	}
}
new WOE_FooTickets_As_Products();

Tickera

add_filter('woe_get_order_product_fields', 'woe_add_ticket_fields');
function woe_add_ticket_fields($fields) {
	$fields['event_name'] = array('label'=>'Event Name','colname'=>'Event Name','checked'=>1);
	$fields['event_start_at'] = array('label'=>'Event Start','colname'=>'Event Start','checked'=>1);
	$fields['event_end_at'] = array('label'=>'Event End','colname'=>'Event End','checked'=>1);
	$fields['event_location'] = array('label'=>'Event Location','colname'=>'Event Location','checked'=>1);
	$fields['ticket_type'] = array('label'=>'Ticket Type','colname'=>'Ticket Type','checked'=>1);
	$fields['ticket_owner'] = array('label'=>'Ticket Owner Name','colname'=>'Ticket Owner Name','checked'=>1);
	$fields['ticket_email'] = array('label'=>'Ticket Owner Email','colname'=>'Ticket Owner Email','checked'=>1);
	$fields['ticket_code'] = array('label'=>'Ticket Code','colname'=>'Ticket Code','checked'=>1);
	return $fields;
}

add_filter('woe_fetch_order_products', 'woe_fill_ticket_fields',10,5);
function woe_fill_ticket_fields($data, $order, $labels, $format, $static_vals ) {
	$args = array(
		'posts_per_page' => -1,
		'orderby' => 'post_date',
		'order' => 'ASC',
		'post_type' => 'tc_tickets_instances',
		'post_parent' => $order->get_id(),
	);
	$tickets = get_posts($args);
	$data = array_values($data); //we dont need item ids here!
	foreach($tickets  as $pos=>$ticket) {
		// copy data from first line
		if(!isset($data[$pos]))
			$data[$pos] = $data[0];
		//fill ticket data	
		$ticket_type_id = get_post_meta($ticket->ID, 'ticket_type_id', true);
		if( $ticket_type_id )  {
			$ticket_type = new TC_Ticket($ticket_type_id);
			if( $ticket_type  ) {
				$event_id = $ticket_type->get_ticket_event();
				$event = get_post($event_id, ARRAY_A);
				$data[$pos]['event_name']	=  $event['post_title'];
				$data[$pos]['event_start_at']	=  get_post_meta( $event_id , 'event_date_time', true);
				$data[$pos]['event_end_at']	=  get_post_meta( $event_id , 'event_end_date_time', true);
				$data[$pos]['event_location']	=  get_post_meta( $event_id , 'event_location', true);
				$data[$pos]['ticket_type']	=  $ticket_type->details->post_title;
				$data[$pos]['ticket_owner']	=  get_post_meta($ticket->ID, 'first_name', true) ." " .get_post_meta($ticket->ID, 'last_name', true); 
				$data[$pos]['ticket_email']	=  get_post_meta($ticket->ID, 'owner_email', true); 
				$data[$pos]['ticket_code']	=  get_post_meta($ticket->ID, 'ticket_code', true);
			}	
		}	
	}
	return $data;
}

WooCommerce Box Office

class WOE_BoxOfficeFields_As_Products {
	var $fields = array('First Name','Last Name','Email'); // modify names here!  Must match to Labels at tab "Ticket Fields"
	
	function __construct() {
		add_filter('woe_get_order_product_fields', function ($fields) {
			$fields['product_ticket_id'] = array( 'label' => 'Ticket Id', 'colname' => 'Ticket Id', 'checked' => 1 );
			foreach($this->fields as $name) 
				$fields['product_'.$name] = array( 'label' => $name, 'colname' => $name, 'checked' => 1 );
			return $fields;
		});

		add_filter('woe_fetch_order_products',function ($products,$order,$labels, $format, $static_vals) {
			$this->line_id = 1;
			$results = array();
			$products = array_values($products);
			foreach ( $order->get_items('line_item') as $item_id=>$item ) {
				// seek for assigned tickets 
				$product_data = $products[$item_id]; // take already extracted data for product!
				$item_meta = get_metadata( 'order_item', $item_id );
				
				foreach($item_meta  as $key=>$value) {
					// parse manual ticket id from HTML!
					if(preg_match("#ticket-id-(\d+)#", $key, $match) ) {
						$this->add_client_ticket($results, $match[1],$labels,$product_data);
					} 
				}
			}
			return $results;
		},10,5);
	}// end __construct

	function add_client_ticket(&$results, $ticket_id,$labels,$product_data) {
		$data = array( 'product_ticket_id'=>$ticket_id);
		
		$product_id = get_post_meta( $ticket_id, '_product', true );
		if ( !$product_id ) 
			return;
			
		$ticket_product = wc_get_product( $product_id );
		//$data['name'] = $ticket_product->get_title();

		foreach ( wc_box_office_get_product_ticket_fields( $product_id ) as $field_key => $field ) {
			// Replace content placeholders with ticket fields.
			$field_value = get_post_meta( $ticket_id, $field_key, true );
			if ( is_array( $field_value ) ) {
				$field_value = implode( ', ', $field_value );
			}
			$data[ 'product_'.$field['label'] ] =  $field_value;
		}		
	
		$this->add_ticket($results, $data,$labels,$product_data);
	}

	function add_ticket(&$results, $data,$labels,$product_data) {
		foreach ( $labels as $field => $label ) {
			if ( $field == 'line_id' ) {
				$row[ $field ] = $this->line_id++; 
			} elseif ( isset( $data[$field]) ) { // boxoffice fields 
				$row[ $field ] = $data[$field];
			} elseif ( isset( $product_data[ $field ] ) ) {
				$row[ $field ] = $product_data[ $field ];
			} else
				$row[ $field ] = '';
		}
		$results[] = $row;
	}
}		
new WOE_BoxOfficeFields_As_Products();

Shipping Multiple Addresses

//this code adds shipping information for each product
class WOE_add_product_shipping{
	var $items_shipping;
	
	function __construct() {
		add_filter('woe_get_order_product_fields', array($this,'add_shipping_fields'), 10, 2);
		add_filter('woe_order_export_started',array($this,'fetch_product_shipping'), 10, 1);
		add_filter('woe_fetch_order_product',array($this,'fill_product_shipping'), 10, 5);
	}	
	
	function add_shipping_fields($fields,$format) {
		$names = array('first_name','last_name','full_name','company','country','address_1','address_2','city','state','postcode','note');
		foreach($names as $f) {
			$fields['shipping_'.$f] = array('label'=>"Product Shipping ".$f,'checked' => 1, 'colname'=>"Product Shipping ".$f);
		}	
		return $fields;
	}
	
	function fetch_product_shipping($order_id) {
		//reset values
		$this->items_shipping = array();
		
		$shipping_packages = get_post_meta($order_id, '_wcms_packages', true );
		foreach($shipping_packages  as $pack) {
			$addr = $pack['destination'];
			foreach($pack["contents"] as $item) {
				$key = $item['product_id']."-".$item['variation_id'];
				$addr['full_name'] = trim($addr['first_name'] . " " . $addr['last_name']); // new field
				$addr['note'] = $pack['note'];
				$this->items_shipping[$key] = $addr;
			}
		}
		return $order_id;
	}
	
	function fill_product_shipping($row, $order, $item, $product, $item_meta) { 
		$key = $item['product_id']."-".$item['variation_id'];
		if( isset($this->items_shipping[$key]) ) {
			foreach($this->items_shipping[$key] as $k=>$v) {
				$k = 'shipping_'.$k;
				if( isset($row[$k]) )
					$row[$k] = $v; 
			}
		}
		return $row;
	}
}	
new WOE_add_product_shipping();

WooCommerce TM Extra Product Options

You should EDIT  and TWEAK code!  See below how to get “Element id”.

// one column for each option
class WOE_add_extra_fields {
        // EDIT list here, use pair 'Element id'=>'Label'    
	var $tm_fields = array( '5bfe34979a8f16.53431994'=>'Age','5bfe34e59a8f25.82473886'=>'Sex'); 
	function __construct() {
		add_filter('woe_get_order_product_fields',array($this,'add_product_fields') );
		add_filter('woe_get_order_product_item_meta', array($this,'fill_tm_fields') );
	}	
	
	function add_product_fields($fields) {
		foreach($this->tm_fields as $element_id=>$name) {
			$fields['tm_field_'.$element_id] = array('label'=>$name,'colname'=>$name,'checked'=>1);
		}	
		return $fields;
	}
	
	//TWEAK  output for each field 
	function format_line($tm_field) {
		return $tm_field['value'];  // can use $tm_field['name'], $tm_field['price'] , $tm_field['quantity'] 
	}	
	
	function fill_tm_fields($item_meta) {
		// Gather TM values to array
		$product_fields = array();
		$product_fields[] = array();
		
		//Cart Fees
		if( isset($item_meta["_tmcartfee_data"])   AND  is_array($tmfields = maybe_unserialize($item_meta["_tmcartfee_data"][0]))  ) {
			foreach($tmfields[0] as $tm_field) {
				$element_id = $tm_field['section'];
				if( !isset($product_fields[$element_id]) ) 
					$product_fields[$element_id] = array();
				$product_fields[$element_id][] = $this->format_line($tm_field); 
			}
		}
		
		//Cart Items
		if( isset($item_meta["_tmcartepo_data"])   AND  is_array($tmfields = maybe_unserialize($item_meta["_tmcartepo_data"][0]))  ) {
			foreach($tmfields as $tm_field) {
				$element_id = $tm_field['section'];
				if( !isset($product_fields[$element_id]) ) 
					$product_fields[$element_id] = array();
				$product_fields[$element_id][] = $this->format_line($tm_field); 
			}
		}
		
		//make list 
		foreach($product_fields as $element_id=>$values)
			$product_fields[ $element_id ] = join("\n", $values);
		
		// add to item meta 
		foreach($this->tm_fields as $element_id=>$name) {
			 // it must be array !
			$item_meta['tm_field_'.$element_id] = array( isset($product_fields[$element_id]) ? $product_fields[$element_id] : "" );
		}	
		return $item_meta;
	}
}	
new WOE_add_extra_fields();

WooCommerce TM Extra Product Options #2

// add each option as product row
class WOE_add_TM_cols{
	var $tm_cols = array( 'pos','name','value','price','quantity'); 
	function __construct() {
		add_filter('woe_get_order_product_fields',array($this,'add_product_fields') );
		add_filter('woe_fetch_order_products', array($this,'fill_tm_cols') ,10, 5);
	}	
	
	function add_product_fields($fields) {
		foreach($this->tm_cols as $tm_col) {
			$fields['tm_field_'.$tm_col] = array('label'=>'TM '.$tm_col,'colname'=>'TM '.$tm_col,'checked'=>1);
		}	
		return $fields;
	}
	
	function fill_tm_cols($products, $order, $labels, $format,$static_vals) {
		$new_products = array();
		
		foreach( $products as $item_id=>$product) {
			$item_meta = get_metadata( 'order_item', $item_id );
			
			if( isset($item_meta["_tmcartepo_data"])   AND  is_array($tmfields = maybe_unserialize($item_meta["_tmcartepo_data"][0]))  ) {
				$pos = 1;
				foreach($tmfields as $tm_field) {
					$new_product = $product;
					$tm_field['pos']= $pos++;//set fake field
					// fill TM columns 
					foreach($this->tm_cols as $tm_col) {
						if( isset($new_product['tm_field_'.$tm_col]))
							$new_product['tm_field_'.$tm_col] = $tm_field[$tm_col];
					}
					//add each option as new product!
					$new_products[] = $new_product;
				}
			}
			else //just copy product as is 
				$new_products[] = $product;
		}
		return $new_products;
	}
}	
new WOE_add_TM_cols();