在 WooCommerce Order received (Thankyou) 页面中检查新客户
Check for new customers in WooCommerce Order received (Thankyou) page
我正在尝试在谢谢页面中向所有新客户(不是回头客)显示自定义消息,我正在使用 "" 答案代码。
问题是无法检测客户之前是否购买过。例如,如果我在感谢页面中使用当前代码,新客户将成为老客户。
所以我的问题是:如何检查客户之前是否购买了不在当前订单中的任何产品?
这是我的代码尝试,它没有正常工作:
function has_bought_before( $user_id = 0 ) {
global $wpdb;
$customer_id = $user_id == 0 ? get_current_user_id() : $user_id;
$paid_order_statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() );
$results = $wpdb->get_col( "
SELECT p.ID FROM {$wpdb->prefix}posts AS p
INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $paid_order_statuses ) . "' )
AND p.post_type LIKE 'shop_order'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = $customer_id
" );
// Count number of orders and return a boolean value depending if higher than 0
return count( $results ) > 0 ? true : false;
}
add_filter('woocommerce_thankyou_order_received_text', 'woo_change_order_received_text', 10, 2 );
function woo_change_order_received_text( $str, $order ) {
if( has_bought_before() ){
$new_str = $str . ' Welcome Back Again.';
}else{
$new_str = $str . ' Welcome To our site You will get 10% discount on your next order.';
}
return $new_str;
}
在 thankyou 页面上,您的目标是下一个已付款订单,因此您需要对条件函数 has_bought_before()
做一点改动,最后,将行:
return count( $results ) > 0 ? true : false;
作者:
return count( $results ) > 1 ? true : false;
它现在应该可以正常工作了。
可以重命名此条件函数 thankyou_has_bought_before()
。
我正在尝试在谢谢页面中向所有新客户(不是回头客)显示自定义消息,我正在使用 "
问题是无法检测客户之前是否购买过。例如,如果我在感谢页面中使用当前代码,新客户将成为老客户。
所以我的问题是:如何检查客户之前是否购买了不在当前订单中的任何产品?
这是我的代码尝试,它没有正常工作:
function has_bought_before( $user_id = 0 ) {
global $wpdb;
$customer_id = $user_id == 0 ? get_current_user_id() : $user_id;
$paid_order_statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() );
$results = $wpdb->get_col( "
SELECT p.ID FROM {$wpdb->prefix}posts AS p
INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $paid_order_statuses ) . "' )
AND p.post_type LIKE 'shop_order'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = $customer_id
" );
// Count number of orders and return a boolean value depending if higher than 0
return count( $results ) > 0 ? true : false;
}
add_filter('woocommerce_thankyou_order_received_text', 'woo_change_order_received_text', 10, 2 );
function woo_change_order_received_text( $str, $order ) {
if( has_bought_before() ){
$new_str = $str . ' Welcome Back Again.';
}else{
$new_str = $str . ' Welcome To our site You will get 10% discount on your next order.';
}
return $new_str;
}
在 thankyou 页面上,您的目标是下一个已付款订单,因此您需要对条件函数 has_bought_before()
做一点改动,最后,将行:
return count( $results ) > 0 ? true : false;
作者:
return count( $results ) > 1 ? true : false;
它现在应该可以正常工作了。
可以重命名此条件函数 thankyou_has_bought_before()
。