В Woocommerce я использую следующий код, который отключает все поля оформления заказа, кроме примечаний к заказу и заголовка «Дополнительная информация».
Если в корзине есть только виртуальные товары, нет полей, кроме «Имя», «Фамилия» и «Имя»поле электронной почты должно быть показано.
Код:
add_filter( 'woocommerce_checkout_fields' , 'simple_virtual_checkout' );
function simple_virtual_checkout( $fields ) {
$only_virtual_products = true;
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
// Check if there are non-virtual products
if ( ! $cart_item['data']->is_virtual() ) $only_virtual_products = false;
}
if( $only_virtual_products ) {
// remove billing fields
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
// remove shipping fields
unset($fields['shipping']['shipping_first_name']);
unset($fields['shipping']['shipping_last_name']);
unset($fields['shipping']['shipping_company']);
unset($fields['shipping']['shipping_address_1']);
unset($fields['shipping']['shipping_address_2']);
unset($fields['shipping']['shipping_city']);
unset($fields['shipping']['shipping_postcode']);
unset($fields['shipping']['shipping_country']);
unset($fields['shipping']['shipping_state']);
}
return $fields;
}
Любая помощь высоко ценится.