需要使输入仅在WooCommerce 3.0的结帐中为只读,但仍将原始内容传递给订单。在这种情况下,需要将订单传递给FishBowl。
我在这里尝试了许多方法。这是最新的...
add_action('woocommerce_form_field_args', 'disable_company_input', 10, 3);
function disable_company_input($args, $key, $value)
{
if ($key == 'billing_company') {
$args['custom_attributes'] = [
'disabled' => 'disabled',
];
}
return $args;
}
add_action('woocommerce_after_order_notes', 'billing_company_hidden_field');
function billing_company_hidden_field($checkout)
{
echo '<input type="hidden" class="input-hidden" name="billing_company">';
}
我正在尝试禁用用户更改billing_company的功能,此代码确实完成了该操作,但是仍将其传递给最终订单,我似乎无法做到这一点。
非常感谢您能提供帮助。
答案 0 :(得分:0)
请尝试以下操作,而不是(因为文本字段必须为readonly
,而不是disabled
):
add_filter( 'woocommerce_checkout_fields' , 'custom_checkout_fields' );
function custom_checkout_fields( $fields ) {
$fields['billing']['billing_company']['custom_attributes']['readonly'] = 'readonly';
return $fields;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
如果存在某些数据,它将显示在此字段上,但是客户将无法添加或更改输入,因为它将是“只读”。
添加-检查结算公司是否没有价值,并隐藏/删除该字段:
add_filter( 'check_billing_company_checkout_field' , 'check_billing_company_checkout_field' );
function billing_company_checkout_field( $fields ) {
$billing_company = WC()->customer->get_billing_company();
if( empty( $billing_company ) ) { // Remove field
unset($fields['billing']['billing_company']);
} else { // Make readonly
$fields['billing']['billing_company']['custom_attributes']['readonly'] = 'readonly';
}
return $fields;
}
代码进入您的活动子主题(或活动主题)的function.php文件中