【问题标题】:Clear only some checkout fields values in Woocommerce仅清除 Woocommerce 中的某些结帐字段值
【发布时间】:2018-11-20 13:02:39
【问题描述】:

在 Woocommerce 中,我正在尝试清除结帐字段。因此,当用户之前订购过东西,现在再次订购时,他/她将不得不再次输入他/她的所有信息。

我正在使用此代码

function clear_checkout_fields($input){
return '';
}

add_filter( 'woocommerce_checkout_get_value' , 'clear_checkout_fields' , 1);

现在这段代码正在清除所有字段,但它也将我的增值税更改为显示为 0。

有人知道解决办法吗?

【问题讨论】:

  • @dipmala 这个问题与链接的线程无关,它不是重复的。
  • 请问您的增值税自定义结帐字段name 的属性是什么?

标签: php wordpress woocommerce checkout hook-woocommerce


【解决方案1】:

woocommerce_checkout_get_value 挂钩函数中存在一些参数错误。
实际上有两个论点:

  • $value 参数作为过滤器挂钩返回,
  • $imput 参数,可用于定位任何结帐字段。

因此,在您的情况下,您将使用 $imput 参数,以避免您的自定义增值税结帐字段被清空。在下面的代码中,您需要将 vat_number 替换为在您的自定义增值税结帐字段中设置的正确字段 name 属性:

add_filter( 'woocommerce_checkout_get_value' , 'clear_checkout_fields' , 10, 2 );
function clear_checkout_fields( $value, $input ){
    if( $input != 'vat_number' )
        $value = '';
    
    return $value;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

  • 谢谢!这行得通!一个后续问题。您将如何为多个字段执行此操作?
  • @StanleyTan 您可以使用 in_array() 函数来实现这一点,例如:if ( ! in_array( $input, array( 'vat_number', 'something' ) ) ) {if ( in_array( $input, array( 'vat_number', 'something' ) ) ) {,这取决于您想要什么……
猜你喜欢
  • 2017-03-27
  • 2021-03-26
  • 2019-10-15
  • 2017-09-04
  • 1970-01-01
  • 2018-01-18
  • 2021-08-20
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多