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 Appointments, WooCommerce Memberships, 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), Advanced Shipment Tracking for WooCommerce

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 = get_metadata( 'order_item', $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( 'start', '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

//WooCommerce Bookings
class WOE_Bookings{
	var $title_type_ids;
	var $type_id_title;
	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') );
		
		//set global filters
		add_filter('woe_get_order_product_value_booking_status', array($this,'get_booking_field_status'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_start_date', array($this,'get_booking_field_start_date'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_start_time', array($this,'get_booking_field_start_time'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_end_date', array($this,'get_booking_field_end_date'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_end_time', array($this,'get_booking_field_end_time'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_resource', array($this,'get_booking_field_resource'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_persons_total', array($this,'get_booking_field_persons_total'), 10, 5 );
		add_filter('woe_get_order_product_value_booking_persons', array($this,'get_booking_field_persons'), 10, 5 );
		add_action('wp_loaded', array($this,'set_hooks_for_booking_person_types') );
	}	
	
	function add_product_fields($fields) {
		$fields['booking_status'] = array('label'=>'Booking Status','colname'=>'Booking Status','checked'=>1);
		$fields['booking_start_date'] = array('label'=>'Booking Start Date','colname'=>'Booking Start Date','checked'=>1);
		$fields['booking_start_time'] = array('label'=>'Booking Start Time','colname'=>'Booking Start Time','checked'=>1);
		$fields['booking_end_date'] = array('label'=>'Booking End Date','colname'=>'Booking End Date','checked'=>1);
		$fields['booking_end_time'] = array('label'=>'Booking End Time','colname'=>'Booking End Time','checked'=>1);
		$fields['booking_resource'] = array('label'=>'Booking Resource','colname'=>'Booking Resource','checked'=>1);
		$fields['booking_persons'] = array('label'=>'Booking # of Persons','colname'=>'Booking Persons','checked'=>1,'segment'=>'cart');
		$fields['booking_persons_total'] = array('label'=>'Booking Total # of Persons','colname'=>'Booking Persons Total','checked'=>1,'segment'=>'cart');
		
		// add person types as columns 
		if( class_exists("WC_Product_Booking_Data_Store_CPT") AND method_exists("WC_Product_Booking_Data_Store_CPT", "get_person_types_ids") ) {
			$person_types_ids = WC_Product_Booking_Data_Store_CPT::get_person_types_ids();
			foreach($person_types_ids as $type_id) {
				$post = get_post($type_id);
				if( $post  )
					$fields['booking_person_type_'.$post->post_title] = array('label'=>'Booking Persons - ' .$post->post_title,'colname'=>'Booking Persons - ' .$post->post_title,'checked'=>1);
			}	
		}
		return $fields;
	}
	
	// add hooks to calculate counters for person types 
	function set_hooks_for_booking_person_types() {
		if( class_exists("WC_Product_Booking_Data_Store_CPT") AND method_exists("WC_Product_Booking_Data_Store_CPT", "get_person_types_ids") ) {
			$this->title_type_ids = array();
			$person_types_ids = WC_Product_Booking_Data_Store_CPT::get_person_types_ids();
			foreach($person_types_ids as $type_id) {
				$title = get_the_title( $type_id); 
				//remember ids for each Label
				$this->type_id_title[$type_id] = $title;
				if( !isset($this->title_type_ids[$title]) )
					$this->title_type_ids[$title] = array();
				$this->title_type_ids[$title][] = $type_id;	
				add_filter('woe_get_order_product_value_booking_person_type_'.$title, function($value,$order, $item, $product, $item_meta) use($title) {
					if (!$this->booking) 
						return $value;
					$counters = $this->booking->get_person_counts();
					$total = 0;
					foreach($this->title_type_ids[$title] as $type_id )
						if( isset($counters[$type_id]) )
							$total += $counters[$type_id];
					return $total;
				}, 10, 5 );
			}	
		}	
	}
	
	// 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, $item_meta) {
		return $this->booking ? $this->booking->get_status() : $value;
	}		
	function get_booking_field_start_date($value,$order, $item, $product, $item_meta) {
		return $this->booking ? date_i18n( wc_date_format(), $this->booking->start) : $value;
	}		
	function get_booking_field_start_time($value,$order, $item, $product, $item_meta) {
		return $this->booking ? date_i18n( wc_time_format(), $this->booking->start) : $value;
	}		
	function get_booking_field_end_date($value,$order, $item, $product, $item_meta) {
		return $this->booking ? date_i18n( wc_date_format(), $this->booking->end) : $value;
	}		
	function get_booking_field_end_time($value,$order, $item, $product, $item_meta) {
		return $this->booking ? date_i18n( wc_time_format(), $this->booking->end) : $value;
	}		
	function get_booking_field_resource($value,$order, $item, $product, $item_meta) {
		if (!$this->booking) 
			return $value;
		$resource = $this->booking->get_resource();
		return $resource ? $resource->get_name() : $value;
	}		
	function get_booking_field_persons_total($value,$order, $item, $product,$item_meta) {
		return $this->booking ? $this->booking->get_persons_total() : $value;
	}		
	function get_booking_field_persons($value,$order, $item, $product,$item_meta) {
		if( $this->booking ) {
			$values = array();
			foreach( $this->booking->get_persons() as $type_id=>$counter) {
				//$label = isset($this->type_id_title[$type_id]) ? $this->type_id_title[$type_id] : "Type #$type_id";
				$label = ( 0 < $type_id ) ? get_the_title( $type_id ) : __( 'Person(s)', 'woocommerce-bookings' );
				$values[] = "$label - $counter";
			}
			$value = join(", ",$values);
		};
		return $value;
	}		
}	
new WOE_Bookings();

WooCommerce Appointments

//WooCommerce Appointments, Date Filters applied to appointment start date 
class WOE_Filter_By_App_Date {
	var $from_date = "";
	var $to_date = "";
	
	function __construct() {
		add_filter('woe_settings_validate_defaults',  function($settings){
			if($settings['from_date']) {
				$this->from_date= $settings['from_date'];
				$settings['from_date'] = "";
			}
			if($settings['to_date']) {
				$this->to_date= $settings['to_date'];
				$settings['to_date'] = "";
			}
			return $settings;
		});

		add_filter( 'woe_sql_get_order_ids_where', function($where, $settings ){
			global $wpdb;
			$date_sql = "";
			if ( $this->from_date OR  $this->to_date) {
				$meta_val_filter = array();
				if( $this->from_date ) 
					$meta_val_filter[] = "CAST(meta_value AS UNSIGNED) >= ". date("YmdHis", strtotime($this->from_date. " 00:00:00"));
				if( $this->to_date ) 
					$meta_val_filter[] = "CAST(meta_value AS UNSIGNED) <= ". date("YmdHis", strtotime($this->to_date. " 23:59:59"));
				$meta_val_filter = join( " AND ", $meta_val_filter);
				$date_sql = "AND ID IN (SELECT post_id FROM $wpdb->postmeta  WHERE meta_key='_appointment_start' AND $meta_val_filter )";
			}
			$where[] = "orders.ID IN (SELECT post_parent FROM $wpdb->posts WHERE post_type='wc_appointment'  $date_sql)";
			return $where;
		},10,2);
	} //end construct
}
new  WOE_Filter_By_App_Date();

WooCommerce Memberships

class WOE_Memberships {
	var $fields = array("plan","status","since","expires");
	function __construct() {
	
		add_filter('woe_get_order_fields', function ($fields) {
			foreach($this->fields  as $f) {
				$fields['membership_'.$f] = array( 'label' => "Member $f", 'colname' => "Member $f", 'checked' => 1 );
			} 
			return $fields;
		});
		
		add_filter('woe_settings_validate_defaults', function ($settings) {
			foreach($this->fields  as $f) {
				add_filter('woe_get_order_value_membership_'.$f, function ($value,$order,$field) {
					return isset($this->data[$field]) ? $this->data[$field] : $value; 
				},10,3);
			} 
			return $settings;
		});
		
		// rebuild for each order 
		add_filter('woe_order_export_started', function ($order_id) {
			// each order can create many memberships!
			$this->data = array();
			foreach($this->fields as $f) 
				$this->data[$f] = array();
			
			//gather details  
			$memberships = wc_memberships()->get_user_memberships_instance()->get_user_membership_by_order_id($order_id);
			foreach ($memberships as $m) {
				$this->data['plan'][] = $m->get_plan()->get_name();
				$this->data['status'][] = $m->get_status();
				$this->data['since'][] = $m->get_start_date();
				$this->data['expires'][] = $m->get_end_date();
			}
			
			// convert to multiline cells
			foreach($this->data as $f=>$v) 
				$this->data['membership_'.$f] = join("\n", $v );
			return $order_id;
		});
	}
}             
new WOE_Memberships();

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 $item_id=>$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);
		}	
		if( !empty($this->shipping_info['_pickup_appointment_start']) ){
			$local_pickup_plus = wc_local_pickup_plus();
			$appointment       = $local_pickup_plus->get_appointments_instance()->get_shipping_item_appointment( $item_id );
			if ( $appointment ) {
				$pickup_date = $appointment->get_start();
				$this->shipping_info['_pickup_date'] = esc_html( sprintf( __( '%1$s at %2$s', 'woocommerce' ), 
							date_i18n( wc_date_format(), $pickup_date->getTimestamp() + $pickup_date->getOffset() ), 
							date_i18n( wc_time_format(), $pickup_date->getTimestamp() + $pickup_date->getOffset() ) 
							) );
			}
		}	
		
		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("Date BIrth","Kid Name","Gender"); // ADD "label1","label2"
	var $seating_fields = array("Seating"); // ADD "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 $label)
				$fields['ticket_custom_'.$label] = array( 'label' => $label, 'colname' => $label, 'checked' => 1 );
			foreach($this->seating_fields as $label) //Added these 2 lines for seating
				$fields['ticket_seating_'.$label] = 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);
			if( empty($tickets_set) ) $tickets_set = array();
			$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 ] = $this->get_custom_event_field($ticket["WooCommerceEventsCustomAttendeeFields"],"fooevents_custom_".$m[1]);
			} elseif ( preg_match('#ticket_seating_(.+)$#',$field,$m) ) { // FooEvents seating field 
				$row[ $field ] = str_replace('_', ' ',$this->get_custom_event_field($ticket["WooCommerceEventsSeatingFields"],"fooevents_".$m[1]) ) ;
			} elseif ( isset( $product_data[$field]) ) { // Item field ?
				$row[ $field ] = $product_data[$field];
			} else
				$row[ $field ] = '';
		}
		$results[] = $row;
	}
	function get_custom_event_field($data,$key) {
		if(empty($data)) return "";
		foreach($data as $k=>$v)
			$data[strtolower($k)] = $v;
		$key = strtolower( str_replace(' ', '_',$key) );
		return isset($data[$key]) ? $data[$key] : "";
	}
}
new WOE_FooTickets_As_Products();

Tickera

add_filter('woe_get_order_product_fields',function ($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_owner_first'] = array('label'=>'Ticket Owner First Name','colname'=>'Ticket Owner First Name','checked'=>1);
	$fields['ticket_owner_last'] = array('label'=>'Ticket Owner Last Name','colname'=>'Ticket Owner Last 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);
	$fields['checkin_dates'] = array('label'=>'Сheckin Dates','colname'=>'Сheckin Dates','checked'=>1);
	$fields['checkin_total'] = array('label'=>'Total Сheckins','colname'=>'Total Сheckins','checked'=>1);
	
	// get form  fields 
	$args = array(
		'post_type'              => 'tc_form_fields',
		'post_status'            => 'publish',
		'posts_per_page'         => -1,
		'no_found_rows'          => true,
		'update_post_term_cache' => false,
		'update_post_meta_cache' => false,
		'cache_results'          => false,
		'fields'                 => array( 'ID', 'post_parent' ),
	);
	$custom_fields = get_posts( $args );
	if ( count( $custom_fields ) > 0 ) {
		foreach ( $custom_fields as $custom_field ) {
			$form_status = get_post_status( $custom_field->post_parent );
		    $form_title = get_the_title( $custom_field->post_parent );
			if ( $form_status == 'publish' ) {
				$element_class_name = get_post_meta( $custom_field->ID, 'field_type', true );
				$form_type = get_post_meta( $custom_field->post_parent, 'form_type', true );
				if ( class_exists( $element_class_name ) ) {
					$element = new $element_class_name( $custom_field->ID );
					if ( $element->standard_field_export( $element->element_name, true ) ) {
						$field = $element->admin_order_details_page_value();
						
						// add new field 
						$fields['ticket_CF_' . $field['id'] ] = array('label'=>"[$form_title] " . $field['field_title'],'colname'=>"[$form_title] " . $field['field_title'],'checked'=>1);
					}// if can be exported 
				}// 
			}
		} // if visible 
	}	// if fields 
	return $fields;
});


add_filter('woe_fetch_order_products', function ($data, $order, $labels, $format, $static_vals ) {
    $ticket_field_names = array("event_name","event_start_at","event_end_at","event_location","ticket_type","ticket_owner","ticket_email","ticket_code");
	$first_row = array_shift(array_values($data));
  
    //run only if Tickera fields was added to export
    $has_ticket_columns = false;
    foreach($first_row as $key=>$value) {
		if( in_array($key,$ticket_field_names) OR preg_match('#^ticket_CF_(.+)$#',$key,$field_key) ) {
		  $has_ticket_columns = true;
		  break; 
		}
    }
    if( !$has_ticket_columns )
	   return $data;
  
	$new_data = array();
	$used_keys = array();
  
	$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);
	foreach($tickets  as $pos=>$ticket) {
		
		//fill ticket data	
		$ticket_type_id = get_post_meta($ticket->ID, 'ticket_type_id', true);// it's a product_id !!!
		if( $ticket_type_id )  {
			$ticket_type = new TC_Ticket($ticket_type_id);
		    $ticket_instance = new TC_Ticket_Instance($ticket->ID);
			if( $ticket_type  ) {
				// must find Item ID of main product
				foreach($order->get_items() as $item_id=>$item) {
					if( $item['product_id'] == $ticket_type_id OR  $item['variation_id'] AND $item['variation_id'] == $ticket_type_id) {
						$new_row = $data[$item_id];
						$used_keys[] = $item_id;
						break;
					}
				}
				
				$event_id = $ticket_type->get_ticket_event();
				$event = get_post($event_id, ARRAY_A);
				
				//gather details 
				$t_data = array();
				$t_data['event_name']	=  $event['post_title'];
				$t_data['event_start_at']	=  get_post_meta( $event_id , 'event_date_time', true);
				$t_data['event_end_at']	=  get_post_meta( $event_id , 'event_end_date_time', true);
				$t_data['event_location']	=  get_post_meta( $event_id , 'event_location', true);
				$t_data['ticket_type']	=  $ticket_type->details->post_title;
				$t_data['ticket_owner']	=  get_post_meta($ticket->ID, 'first_name', true) ." " .get_post_meta($ticket->ID, 'last_name', true); 
				$t_data['ticket_owner_first']	=  get_post_meta($ticket->ID, 'first_name', true); 
				$t_data['ticket_owner_last']	=  get_post_meta($ticket->ID, 'last_name', true); 
				$t_data['ticket_email']	=  get_post_meta($ticket->ID, 'owner_email', true); 
				$t_data['ticket_code']	=  get_post_meta($ticket->ID, 'ticket_code', true);
				
				//checkins
				$t_data['checkin_dates'] = array();
				$t_data['checkin_total'] = 0;
				$ticket_checkins = $ticket_instance->get_ticket_checkins();				
				foreach($ticket_checkins as $checkin) {
					if($checkin["status"] == "Pass") {
						$t_data['checkin_total']++;
						$t_data['checkin_dates'][] = date( wc_date_format(), $checkin["date_checked"]) . " at  ". date(wc_time_format(), $checkin["date_checked"]);
					}
				}
				$t_data['checkin_dates'] = join(", ", $t_data['checkin_dates']);
				
				//fill only selected Tickera fields 
				foreach($t_data as $key=>$value)
					if( isset($first_row[$key]))
						$new_row[$key] = $value;
						
				//	try to get Custom Form fields 	
				foreach($first_row as $key=>$value) {
					if( preg_match('#^ticket_CF_(.+)$#',$key,$field_key) )
						$new_row[$key] = get_post_meta($ticket->ID, $field_key[1], true);
				}
				
				//done!
				$new_data[] = $new_row;
			}	
		}	
	}
	
	// export items which have NO tickets!
	foreach($data as $key=>$row)
		if( !in_array($key, $used_keys) )
			$new_data[] = $row;
		
	return $new_data;
},10,5);

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();
			
			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 $qty_shipping;
	
	function __construct() {
		//add fields to export
		add_filter('woe_get_order_product_fields', array($this,'add_shipping_fields'), 10, 2);
		//remember QTY+Address for each prodct
		add_filter('woe_order_export_started',array($this,'fetch_product_shipping'), 10, 1);
		// rebuild product list based on shipping packages
		add_filter('woe_fetch_order_products',array($this,'rebuild_products_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){
		$this->qty_shipping = array();
		$shipping_packages = get_post_meta($order_id, '_wcms_packages', true );
		if( !is_array($shipping_packages) )
			$shipping_packages = array();
		foreach($shipping_packages  as $pack) {
			$addr = $pack['destination'];
			foreach($pack["contents"] as $item) {
				$key = $item['cart_key'];
				$addr['full_name'] = trim($addr['first_name'] . " " . $addr['last_name']); // new field
				$addr['note'] = $pack['note'];
				if( !isset($this->qty_shipping[$key]) )
					$this->qty_shipping[$key] = array();
				$this->qty_shipping[$key][] = array("qty"=>$item['quantity'],"address"=>$addr);
			}
		}               
      
		//if no pack!
		$order = new WC_Order($order_id);
		$this->default_address = array();
		$names = array('first_name','last_name','company','country','address_1','address_2','city','state','postcode');
		foreach($names as $field)
	                $this->default_address[$field] = $order->{"get_shipping_".$field}();
		$this->default_address['full_name'] = trim($this->default_address['first_name'] . " " . $this->default_address['last_name']); // new field
		$this->default_address['note'] = $order->get_customer_note();
		return $order_id;
	}

	function rebuild_products_shipping($products, $order, $labels, $format, $static) { 
		$new_products = array();
		foreach( $products as $item_id=>$row) {
			$item = $order->get_item($item_id);
			$key = $item['_wcms_cart_key'];
			if( !isset($this->qty_shipping[$key])) { // not multishipping package!
				$this->qty_shipping[$key] = array( array("qty"=>$row['qty'], 'address'=>$this->default_address) );
			}
			foreach($this->qty_shipping[$key]  as $new_row) {
				if( isset($row['qty']) )
					$row['qty'] = $new_row['qty'];
				foreach($new_row['address'] as $k=>$v) {
					$k = 'shipping_'.$k;
					if( isset($row[$k]) )
						$row[$k] = $v; 
				}
				$new_products[]= $row;
			}
		}
		return $new_products;
	}

}	
new WOE_add_product_shipping();

WooCommerce TM Extra Product Options

You should EDIT  and TWEAK code!  See below how to get "TM Field label".

// one column for each option
class WOE_TM_extra__options_fields {
	// EDIT list here, use pair 'Export Label'=>['TM Field label', 'TM Field label 2', 'TM Field label N']    
	var $tm_fields = array( 
	       'Age' =>['Age','Child Age','Children Age'], // 3 fields will be exported as "Age"
	       'Gender'=>['Gender'],
	       'Label1'=>['Front Label'],
	); 
	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 $name=>$names) {
			$fields['tm_field_'.$name] = 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) {
				var_dump($tm_field);
				$element_id = $tm_field['name'];
				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['name'];
				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 $name=>$element_ids) {
			//gather all keys
			$vals = array( );
			foreach($element_ids as $element_id) {
				if( isset($product_fields[$element_id])) 
					$vals[] = trim($product_fields[$element_id]);
			}
			// it must be array !
			$item_meta['tm_field_'.$name] = array( join("\n", $vals) );
		}	
		return $item_meta;
	}
}	
new WOE_TM_extra__options_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();

Advanced Shipment Tracking for WooCommerce

Please, follow to article https://algolplus.freshdesk.com/support/solutions/articles/25000018287-add-calculated-field-for-product-
1. add meta keys "tracking_provider" and "tracking_number"
2. put this PHP code in section "Misc Settings"

//prepare title for providers , once
global $woe_ast_provider_title;
global $wpdb;
$woe_ast_provider_title = array();
$woo_shippment_table_name = $wpdb->prefix . 'woo_shippment_provider';
$providers = $wpdb->get_results( "SELECT ts_slug,provider_name FROM {$woo_shippment_table_name}", ARRAY_A );
$woe_ast_provider_title = wp_list_pluck($providers,"provider_name","ts_slug");

//fill product tracking information 
add_filter( 'woe_fetch_order_product', function($row, $order, $item, $product, $item_meta ){
	global $woe_ast_provider_title;
	if( !class_exists("WC_Advanced_Shipment_Tracking_Actions") )
		return $row;
	$st = WC_Advanced_Shipment_Tracking_Actions::get_instance();
	$tracking_items = $st->get_tracking_items( $order->get_id() );
	if( !$tracking_items ) 
		return $row;
	
	//we have tracking information for this order
	$row['tracking_number'] = array();
	$row['tracking_provider'] = array();
	foreach($tracking_items as $tracking_item) {
		//free version have only global information
		if( !isset($tracking_item["products_list"])) {
			$row['tracking_number'][] = $tracking_item['tracking_number'];
			$row['tracking_provider'][] = $woe_ast_provider_title[$tracking_item['tracking_provider']];
			continue;
		}
		// Paid addon  "Tracking per items" is active!
		foreach($tracking_item["products_list"] as $tracked_product) {
			if($tracked_product->product == $item->get_product_id() ) {
				$row['tracking_number'][] = $tracking_item['tracking_number'];
				$row['tracking_provider'][] = $woe_ast_provider_title[$tracking_item['tracking_provider']];
			}
		}
	}
	$row['tracking_number'] = join(",", $row['tracking_number']);
	$row['tracking_provider'] = join(",", $row['tracking_provider']);
	return $row;
},10,5);