Необходимо сделать вход только для чтения при оформлении заказа 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, которую этот код выполнил, но все же заставил его перейти к окончательному порядку, который, как мне кажется, не может заставить его сделать.
Большое спасибо, если вы можете помочь.
Попробуйте следующее (как текстовое поле должно быть 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 вашей активной дочерней темы (или активной темы)
Других решений пока нет …