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 );
Translate »
滚动至顶部