我需要捕获一个变量,用于跟踪来自传入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工作的经验很少,想知道这是否是正确的方法?
你正在设置会话变量,但是没有使用它...我相信你的函数看起来应该更像下面这样:
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 );
}
由于某些未知原因,该变量未从会话传递到$ 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']);
}