【问题标题】:Make checkout fields required in Woocommerce checkout在 Woocommerce 结帐中设置结帐字段
【发布时间】:2018-12-20 22:45:54
【问题描述】:

由于某种原因,账单地址中的所有字段都被标记为可选 - 客户将账单地址字段留空,然后他们的付款被拒绝(由我们的付款处理方 Square)。

我找不到任何地方使这些字段成为必填项,也无法弄清楚为什么它们在任何情况下都会被标记为可选。

有人能指出正确的方向吗?

更新

我什至尝试过以下方法:

add_filter('woocommerce_billing_fields', 'force_billing_fields', 1000, 1);
function force_billing_fields($fields) {
  $fields['billing_first_name']['required'] = true;
  $fields['billing_last_name']['required'] = true;
  $fields['billing_address_1']['required'] = true;
  $fields['billing_city']['required'] = true;
  $fields['billing_postcode']['required'] = true;
  $fields['billing_country']['required'] = true;
  $fields['billing_state']['required'] = true;
  $fields['billing_email']['required'] = true;
  $fields['billing_phone']['required'] = true;

  return $fields;
}

它们仍被标记为可选,但现在将计费电话和国家/地区标记为必填。但其余的仍然是可选的。

【问题讨论】:

  • 有些东西使这些字段成为可选的,因为默认情况下它们是必需的。因此,您需要找到可能是自定义、主题中的某些内容或插件的罪魁祸首。也可以关注Customizing checkout fields using actions and filters或搜索this related related threads
  • 显然...我已经搜索了所有自定义代码,并且没有在任何地方修改这些字段。我会浏览插件,看看发生了什么。
  • @LoicTheAztec 请查看更新

标签: php wordpress woocommerce field checkout


【解决方案1】:

如果你没有发现我评论中解释的有罪,你可以做的是使用以下(如果其他代码已经在使用这些挂钩,则在此处使用最高挂钩优先级)

add_filter( 'woocommerce_default_address_fields', 'customising_checkout_fields', 1000, 1 );
function customising_checkout_fields( $address_fields ) {
    $address_fields['first_name']['required'] = true;
    $address_fields['last_name']['required'] = true;
    $address_fields['company']['required'] = true;
    $address_fields['country']['required'] = true;
    $address_fields['city']['required'] = true;
    $address_fields['state']['required'] = true;
    $address_fields['postcode']['required'] = true;

    return $address_fields;
}

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

结算电话和邮箱可以试试

add_filter('woocommerce_billing_fields', 'custom_billing_fields', 1000, 1);
function custom_billing_fields( $fields ) {
    $fields['billing_email']['required'] = true;
    $fields['billing_phone']['required'] = true;

    return $fields;
}

add_filter('woocommerce_checkout_fields', 'custom_billing_fields', 1000, 1);
function custom_billing_fields( $fields ) {
    $fields['billing']['billing_email']['required'] = true;
    $fields['billing']['billing_phone']['required'] = true;

    return $fields;
}

【讨论】:

  • 我已经添加了一些其他钩子用于计费电子邮件和电话......
  • 另外,我在所有插件中搜索了 `add_filter('woocommerce' 并且没有插件连接到任何这些字段过滤器......这很奇怪
  • 为什么我们放 1000?我正在尝试解决方案,但它不起作用:(
  • @MariaGeorgali 1000 是钩子优先级,允许此代码在可能使用相同钩子的其他插件之后运行。
  • 我已尝试将其设置为优先级 100000000,但仍然没有,尝试了不同的过滤器,它比约会网站上的女孩更忽视我。
猜你喜欢
  • 2018-01-18
  • 2015-04-20
  • 2017-03-27
  • 2022-10-20
  • 2018-01-08
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多