由於 #BloomerArmada 粉絲的 WooCommerce 片段請求不斷來到我的收件箱,現在是發布非常有用的功能的時候了。

今天,我們將看到如何拒絕向給定的帳單電子郵件地址購買,如果這是一個用戶,並且恰好有一個待處理訂單!

PHP 代碼段:如果用戶有待處理訂單,拒絕結帳| WooCommerce

/**
 * @snippet       Deny Checkout to User With Pending Orders | WooCommerce

 * @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', // WC orders post type
        'post_status' => 'wc-pending' // Only orders with status "completed"
) );
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');
}
}

}


可以在哪裡添加此代碼?

您可以將 PHP 代碼片段放置在主題或子主題的 functions.php 文件的底部(如果是 CSS 代碼,請添加到主題的 style.css 文件底部),修改之前建議先備份原始文件,若出現錯誤請先刪除此代碼。


這段代碼是否正常可用?

或者是您有更好的解決方案想要分享?請到薇曉朵 WooCommerce 中文論壇留言告知,我們希望可以幫到更多國內的 WooCommerce 用戶也希望您的參與。


需要關於 WooCommerce 的幫助?

請觀看我們提供的免費視頻教程或到薇曉朵 WooCommerce 中文論壇提問,會有專業技術團隊提供相關幫助。