Сделайте поле для выставления счета платежной компанией только для чтения, оставив его активным в Woocommerce

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

Большое спасибо, если вы можете помочь.

1

Решение

Попробуйте следующее (как текстовое поле должно быть 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 вашей активной дочерней темы (или активной темы)

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector