仅在 Woocommerce 中删除虚拟产品的订单备注结帐字段
Remove order notes checkout field for virtual products only in Woocommerce
在 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;
}
非常感谢任何帮助。
您只需将这一行添加到您的函数中:
unset($fields['order']['order_comments']);
因此您的代码将是:
add_filter( 'woocommerce_checkout_fields' , 'simple_virtual_checkout', 20, 1 );
function simple_virtual_checkout( $fields ) {
$only_virtual_products = true;
// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
// Check for 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']);
unset($fields['shipping']['shipping_state']);
// remove order notes
unset($fields['order']['order_comments']);
}
return $fields;
}
代码进入活动子主题(或活动主题)的 function.php 文件。已测试并有效。
By default in Woocommerce checkout page, there is no "Additional Information" title.
So this is certainly related to some customizations made by your theme or a plugin.
在 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;
}
非常感谢任何帮助。
您只需将这一行添加到您的函数中:
unset($fields['order']['order_comments']);
因此您的代码将是:
add_filter( 'woocommerce_checkout_fields' , 'simple_virtual_checkout', 20, 1 );
function simple_virtual_checkout( $fields ) {
$only_virtual_products = true;
// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
// Check for 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']);
unset($fields['shipping']['shipping_state']);
// remove order notes
unset($fields['order']['order_comments']);
}
return $fields;
}
代码进入活动子主题(或活动主题)的 function.php 文件。已测试并有效。
By default in Woocommerce checkout page, there is no "Additional Information" title.
So this is certainly related to some customizations made by your theme or a plugin.