После обновления до 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() ) {
, но все равно не повезло.