为了账号安全,请及时绑定邮箱和手机立即绑定

在 WooCommerce 订单收到(谢谢)页面中检查新客户

在 WooCommerce 订单收到(谢谢)页面中检查新客户

梵蒂冈之花 2021-12-03 19:37:02
我正在尝试在Thankyou 页面中向新的所有客户(不是回头客)显示一条自定义消息,并且我正在使用“检查客户是否已经在 WooCommerce 中购买了某些东西”回答代码。问题是无法检测到客户之前是否购买过。例如,如果我在感谢页面中使用当前代码,新客户将成为老客户。所以我的问题是:如何检查客户是否较早购买了不在当前订单中的任何产品?这是我的代码尝试,它不能正常工作: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;}
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

Thankyou页面上,您的目标是下一个付费订单,因此您需要对条件函数进行一些更改,has_bought_before()最后替换以下行:

return count( $results ) > 0 ? true : false;

经过:

return count( $results ) > 1 ? true : false;

它现在应该像你期望的那样工作。

可以重命名这个条件函数thankyou_has_bought_before()


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信