Support

Account

Home Forums General Issues Woocommerce order exports variable products

Helping

Woocommerce order exports variable products

  • Hello everyone.

    I urgently need help and am looking for an ingenious idea for the following problem: How can I retrieve ACF information for variable products when exporting orders from Woocommerce?

    Details:

    > Orders should be exported from Woocommerce with the plugin “WP ALL EXPORT PRO” and ACF to my fulfillment partner as XML
    > ONLY relevant orders or products with necessary information should be filtered, which works well for “simple products” with the following code
    > Variable products (T-shirts) are also correctly recognized and exported by the code – BUT all ACF information remains empty and is not retrieved

    What have I created?

    > Created variable product “T-SHIRT” in the Woocommerce Dashboard
    > Woocommerce attribute “SIZE” with the variants S / M / L / XL
    > ACF field group “DDF” with desired text fields created to export the necessary ACF information later for orders (in addition to simple products also for product variants e.g. T-SHIRT, SIZE “L”)
    > Field group rule: content type -> is equal to -> product
    > Do I also have to apply the rule here? Taxonomy -> is equal to -> “SIZE”

    Do I have to add or create other settings in ACF?
    or is this only possible with ACF Pro?

    ->

    /////CURRENT STATUS CODE IN WP ALL EXPORT

    //////XML EDITOR

    <?xml version="1.0" encoding="UTF-8"?>
    <orders>
    	<!-- BEGIN LOOP -->
    	<order>
    		<commission>{Bestell ID}</commission>
    		<production>2</production>
    
    		<receiver>
    			<line1>{Shipping First Name} {Shipping Last Name}</line1>
    			<line2>{Shipping Company}</line2>
    			<street>{Shipping Address 1}</street>
    			<streetnumber>{Shipping Address 2}</streetnumber>
    			<country_code>{Shipping Country}</country_code>
    			<zip>{Shipping Postcode}</zip>
    			<city>{Shipping City}</city>
    			<email>{Customer Account Email Address}</email>
    
    		</receiver>	
    
    		<items>	
    			[my_get_order_items({Bestell ID})]
    		</items>
    	</order>
    	<!-- END LOOP -->
    </orders>

    /////FUNCTION EDITOR

    <?php
    
    function my_get_order_items($Bestell_id) {
        // Check if the Bestell ID is valid
        if (!$Bestell_id) {
            return false;
        }
    	
        // Fetch the order
        $order = wc_get_order($Bestell_id);
        if (!$order) {
            return false;
        }
    
        // Initialize the string to store order details
        $order_details = "";
    
        // Loop through each order item
        foreach ($order->get_items() as $item_id => $item) {
            // Get the product object
            $product = $item->get_product();
    
            // Skip if there's no product associated with the item
            if (!$product) 
    		{ continue; }
    		
    		
    		if (!(
    strpos($item->get_name(), 'KERAMIKTASSE') !== false ||
    strpos($item->get_name(), 'BAUMWOLLTASCHE') !== false ||
    strpos($item->get_name(), 'T-SHIRT') !== false))
    { continue; }
    		
    		$order_details .= "**LT**item**GT**";
    		$order_details .= "**LT**ID**GT**" . $product->get_sku() . "**LT**/ID**GT**";
    		$order_details .= "**LT**produktname**GT**" . $item->get_name() . "**LT**/produktname**GT**";
    		$order_details .= "**LT**amount**GT**" . $item->get_quantity() . "**LT**/amount**GT**";
    		$order_details .= "**LT**upload**GT**" . maybe_serialize( get_field( 'upload', $product->get_id() ) ) . "**LT**/upload**GT**";
    		$order_details .= "**LT**size**GT**" . maybe_serialize( get_field( 'size', $product->get_id() ) ) . "**LT**/size**GT**";
    		$order_details .= "**LT**groesse**GT**" . maybe_serialize( get_field( 'produktgröße', $product->get_id() ) )  . "**LT**/groesse**GT**";
    		$order_details .= "**LT**material**GT**" . maybe_serialize( get_field( 'material', $product->get_id() ) ) . "**LT**/material**GT**";
    		$order_details .= "**LT**print**GT**" . maybe_serialize( get_field( 'print', $product->get_id() ) ) . "**LT**/print**GT**";
    		$order_details .= "**LT**variante**GT**" . maybe_serialize( get_field( 'variante', $product->get_id() ) ) . "**LT**/variante**GT**";
    		$order_details .= "**LT**category**GT**" . maybe_serialize( get_field( 'category', $product->get_id() ) ) . "**LT**/category**GT**";
    		
    		 //add options to the output
            $order_details .= "**LT**Options**GT**";
                $order_details .= "**LT**Option**GT****LT**ID**GT**" . "1996" . "**LT**/ID**GT****LT**Value**GT**" . maybe_serialize( get_field( 'value_115', $product->get_id() ) ) . "**LT**/Value**GT****LT**/Option**GT**";
    		
    		    $order_details .= "**LT**Option**GT****LT**ID**GT**" . "2489" . "**LT**/ID**GT****LT**Value**GT**" . maybe_serialize( get_field( 'value_117', $product->get_id() ) ) . "**LT**/Value**GT****LT**/Option**GT**";
    		
    		   	$order_details .= "**LT**Option**GT****LT**ID**GT**" . "2056" . "**LT**/ID**GT****LT**Value**GT**" . maybe_serialize( get_field( 'value_118', $product->get_id() ) ) . "**LT**/Value**GT****LT**/Option**GT**";
    		
            $order_details .= "**LT**/Options**GT**";
            
    		$order_details .= "**LT**/item**GT**";
    		
        }
    
        return $order_details;
    }
    
    ?>

    ->

    Does anyone have an idea?

    Many thanks.

Viewing 1 post (of 1 total)

You must be logged in to reply to this topic.