解析訂購者來源

使用下面的function即可自動解析 utm_source, utm_medium, utm_campaign 等資訊,並寫入訂單的管理備註

// Start session
function start_session() {
    if( !session_id() ) {
        session_start();
    }
}
add_action('init', 'start_session', 1);

// Save UTM parameters in session
function save_utm_parameters() {
    if( isset($_GET['utm_source']) ) {
        $_SESSION['utm_source'] = sanitize_text_field($_GET['utm_source']);
    }
    if( isset($_GET['utm_medium']) ) {
        $_SESSION['utm_medium'] = sanitize_text_field($_GET['utm_medium']);
    }
    if( isset($_GET['utm_campaign']) ) {
        $_SESSION['utm_campaign'] = sanitize_text_field($_GET['utm_campaign']);
    }
}
add_action('wp', 'save_utm_parameters');

// Add UTM parameters to order notes
function add_utm_to_order_notes( $order_id ) {
    if( isset($_SESSION['utm_source']) || isset($_SESSION['utm_medium']) || isset($_SESSION['utm_campaign']) ) {
        $order = wc_get_order( $order_id );
        $utm_note = 'UTM Parameters: ';
        if( isset($_SESSION['utm_source']) ) {
            $utm_note .= 'Source: ' . $_SESSION['utm_source'] . ' ';
        }
        if( isset($_SESSION['utm_medium']) ) {
            $utm_note .= 'Medium: ' . $_SESSION['utm_medium'] . ' ';
        }
        if( isset($_SESSION['utm_campaign']) ) {
            $utm_note .= 'Campaign: ' . $_SESSION['utm_campaign'];
        }
        $order->add_order_note( $utm_note );

        // Clear session after adding to order note
        unset($_SESSION['utm_source']);
        unset($_SESSION['utm_medium']);
        unset($_SESSION['utm_campaign']);
    }
}
add_action('woocommerce_checkout_update_order_meta', 'add_utm_to_order_notes');
瀏覽次數:4