Sie können einfach wordpress is_user_logged_in()
Funktion mit Haken woocommerce_thankyou
verwenden, um den Bestellstatus zu überprüfen und Benutzer ist angemeldet oder nicht.
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 {
}
}
Bitte beachten Sie: Wenn Sie nur Benutzer überprüfen wollen Angemeldete oder nicht, dann ersetzen if (is_user_logged_in() || $user)
durch if (is_user_logged_in())
Verwandte Frage: woocommerce php snippets for proceeded to checkout to know user is login or not
AKTUALISIERT 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
}
}
Code geht in function.php Datei Ihrer aktiven ch ild Thema (oder Thema). Oder auch in beliebigen Plugin-PHP-Dateien.
Code ist getestet und funktioniert.
Hoffe, das hilft!
Danke für Ihre Hilfe, beide Antworten funktionierten für mich :) –