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

在希望的田野上,我们看到了希望,看到了未来,看到了祖国未来繁荣昌盛的景象。

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

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

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

/**
 * @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,然后查询这个用户是否有未完成支付的订单,如果有,就返回错误提示。

文章出自:https://businessbloomer.com/?p=55387, 由 WordPress 大学 整理。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

以上就是WooCommerce 检查用户是否有未完成支付的订单。谁都不傻,总是敷衍,都会渐行渐远;谁也不笨,没被看重,都要越来越淡。更多关于WooCommerce 检查用户是否有未完成支付的订单请关注haodaima.com其它相关文章!