您可以簡單地使用wordpress is_user_logged_in()
函數掛鉤woocommerce_thankyou
來檢查訂單狀態和用戶是否登錄。
add_action('woocommerce_thankyou', 'my_custom_tracking', 10, 1);
function my_custom_tracking($order_id) {
if (!$order_id) {
return;
}
// Lets grab the order
$order = wc_get_order($order_id);
$_billing_email = get_post_meta($order_id, '_billing_email', true);
$user = get_user_by('email', $_billing_email);
//for successful order
if (in_array($order->status, ['processing', 'completed'])) {
if (is_user_logged_in() || $user) {
//it is a returning user
} else {
//user is a guest
}
}
//unsuccessful order
else {
}
}
請注意:如果你想只檢查用戶登錄或不能再由if (is_user_logged_in())
更換if (is_user_logged_in() || $user)
相關問題:woocommerce php snippets for proceeded to checkout to know user is login or not
修訂v2
add_action('woocommerce_thankyou', 'wh_isReturningCustomer', 10, 1);
function wh_isReturningCustomer($order_id) {
if (!$order_id) {
return;
}
// Lets grab the order
//$order = wc_get_order($order_id);
$_billing_email = get_post_meta($order_id, '_billing_email', true);
$args = [
'post_type' => 'shop_order',
'post__not_in' => [$order_id], //exclude current Order ID from order count
'post_status' => ['wc-processing', 'wc-completed'],
'posts_per_page' => -1,
'meta_query' => [
'relation' => 'AND',
[
'key' => '_billing_email',
'value' => $_billing_email,
'compare' => '=',
]
]
];
$posts = new WP_Query($args);
if ($posts->post_count) {
//it is a returning user
} else {
//user is a guest
}
}
代碼在你的活動ch的function.php文件中ild主題(或主題)。或者也可以在任何插件php文件中使用。
代碼已經過測試並且可以正常工作。
希望這會有所幫助!
感謝您的幫助,這兩個答案爲我工作:) –