簡體   English   中英

在 WooCommerce 結賬頁面為訪客客戶設置 state 默認為空白

[英]Set state by default blank for guest customers on WooCommerce checkout page

我試過下面的代碼讓訪問者的默認 state 為空,所以他們必須手動選擇它。

我希望它僅適用於未登錄的用戶,因為如果注冊客戶去結賬,我希望預選 state,因為 WooCommerce 可能會在他注冊時保留他的 state!

add_filter( 'default_checkout_billing_state', 'change_default_checkout_state' );
add_filter( 'default_checkout_shipping_state', 'change_default_checkout_state' );
function change_default_checkout_state() {
    if ( ! is_user_logged_in() && is_checkout() ) {
    return ''; //set it to blank.
}
}

不幸的是,上面的代碼甚至對登錄用戶也有效。 有什么建議嗎?

確保在使用過濾器鈎子時總是有一些東西可以在條件之外返回。 否則,如果不滿足條件,則有可能不會返回任何內容,或者您會收到一條錯誤消息。

所以你得到:

function filter_default_checkout_state( $default, $input ) {
    // NOT logged in
    if ( ! is_user_logged_in() ) {
        return null;
    }

    return $default;
}
add_filter( 'default_checkout_billing_state', 'filter_default_checkout_state', 10, 2 );
add_filter( 'default_checkout_shipping_state', 'filter_default_checkout_state', 10, 2 );
add_filter('default_checkout_shipping_state', 'default_checkout_default_state', 10, 2);
add_filter('default_checkout_billing_state', 'default_checkout_default_state', 10, 2);

function default_checkout_default_state($default_value, $input_field) {
    if (!is_user_logged_in()) {
        return null;
    }
    return $default_value;
}

這是用於此return apply_filters( 'default_checkout_'. $input, $value, $input ); woocommerce/includes/class-wc-checkout.php中的第 1270 行。 此掛鈎始終有兩個參數,並且沒有帶有單個參數的掛鈎default_checkout_shipping_state

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM