仅在 woocommerce 购物车页面上的 wp_head 中包含 javascript 代码并获取购物车小计和货币

时间:2021-03-22 16:13:54

标签: woocommerce

在 woocommerce 购物车页面上,我需要包含一个事件代码段(在 wp_head 中)并将购物车的价值和所选货币传递给它。这是我到目前为止的代码:

add_action('wp_head', 'cart_page_tracking_codes');
function cart_page_tracking_codes() {
    if ( ! is_wc_endpoint_url('is_cart') ) return;
    global $woocommerce;
    $cart_total = $woocommerce->cart->get_cart_total();

    ?>
    <script>
        pintrk('track', 'addtocart', {
        value: <?php echo $cart_total; ?>,
        // order_quantity: 1,
        currency: 'USD'
        });
    </script>
    <?php
}

我被困在获取货币上。请注意,商店提供美元和加元。 get_currency() 与现有的 Woocommerce 订单相关。

1 个答案:

答案 0 :(得分:0)

您要查找的条件是 is_cart() 而不是 is_wc_endpoint_url()

根据后续评论,您还需要未格式化的价格。 get_cart_total() 将默认显示格式(添加货币符号等)。但是,如果您使用 get_total() 并传入视图以外的上下文,它将返回未格式化的值。

WooCommerce 默认不支持多种货币,因此它的货币方面将取决于您使用的插件。我已经使用 WooCommerce 的基础货币编写了答案。您需要与插件的支持团队联系,以确定如何访问客户选择的货币。

function wpse_insert_cart_tracking_script() {
    if ( ! is_cart() ) {
        return;
    } ?>

    <script>
        pintrk('track', 'addtocart', {
            value: <?php echo WC()->cart->get_total( 'raw' ); ?>,
            currency: '<?php echo get_woocommerce_currency(); ?>'
        });
    </script>

    <?php
}
add_action( 'wp_head', 'wpse_insert_cart_tracking_script' );