删除 WooCommerce 结帐字段值

Posted

技术标签:

【中文标题】删除 WooCommerce 结帐字段值【英文标题】:Remove WooCommerce checkout fields values 【发布时间】:2017-09-04 23:48:39 【问题描述】:

我正在尝试在我的 WooCommerce 结帐字段上应用 autocomplete="off",但它不起作用。

有没有办法为结帐表单做到这一点?

我查看了文档,但那里没有可用的内容。我也尝试将默认值设置为空,但它也不起作用。这当然是用户没有登录的时候。

更新:

我按照@smvax 的建议尝试了unset,但效果不佳。

add_filter('woocommerce_checkout_fields', 'default_values_checkout_fields');
function default_values_checkout_fields($fields) 
  if (!is_user_logged_in()) 
      unset($fields['billing_city']);
      unset($fields['billing_first_name']);
      unset($fields['billing_last_name']);
      unset($fields['billing_company']);
      unset($fields['billing_address_1']);
      unset($fields['billing_address_2']);
      unset($fields['billing_city']);
      unset($fields['billing_postcode']);
      unset($fields['billing_country']);
      unset($fields['billing_state']);
      unset($fields['billing_email']);
      unset($fields['billing_phone']);
      unset($fields['shipping_city']);
      unset($fields['shipping_first_name']);
      unset($fields['shipping_last_name']);
      unset($fields['shipping_company']);
      unset($fields['shipping_address_1']);
      unset($fields['shipping_address_2']);
      unset($fields['shipping_postcode']);
      unset($fields['shipping_country']);
      unset($fields['shipping_state']);
      return $fields;
  

我也尝试了答案here,但效果不佳。

谢谢

【问题讨论】:

Nkatry ka na nito jeepers? :) ***.com/questions/36694355/… @smzvax 我刚试过unset,整个表格都不见了。 如何添加 ['clear'] 如下所示:surpriseazwebservices.com/edit-woocommerce-checkout-fields @jeepers_creepers,你在哪里添加AUTOCOMPLETE = "off" 属性? @MayankRaj 在<form> 【参考方案1】:

您可以使用 Wordpress '__return_empty_string'woocommerce_checkout_get_value WooCommerce 过滤钩子来简单地获取空值:

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

这将在加载结帐页面时清空所有结帐值。

代码位于活动子主题(或主题)的 functions.php 文件中或任何插件文件中。

此代码已经过测试并且可以工作。

您应该在 Woocommerce 设置 > 系统状态 > 工具和缓存中重置所有现有会话(如果您的电子商务使用任何会话)。 同时清空您的浏览器缓存和存储的数据。

相关:Clear only some checkout fields values in Woocommerce

【讨论】:

感谢您的回答,但我尝试时它不起作用。我将它添加到我的子主题的 functions.php 文件中。我的结帐网址:dfp-dev.creativequoin.com/checkout/?v=4e45c2af0995 @jeepers_creepers 我已经在 3 个不同的 WooCommerce 网站上测试了这段代码,并且它适用于所有网站。因此,您的主题或第三方插件中肯定有一些自定义代码,这会产生冲突……我已经更改了我的钩子(代码)中的优先级。再试一次。我希望它能正常工作。你可以在我的原始测试服务器上测试它:cbleu.net/sites/tie/shop(购买一些东西,然后在你的第一个订单之后,将一些东西添加到购物车并去结帐......你将在结帐字段中看到没有数据)。 当我将它添加到我的自定义 Woocommerce 插件中时它起作用了。谢谢!【参考方案2】:

您可以使用 woocommerce_checkout_fields 过滤器为表单字段设置 autocomplete="off"。

    add_filter('woocommerce_checkout_fields', 'autocomplete_off_checkout_fields');
    function autocomplete_off_checkout_fields($fields) 
          $fields['billing_first_name']['autocomplete'] = 'off';
          return $fields;
      
    

这将适用于所有 woocommerce 结帐字段。

【讨论】:

请注意,Chrome 浏览器会有意忽略“off”值,但仍会根据用户添加到 Chrome 的内容(即付款数据或地址)应用自动完成功能。

以上是关于删除 WooCommerce 结帐字段值的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 WooCommerce 结帐字段后删除所需的验证

从 Woocommerce 3.4+ 的结帐字段中删除“(可选)”文本

根据 WooCommerce 结帐字段值显示/隐藏运输方式

根据 WooCommerce 结帐字段值显示/隐藏运输方式

Woocommerce:设置结帐字段值

在 Woocommerce 的管理订单详细信息部分显示自定义结帐字段值