使用下面的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');