我正在尝试将电话号码必填字段添加到Woocommerce结帐的发货详细信息页面,但只有在选择其他发货地址时,该字段才应为必填字段。
Woocommerce认为这是一个定制的修改,超出了他们的支持范围,并建议我将问题张贴在这里。
看完这篇文章后,我取得了一些进展http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ 这让我几乎做到了,但我有一些问题。
我只希望该字段在客户发货至其他地址时为必填字段,而该字段表示,即使未选择其他发货详细信息,也需要填写该字段。
我不得不放弃这些更改,因为这是一个实时站点,但我更新了功能。php具有以下功能:
//Add Tel Number to Shipping Address
// Hook in
add_filter( \'woocommerce_checkout_fields\' , \'custom_override_checkout_fields\' );
// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
$fields[\'shipping\'][\'shipping_phone\'] = array(
\'label\' => __(\'Phone\', \'woocommerce\'),
\'placeholder\' => _x(\'Phone\', \'placeholder\', \'woocommerce\'),
\'required\' => false,
\'class\' => array(\'form-row-wide\'),
\'clear\' => true
);
return $fields;
}
/**
* Process the checkout
*/
add_action(\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\');
function my_custom_checkout_field_process() {
// Check if set, if its not set add an error.
if ( ! $_POST[\'shipping_phone\'] )
wc_add_notice( __( \'Please enter a phone number for the recipient.\' ), \'error\' );
}
这是可行的,因为显示了字段,但我有两个问题。
1) 如果选择了发货至其他地址,我如何使其仅要求强制完成?
2) 即使该字段是必填字段,我如何才能像其他字段一样在手机标签旁边显示红色星号?
如果有人能帮忙,我会非常感激的。
谢谢
抢劫
最合适的回答,由SO网友:Rob Wassell 整理而成
我自己回顾了这一点,并回答了我自己的问题。
通过遵循Woocommerce文档,我实际上把自己弄糊涂了,第二个强制检查不适用,因为我们可以使用此主要功能将required从false设置为true。这会自动添加红色星号,并使该字段成为必填字段,而无需执行其他检查。
非常简单:
//Add Tel Number to Shipping Address
// Hook in
add_filter( \'woocommerce_checkout_fields\' , \'custom_override_checkout_fields\' );
// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
$fields[\'shipping\'][\'shipping_phone\'] = array(
\'label\' => __(\'Phone\', \'woocommerce\'),
\'placeholder\' => _x(\'Phone\', \'placeholder\', \'woocommerce\'),
\'required\' => true,
\'class\' => array(\'form-row-wide\'),
\'clear\' => true
);
return $fields;
}
/**
* Process the checkout
*/
add_action(\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\');
我希望这对其他人有帮助。
当做
抢劫