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

Following plugins supported: PDF Product Vouchers, Woocommerce Subscriptions, WooCommerce Bookings, FooEvents, Shipping Multiple Addresses, WooCommerce TM Extra Product Options

WooCommerce PDF Invoices & Packing Slips

Creditnote Fields

// 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['formatted_credit_note_number'] = array( 'label' => 'Formatted Credit Note Number', 'colname' => 'Formatted  Credit Note Number', '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_formatted_credit_note_number', '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;
}

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->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_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 );
	}	
	
	function add_product_fields($fields) {
		$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');
		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_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;
	}		
}	
new WOE_Bookings();

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("nom_participant"=>"Nom participant","club_participant"=>"club Participant"); // ADD as "field"=>"label"
	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 );
			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 ( isset( $product_data[$field]) ) { // Item field ?
				$row[ $field ] = $product_data[$field];
			} else
				$row[ $field ] = '';
		}
		$results[] = $row;
	}
}
new WOE_FooTickets_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');
		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
				$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 comments!

class WOE_add_extra_fields {
	var $tm_fields = array('Age','Sex'); // EDIT list here 
	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 $pos=>$name) {
			$fields['tm_field_'.$pos] = 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) {
				$name = $tm_field['name'];
				if( !isset($product_fields[$name]) ) 
					$product_fields[$name] = array();
				$product_fields[$name][] = $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) {
				$name = $tm_field['name'];
				if( !isset($product_fields[$name]) ) 
					$product_fields[$name] = array();
				$product_fields[$name][] = $this->format_line($tm_field); 
			}
		}
		
		//make list 
		foreach($product_fields as $name=>$values)
			$product_fields[ $name ] = join("\n", $values);
		
		// add to item meta 
		foreach($this->tm_fields as $pos=>$name) {
			 // it must be array !
			$item_meta['tm_field_'.$pos] = array( isset($product_fields[$name]) ? $product_fields[$name] : "" );
		}	
		return $item_meta;
	}
}	
new WOE_add_extra_fields();