将自定义数据添加到wordpress客户订单

问题描述 投票:1回答:2

我需要捕获一个变量,用于跟踪来自传入URL的引用并将其附加到wordpress / woocommerce中的订单。目前在主题header.php文件中我有:

    if(!empty($_GET['refID'])) $_SESSION['refID'] = $_GET['refID'];

然后,在我的主题functions.php文件中,我有:

    if(!empty($_SESSION['refID'])) $rID = $_SESSION['refID'];
    else $rID = "no var set";

    add_action( 'woocommerce_checkout_update_order_meta', 'my_add_order_meta', 10, 2 );
    function my_add_order_meta( $order_id, $rID ) {
        update_post_meta( $order_id, 'refID', $rID );
    }

会话变量出现在WP会话中,但在发布后没有出现在订单中。我在WP / woocommerce工作的经验很少,想知道这是否是正确的方法?

php wordpress woocommerce customization orders
2个回答
0
投票

你正在设置会话变量,但是没有使用它...我相信你的函数看起来应该更像下面这样:

add_action( 'woocommerce_checkout_update_order_meta', 'my_add_order_meta' );
function my_add_order_meta( $order_id ) {
    // Get the stored refID
    $refID = isset( $_SESSION['refID'] ) ? $_SESSION['refID'] : null;
    // Update the refID meta
    update_post_meta( $order_id, 'refID', $refID );
}

0
投票

由于某些未知原因,该变量未从会话传递到$ rID。通过使用实际的会话变量,该函数现在将附加数据发布到订单。我还在函数调用中将$ rID替换为$ post:

    add_action( 'woocommerce_checkout_update_order_meta', 'my_add_order_meta', 10, 2 ); 
    function my_add_order_meta( $order_id, $posted ) {
    update_post_meta($order_id, 'refID', $_SESSION['refID']);   
    }
© www.soinside.com 2019 - 2024. All rights reserved.