WooCommerce - удалите поля выставления счетов, если платеж не нужен, перестал работать с версией 4.0 - PullRequest
0 голосов
/ 15 марта 2020

После обновления до WooCommerce 4.0 я не могу удалить поля оплаты, если не требуется никакой оплаты. У меня этот код работал отлично в течение почти года, я пробовал разные примеры, отличные от поиска в Интернете, но я не могу заставить его работать. Любая помощь будет принята с благодарностью, вот код, который ранее работал для меня.

// Removes billing fields if the checkout doesn't require payment
add_action( 'wp', 'unset_checkout_fields' );
function unset_checkout_fields() {

// Bail we're not at checkout, or if we're at checkout but payment is needed
if ( function_exists( 'is_checkout' ) && ( ! is_checkout() || ( is_checkout() && WC()->cart->needs_payment() ) ) ) {
    return;
}

// Unset the fields we don't want in a free checkout
function unset_unwanted_checkout_fields( $fields ) {

    // add or remove billing fields you do not want
    // list of fields: http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-2
    $billing_keys = array(
        'billing_phone',
        'billing_address_1',
        'billing_address_2',
        'billing_city',
        'billing_postcode',
        'billing_state',
    );
    // unset each of those unwanted fields
    foreach( $billing_keys as $key ) {
        unset( $fields['billing'][$key] );
    }
    return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'unset_unwanted_checkout_fields' );
}

Я пытался изменить условие if на

if ( WC()->cart && WC()->cart->needs_payment() ) {

, но все равно не повезло.

...