我试图以数组的形式传递购物车中第一个产品的价格。
下面的代码将这两个值作为一个变量传递,这不是我想要的——我想为购物车中的每个商品的价格构建一个数组。
<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美元。
我知道如何分开它们,但我希望它们作为一个数组添加。帮助吗?
所以我理解你想要这样的东西:
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>
我希望这是你想要的