Необходимо сделать ввод только для чтения при оформлении заказа 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 вашей активной дочерней темы (или активной темы). Проверено и работает.
If some data exists, it will appear on this field, but customer will not be able to add or change imput as it will be "readonly".
Добавление - Проверить, не имеет ли Биллинговая компания значения и скрыть / удалить поле:
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 вашей активной дочерней темы (или активной темы).
@JordanStoddard Я добавил дополнение в конце ответа, которое должно помочь (непроверено)… Теперь, если ответ отвечает на ваш вопрос, вы можете, пожалуйста, ответить принимать, спасибо.
Спасибо @LoicTheAztec, это сработало для того, что хотел клиент. Спасибо, что нашли время ответить на это. Мне еще предстоит многому научиться;) Вы знаете, что нужно сделать, чтобы billing_company стала доступной только в том случае, если до страницы оформления заказа в этом поле не было содержимого? Но все еще блокирует его, если есть контент? Я лично считаю, что это будет лучший UX, чем то, что изначально хотел клиент.