WooCommerce 是非常流行的WordPress商城插件,在實(shí)際使用中,可能同一個用戶提交了訂單以后,出于某些原因沒有完成付款操作,然后再次提交了新訂單。
如果你想避免這個問題,可以檢查下當(dāng)前用戶(通過郵箱地址判斷)是否有未完成支付的訂單,如果有,就提示他登錄賬戶完成支付,如下圖所示:

實(shí)現(xiàn)的完整代碼如下所示:
/**
* @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 大學(xué) 整理。
聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。




