我试图以数组的形式传递购物车中第一个产品的价格。
下面的代码将这两个值作为一个变量传递,而不是我想要的 - 我希望为购物车中的每个商品价格构建一个数组。
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'firstItemUnitPrice': '<?php
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$_product = $values['data']->post;
$price = get_post_meta($values['product_id'] , '_price', true);
echo $price;
};
?>'
});
</script>
上面的代码输出:
firstItemunitprice:1144
这是因为购物车中有两种产品,一种价值11美元,一种价值44美元。
我知道如何分开它们但我想将它们作为数组添加。帮助
答案 0 :(得分:1)
所以我明白你想要这样的东西:
dataLayer = [{firstItemUnitPrice:11}, {firstItemUnitPrice:44}]
要做到这一点,最好的选择是先在PHP
中创建数组,然后再回显该数组的json_encode
。
所以你可以像这样创建数组:
<?php
global $woocommerce;
$items = $woocommerce->cart->get_cart();
$dataLayer = [];
foreach($items as $item => $values) {
$_product = $values['data']->post;
$dataLayer[] = [
'firstItemUnitPrice' => get_post_meta($values['product_id'] , '_price', true)
];
};
?>
然后在json_encode
中回复javascript
到dataLayer,就像这样:
<script>
window.dataLayer = '<?php echo json_encode($dataLayer); ?>';
</script>
我希望这就是你想要的。