WooCommerce 检查用户是否有未完成支付的订单

WooCommerce 是非常流行的WordPress商城插件,在实际使用中,可能同一个用户提交了订单以后,出于某些原因没有完成付款操作,然后再次提交了…

WooCommerce 是非常流行的WordPress商城插件,在实际使用中,可能同一个用户提交了订单以后,出于某些原因没有完成付款操作,然后再次提交了新订单。

如果你想避免这个问题,可以检查下当前用户(通过邮箱地址判断)是否有未完成支付的订单,如果有,就提示他登录账户完成支付,如下图所示:

WooCommerce 检查用户是否有未完成支付的订单插图

实现的完整代码如下所示:

/**
* @snippet       Deny Checkout to User With Pending Orders | WooCommerce
* @how-to        Get CustomizeWoo.com FREE
* @sourcecode    https://businessbloomer.com/?p=55387
* @author        Rodolfo Melogli
* @testedwith    WooCommerce 3.0.5
*/
add_action('woocommerce_after_checkout_validation', 'bbloomer_deny_checkout_user_pending_orders');
function bbloomer_deny_checkout_user_pending_orders( $posted ) {
global $woocommerce;
$checkout_email = $posted['billing_email'];
$user = get_user_by( 'email', $checkout_email );
if ( ! empty( $user ) ) {
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key'    => '_customer_user',
'meta_value'  => $user->ID,
'post_type'   => 'shop_order', // WP订单文章类型
'post_status' => 'wc-pending' // 获取未完成支付的订单
) );
foreach ( $customer_orders as $customer_order ) {
$count++;
}
if ( $count > 0 ) {
wc_add_notice( 'Sorry, please pay your pending orders first by logging into your account', 'error');
}
}
}

先通过邮箱获取到用户id,然后查询这个用户是否有未完成支付的订单,如果有,就返回错误提示。

人已赞赏
WordPress建站

宝塔面板为WordPress网站添加SSL证书设置https访问

2020-7-13 17:27:26

WordPress建站

WordPress网站最常用的键盘快捷键

2020-7-13 17:32:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索