在 Woocommerce 结账时设置结账字段
Make checkout fields required in Woocommerce checkout
出于某种原因,帐单地址中的所有字段都标记为可选 - 客户将帐单地址字段留空,然后他们的付款被拒绝(由我们的付款处理方 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;
}
并且它们仍然标记为可选,除了帐单 phone 和国家/地区现在标记为必需。但其余的仍然是可选的。
如果您没有像我的评论中解释的那样发现有罪,您可以做的是使用以下 (如果其他代码已经在使用这些挂钩,则在此处使用最高挂钩优先级):
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 文件。已测试并有效。
对于计费phone和电子邮件,您可以尝试
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;
}
出于某种原因,帐单地址中的所有字段都标记为可选 - 客户将帐单地址字段留空,然后他们的付款被拒绝(由我们的付款处理方 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;
}
并且它们仍然标记为可选,除了帐单 phone 和国家/地区现在标记为必需。但其余的仍然是可选的。
如果您没有像我的评论中解释的那样发现有罪,您可以做的是使用以下 (如果其他代码已经在使用这些挂钩,则在此处使用最高挂钩优先级):
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 文件。已测试并有效。
对于计费phone和电子邮件,您可以尝试
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;
}