#woocommerce #hook-woocommerce
Вопрос:
Цель — Я пытаюсь запустить скрипт Google Analytics с помощью functions.php когда товар успешно добавлен в корзину.
Проблема — Не удается получить подробную информацию о товаре, добавленном в корзину.
Что я пробовал — я попытался добавить следующий код в functions.php чтобы понять, правильно ли я понимаю детали. Но сценарий, похоже, не работает.
add_action('woocommerce_add_to_cart', 'custom_add_to_cart', 10, 6);
function custom_add_to_cart($cart_item_key,$product_id,$quantity,$variation_id,$variation,$cart_item_data
) {
?>
<script>
console.log("<?php echo 'Product ID ' . $product_id; ?>");
console.log("<?php echo 'Quantity ' . $quantity; ?>");
console.log("<?php echo 'Variation ID ' . $variation_id; ?>");
console.log("<?php echo 'Product ' . $variation; ?>");
console.log("<?php echo 'Cart Data ' . $cart_item_data; ?>");
</script>
<?php
}
Если проблема будет решена — как только я успешно получу подробную информацию в консоли, я передам значения в следующем сценарии Google Analytics
gtag('event', 'add_to_cart', {
"items": [
{
"id": "P12345",//Will be replaced by product id
}
]
});
Комментарии:
1. Читать это — Документы. woocommerce.com/document/google-analytics-integration
2. Большое спасибо, Мартин, проверю. Ценю вашу помощь.
Ответ №1:
Как я нашел решение и как оно сработало для меня
1. Я выяснил, что всякий раз, когда товар добавляется в корзину, сайт автоматически перенаправляется на страницу корзины.
2. Затем я понял, что последний добавленный товар добавляется последним в массив товаров, что заставило меня использовать страницу корзины для запуска добавления в корзину вместо самой страницы корзины.
3. Я использовал крючок Woocommerce, доступный на странице корзины, а затем нашел последний товар в массиве корзины.
4. Затем я вроде как закончил и запустил PHP-скрипт, чтобы событие Google Analytics можно было разместить в HTML.
5. Теперь я понял, что некоторые люди могут нажать на корзину, и страница корзины все равно вызовет событие добавления товара в корзину. Поэтому я добавил простое утверждение IF для запуска кода события Google analytics только в том случае, если отправитель не является страницей корзины.
add_action( 'woocommerce_before_cart_contents', 'google_analytics_custom_add_to_cart');
function google_analytics_custom_add_to_cart() {
$prod_ids = array();
global $woocommerce;
$prods = $woocommerce->cart->get_cart();
$custom_last_item_index= count($prods)-1;
// loop products
foreach($prods as $p => $values) {
$product_detail = wc_get_product( $values['data']->get_id());
array_push($prod_ids, $product_detail->get_id());
}
?>
<script>
// understand the referrer
if(document.referrer!="https://websitename/cart/"){
gtag('event', 'add_to_cart', {
"items": [
{
"id": "<?php echo $prod_ids[$custom_last_item_index] ;?>",
}
]
});
}
</script>
<?php
}
Возможно, это не самый прямой или лучший ответ, но он мне помог. Поэтому я подумал о том, чтобы поделиться им со всеми вами.