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

时间:2015-10-22 16:59:26

标签: php wordpress woocommerce customization orders

我需要捕获一个变量,用于跟踪来自传入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工作的经验很少,想知道这是否是正确的方法?

2 个答案:

答案 0 :(得分: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 );
}

答案 1 :(得分:0)

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

    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']);   
    }