在 Woocommerce 中嵌入带有交易 ID 的 clickwork7 跟踪代码

Embed clickwork7 tracking code with the transaction ID in Woocommerce

在 Woocommerce 中,我希望在创建订单时在付款之前获取订单 ID。我在下面找到了这个答案:

我需要在跟踪脚本中传递交易 ID(如脚本中指定的那样),我应该能够在 clickwork7 仪表板中进行跟踪:

<script type="text/javascript" src="https://clickwork7secure.com/p.ashx?
o=45875&e=12995&f=js&t=TRANSACTION_ID"></script>

但是例如在 Paypal 中购买后交易 ID 似乎是空的,所以我可能应该改为传递订单 ID。

订单接收页面似乎是正确的地方,但对于取消或失败的订单,在哪里以及如何嵌入此脚本?

感谢任何帮助。

更新: 可以为此使用许多不同的钩子:

  • wp_head
  • wp_footer
  • woocommerce_thankyou

您可以尝试使用:

  • 订单号(很容易得到)
  • 订购码:$order_key = get_post_meta( $order_id, '_order_key', true );
  • 交易编号:$transaction_id = get_post_meta( $order_id, '_transaction_id', true );

1) 使用 woocommerce_thankyou 挂钩:更简单的方法 因为订单 ID 是一个挂钩参数:

add_action( 'woocommerce_thankyou', 'checkout_clickwork_js_script', 22, 1 );
function checkout_clickwork_js_script( $order_id ) {
    if (  ! $order_id  ) return; // Exit

    $transaction_id = get_post_meta( $order_id, '_transaction_id', true );
    $order_key      = get_post_meta( $order_id, '_order_key', true );

    if( ! empty($transaction_id) ){
        $value = $transaction_id; // TRANSACTION ID
    }
    elseif( ! empty($order_key) ){
        $value = $transaction_id; // ORDER KEY
    } 
    else { 
        $value = $transaction_id; // ORDER ID

    $url = "https://clickwork7secure.com/p.ashx?o=45875&e=12995&f=js&t=$value";

    ?><script type="text/javascript" src="<?php echo $url; ?>"></script> <?php
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该有效。


2) 使用 wp_head 钩子:

add_action( 'wp_head', 'checkout_clickwork_js_script', 998 );
function checkout_clickwork_js_script() {
    // Only order-received page 
    if( is_wc_endpoint_url('order-received') ) :

    global $wp;

    $order_id  = absint( $wp->query_vars['order-received'] );

    if ( ! $order_id || empty($order_id) )
        return; // Exit

    $transaction_id = get_post_meta( $order_id, '_transaction_id', true );
    $order_key      = get_post_meta( $order_id, '_order_key', true );

    if( ! empty($transaction_id) ){
        $value = $transaction_id; // TRANSACTION ID
    }
    elseif( ! empty($order_key) ){
        $value = $transaction_id; // ORDER KEY
    } 
    else { 
        $value = $transaction_id; // ORDER ID

    $url = "https://clickwork7secure.com/p.ashx?o=45875&e=12995&f=js&t=$value";

    ?><script type="text/javascript" src="<?php echo $url; ?>"></script> <?php
    endif;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该有效。

The condition if( is_wc_endpoint_url('order-received') ) : can be extended to handle cancelled and failed orders custom endpoints too …


相似答案: