Woocommerce中隐藏一些结账字段问题

3
我发现一个问题,即使使用以下代码也无法隐藏某些结账字段:

// woocommerce checkout page  
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {

unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
return $fields;
}

我甚至使用插件进行了测试,问题仍然存在,它仍然在前端显示输入框。

添加代码后,您可以看到输入框仍在显示,但是它变得比其他字段短

*添加代码后,您可以看到输入框仍在显示,但是它变得比其他字段短

2个回答

2

通过定义add_action()函数中使用的优先级和参数数量解决了该问题:

// woocommerce checkout page  
add_filter( 'woocommerce_checkout_fields' ,'custom_override_checkout_fields',20,1 );
function custom_override_checkout_fields( $fields ) {

unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
return $fields;
}

这里是解决方案^^


你的东西对别人也有用……谢谢 - LoicTheAztec

0
“在特定情况下,您需要使用woocommerce_default_address_fields过滤器。”相关官方WooCommerce文档如此说道...
因此,您应该尝试使用以下内容:
add_filter( 'woocommerce_default_address_fields', 'custom_checkout_fields' 20, 1 );
function custom_checkout_fields( $address_fields ) {

    unset($address_fields['company']);
    unset($address_fields['country']);
    unset($address_fields['state']);

    return $address_fields;
}

代码应该放在您的活动子主题(或活动主题)的function.php文件中。

它应该可以正常工作...


1
谢谢,您的回答很有帮助,先生。 - yassir.r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接