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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
868
1

Ответы 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 вашей активной дочерней темы (или активной темы). Проверено и работает.

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 вашей активной дочерней темы (или активной темы).

Спасибо @LoicTheAztec, это сработало для того, что хотел клиент. Спасибо, что нашли время ответить на это. Мне еще предстоит многому научиться;) Вы знаете, что нужно сделать, чтобы billing_company стала доступной только в том случае, если до страницы оформления заказа в этом поле не было содержимого? Но все еще блокирует его, если есть контент? Я лично считаю, что это будет лучший UX, чем то, что изначально хотел клиент.

Jordan Stoddard 21.12.2018 21:55

@JordanStoddard Я добавил дополнение в конце ответа, которое должно помочь (непроверено)… Теперь, если ответ отвечает на ваш вопрос, вы можете, пожалуйста, ответить принимать, спасибо.

LoicTheAztec 21.12.2018 22:28

Другие вопросы по теме