WooCommerce CheckOut Referral
// —————————–
// WooCommerce: attach referral to checkout & save to order meta
// —————————–// Show hidden field on checkout (after order notes)
function bbb_wc_checkout_ref_hidden_field() {
// only show if WooCommerce active
if ( ! class_exists( ‘WC_Checkout’ ) ) return;
// try from cookie first, then from GET param
$ref = false;
if ( isset( $_COOKIE[‘bbb_ref’] ) && $_COOKIE[‘bbb_ref’] ) {
$ref = sanitize_text_field( wp_unslash( $_COOKIE[‘bbb_ref’] ) );
}
if ( empty( $ref ) && ! empty( $_GET[‘ref’] ) ) {
$ref = sanitize_text_field( wp_unslash( $_GET[‘ref’] ) );
}
if ( $ref ) {
// output hidden input (escaped)
echo ‘‘;
}
}
add_action( ‘woocommerce_after_order_notes’, ‘bbb_wc_checkout_ref_hidden_field’ );// Save referral into order meta when checkout is processed
function bbb_wc_save_ref_to_order_meta( $order_id, $data = array() ) {
if ( ! $order_id ) return;
if ( ! class_exists( ‘WC_Order’ ) ) return;
// prefer POST field (from hidden input) else fallback to cookie
$ref = ”;
if ( ! empty( $_POST[‘bbb_ref_checkout’] ) ) {
$ref = sanitize_text_field( wp_unslash( $_POST[‘bbb_ref_checkout’] ) );
} elseif ( isset( $_COOKIE[‘bbb_ref’] ) && $_COOKIE[‘bbb_ref’] ) {
$ref = sanitize_text_field( wp_unslash( $_COOKIE[‘bbb_ref’] ) );
}if ( $ref ) {
// attach meta keys used by Phase2 plugin
update_post_meta( $order_id, ‘_bbb_referral’, $ref );
// ensure commission meta exists (default 0.00) — later logic will update this
if ( get_post_meta( $order_id, ‘_bbb_commission_amount’, true ) === ” ) {
update_post_meta( $order_id, ‘_bbb_commission_amount’, 0 );
}
// optionally add an order note for quick admin visibility
$order = wc_get_order( $order_id );
if ( $order ) {
$order->add_order_note( ‘[BBB] Referral attached: ‘ . $ref );
}
}
}
add_action( ‘woocommerce_checkout_update_order_meta’, ‘bbb_wc_save_ref_to_order_meta’, 20, 2 );// Ensure referral persists on thankyou page / order received hook (double-check)
function bbb_wc_ensure_ref_on_thankyou( $order_id ) {
if ( ! $order_id ) return;
if ( get_post_meta( $order_id, ‘_bbb_referral’, true ) ) return; // already set
if ( isset( $_COOKIE[‘bbb_ref’] ) && $_COOKIE[‘bbb_ref’] ) {
$ref = sanitize_text_field( wp_unslash( $_COOKIE[‘bbb_ref’] ) );
update_post_meta( $order_id, ‘_bbb_referral’, $ref );
if ( get_post_meta( $order_id, ‘_bbb_commission_amount’, true ) === ” ) {
update_post_meta( $order_id, ‘_bbb_commission_amount’, 0 );
}
$order = wc_get_order( $order_id );
if ( $order ) $order->add_order_note( ‘[BBB] Referral attached from cookie on thankyou: ‘ . $ref );
}
}
add_action( ‘woocommerce_thankyou’, ‘bbb_wc_ensure_ref_on_thankyou’, 15, 1 );