Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
3.8 kB
3
Indexable
Never
// tracking script for Everflow

add_action( 'woocommerce_thankyou', 'my_custom_tracking' );

function my_custom_tracking( $order_id ) {
// Lets grab the order
    $order = wc_get_order( $order_id );

   
    //Everflow order objects
    $efOrder = array();
    $efOrder['items'] = array();
    $efOrder['oid'] = $order_id;
    $efOrder['amt'] = $order->get_total();
    $efOrder['bs'] = $order->get_billing_state();
    $efOrder['bc'] = $order->get_billing_country();
	
	
	$customer_ordered_already = lostemp_customer_already_bought_product($order->billing_email);
	
	
	// Determine if any coupons were used for this transaction
    $coupons = "";
    $couponCount = 0;
    foreach ($order->get_used_coupons() as $coupon) {
        $couponCount++;
        if($couponCount > 1) { // do not add comma unless more than one coupon
            $coupons .= ',';
        }
        $coupons .= $coupon;
    }
    $efOrder['cc'] = $coupons;


    // This is how to grab line items from the order
    $line_items = $order->get_items();

    $javascriptCode = '<script type="text/javascript" src="https://www.lcp5trk.com/scripts/sdk/everflow.js"></script>';
    
    $skusQuantity = array();
    foreach ( $line_items as $item ) {
	$product = $order->get_product_from_item( $item );
        if ( $product->get_type() === 'variation' ) { 
            $sku = $product->get_sku(); 
        } else { 
            $sku = $product->get_sku(); 
        }

	if (!isset($skusQuantity[$sku])) {
	    $skusQuantity[$sku] = 0;	
	}
	$skusQuantity[$sku]++;
    }

    // This loops over line items
    foreach ( $line_items as $item ) {
        //Init Everflow item
        $efItem = array();
        
        // This will be a product
        $product = $order->get_product_from_item( $item );
        
        // This is the products SKU (variant or parent)
        $efItem['vs'] = $efItem['ps'] = $adv2 = '';
        if ( $product->get_type() === 'variation' ) { 
            $efItem['vs'] = $product->get_sku(); 
            $adv2 = $efItem['vs'];
        } else { 
            $efItem['ps'] = $product->get_sku(); 
            $adv2 = $efItem['ps'];
        }
        // This is the qty purchased
        $efItem['qty'] = $skusQuantity[$efItem['ps']];
	$adv3 = $efItem['qty'];
        
        // Line item total cost including taxes and rounded
        //$efItem['p'] = $order->get_line_total( $item, true, true );
        $efItem['p'] = $order->get_line_total( $item, false, true );
        
        $efItems = array();
        $efItems[] = $efItem;
        $efOrder['items'] = $efItems;
		
		// CUSTOMER ORDER COUNT
$current_user = wp_get_current_user();
$numorders = wc_get_customer_order_count( $current_user->ID );

// GET CANCELLED ORDERS FOR CUSTOMER
$args = array(
'customer_id' => $current_user->ID,
'post_status' => 'cancelled',
'post_type' => 'shop_order',
'return' => 'ids',
);
$numorders_cancelled = 0;
$numorders_cancelled = count( wc_get_orders( $args ) ); // count the array of orders

// NON-CANCELLED equals TOTAL minus CANCELLED
$num_not_cancelled = $numorders - $numorders_cancelled;
        
        $javascriptCode .= '
                      <script type="text/javascript">
                        EF.conversion({
                                aid: 1,
                                amount: '.$efItem['p'].',
                                order: '.json_encode($efOrder).',
                                adv1: "'.$product->get_name().'",
                                adv2: "'.$adv2.'",
			       				adv3: "'.$adv3.'",
								adv4: "'.$customer_ordered_already.'",
								email: "'.$order->billing_email.'",
								
                                });
								
                                </script>';
    }

    echo $javascriptCode;
}