View Categories

Enhanced eCommerce tracking (Woocommerce)

3 min read

Da li tema podržava Woo? #

Prvi korak je provera da li tema ima podršku za Woo, ako to nije slučaj, potrebno je unutar teme (ako ne postoji child tema, bilo bi više nego poželjno kreirati child temu prvo) dodati:

// function.php 
function mytheme_add_woocommerce_support() {
    add_theme_support( 'woocommerce' );
}

add_action( 'after_setup_theme', 'mytheme_add_woocommerce_support' );

Kreirati child temu! #

Zbog sigurnosti i budućih update-ovanja Woo-a potrebno je kreirati prvo child temu vaše teme.

Kreirati Woocommerce folder strukturu unutar child teme #

Sledeći korak, nakon kreiranja teme, jeste kreiranje folder strukture pogodne za Woocommerce.
To znači, da možemo dodavati naš custom kod, bez da brinemo o budućim update-ovima plugin-a ili parent teme.

U trenutku pisanja ovog tutorijala, trenutna verzija Woo-a je:

7.1.1

Postoji mala šansa da se folder strukura u narednim verzijama promeni, ali nije na odmet proveriti da li folder strukutra u novijim verzijama se poklapa sa folder strukturom tutorijala.

Kreirati thankyou.php fajl #

Sva magija oko hvatanja podataka o uspešnoj kupovini na sajtu, i slanju dalje dešava se unutar thankyou.php fajla koji se nalazi na sledećoj putanji:

Vaša tema - Child: thankyou.php (woocommerce/checkout/thankyou.php)

Ili

Slanje podataka o uspešnoj kupovini obavlja JS, tako da je potrebno kreirati <script> tag na trenutnom templejtu, pa zatim unutar njega prikupiti sve podatke i poslati dalje.

Dovoljno je kopirati sav sadržaj iz parent teme, na istoj lokaciji, i zalepiti na templejtu iznad.

Lokacija kreiranja script taga nije toliko važna, mada u svim slučajevima do sada, script tag sam smeštao nakon p taga sa klasom : woocommerce-notice woocommerce-notice--success woocommerce-thankyou-order-received

Na kom se prikazuje status uspešne kupovine.

Izgled script taga je sledeći:

<script>
		    var dataLayer = window.dataLayer || [];
		    dataLayer.push({
                event: "transaction",
                ecommerce: {
                    purchase: {
                        actionField: {
                            id: "<?php echo $order->get_id(); ?>", 
                            revenue: "<?php echo $order->total; ?>", 
                            tax: "<?php echo $order->total_tax; ?>",
                        },
                        products: [
                <?php foreach ( $order->get_items() as $item_id => $item ) { 
                    
                    $product_id = $item->get_product_id();
                    $product = wc_get_product( $product_id );
                    ?>
                            {
                                price: "<?php      if($product->get_sale_price()) { 
echo $product->get_sale_price(); 
} else { 
echo $product->get_regular_price();
}  ?>",
                                name: "<?php echo $item->get_name(); ?>", 
                                id: "<?php echo $item->get_product_id(); ?>",
                                <?php 
                                $terms = get_the_terms ( $item->get_product_id(), 'product_cat');
                                foreach ( $terms as $term ) {
                                ?>
                                category: "<?php echo $term->name; ?>", 
                                <?php } ?>

                                quantity: <?php echo $item->get_quantity(); ?>,
                            },
                <?php } ?>
                        ], 
                    },
                },
            });



		</script>

Šta je kod ove skripte važno #

  • Proveriti ime eventa
  • Varijabilnost kategorija (da li je potrebno slati kategoriju, i da li je kategorija default-na ili neka custom)
  • Pitati Stefana da li je potrebno slati samo regularnu cenu proizvoda ili slati cenu na popustu (ako postoji)?
  • Ako cena sa popustom nije potrebna, potrebno je izbrisati višak koda iz skripte iznad u delu price

Ako niste sigurni da li se sva polja (koja su vama potrebna) nalaze u varijabli $order koristite php f-ju za printanje i pregledajte.

<?php    //var_dump($order);    ?>

Srećno 😊

Leave a Reply 0

Your email address will not be published. Required fields are marked *