У меня есть JavaScript код отслеживания от sendinblue.
Я хочу запустить «автоматизацию» на этом сайте для сегментации, и для этого я должен отправить данные со своего сайта в sendinblue с помощью его API.
На странице Wocommerce «Спасибо» мне нужно знать категории продуктов, которые покупает клиент, и отправить эти данные в sendinblue через JS.
Я поместил этот код в functions.php
add_action( 'woocommerce_thankyou', 'analisi' );
function analisi($order_id) {
$order = new WC_Order($order_id);
$items = $order->get_items();
foreach ($items as $item_id => $item_data)
{
//getting product object
$_product = wc_get_product($item_data['item_meta']['_product_id'][0]);
//getting all the product category
$pro_cat_array = wp_get_post_terms($_product->ID, 'product_cat');
$pro_cat = implode(',', $pro_cat_array);
//storing all the line item as a string form
$product_js[] = '{category:"' . $pro_cat . '"}';
}
?>
<!-- Paste Tracking Code Under Here -->
<script language="text/javascript">
sendinblue.track('categoria_acquisto', {
'categoria':'[<?= implode(',', $product_js) ?>]';
});
</script>
<?php
}
?>
Когда я моделирую порядок и смотрю код HTML, массив (для отправленных категорий) пуст.
<script language="text/javascript">
sendinblue.track('categoria_acquisto', {
'categoria':'[{category:""}]';
});
</script>
Не уверен, какую версию WooCommerce вы используете, но для WC> 3.0 вы можете использовать что-то вроде:
add_action( 'woocommerce_thankyou', 'analisi' );
function analisi( $order_id ) {
$order = wc_get_order( $order_id );
$items = $order->get_items();
$product_js = array();
/**
* @var WC_Order_Item_Product $item_data
*/
foreach ( $items as $item_id => $item_data ) {
$product = $item_data->get_product();
$categories = array();
$terms = get_the_terms( $product->get_id(), 'product_cat' );
if ( is_wp_error( $terms ) || empty( $terms ) ) {
continue;
}
foreach ( $terms as $term ) {
$categories[] = $term->name;
// Comment out the above and use the line below to have category IDs instead
// $categories[] = $term->term_id;
}
$categories_list = implode( ',', $categories );
if ( $categories_list ) {
$product_js[] = '{category:"' . $categories_list . '"}';
}
}
?>
<!-- Paste Tracking Code Under Here -->
<script language="text/javascript">
sendinblue.track('categoria_acquisto', {
'categoria': '[<?php echo implode( ',', $product_js ) ?>]';
})
;
</script>
<?php } ?>
Других решений пока нет …