Удалите поле имени пользователя и пароля аккаунта со страницы оформления заказа.

Вопрос или проблема

Я пытаюсь удалить имя пользователя и пароль учетной записи со страницы оформления заказа. Я использую этот код, и он работает идеально. Но мне нужно использовать его с определенными категориями.

  add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
    function custom_override_checkout_fields( $fields) {
         unset($fields['account']['account_password']);
         unset($fields['account']['account_password-2']);
         unset($fields['account']['account_username']);
         return $fields;
      }

Как я могу использовать этот код с категориями.

Вот мой ответ, и он работает идеально.

function conditionally_remove_checkout_fields( $fields ) {

    // ЗДЕСЬ определены категории продуктов
    $categories = array('age-defying-skincare','az-brand-accessories','az-healthy-supplements','az-other-natural-products','Not available   mwb_wgm_giftcard','little-geniuses-children');

    $found = false;

    // ПРОВЕРАЕМ ТОВАРЫ В КОРЗИНЕ: ищем товары из наших определенных категорий
    foreach ( WC()->cart->get_cart() as $cart_item ){
        if( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {
            $found = true;
            break;
        }
    }

    // Если специальная категория находится в корзине, удаляем некоторые поля доставки
    if ( $found ) {

        // скрыть поля для выставления счета
     unset($fields['account']['account_password']);
     unset($fields['account']['account_password-2']);
     unset($fields['account']['account_username']);
     return $fields;

        // скрыть раздел дополнительной информации
        add_filter('woocommerce_enable_order_notes_field', '__return_false');
        add_filter( 'woocommerce_ship_to_different_address_checked', '__return_false' );
    }
    return $fields;
}

Ответ или решение

Убираем поля для ввода имени пользователя и пароля с страницы оформления заказа в WooCommerce

При разработке интернет-магазина на платформе WooCommerce может возникнуть необходимость оптимизировать процесс оформления заказа, убрав некоторые поля, такие как имя пользователя и пароль. Это может быть особенно актуально для определённых категорий товаров, где не требуется создание аккаунта. В данной статье мы рассмотрим, как условно удалить поля для ввода имени пользователя и пароля в зависимости от выбранных категорий товаров.

Пример кода для удаления полей

Ниже представлен код, который поможет вам реализовать данную функциональность:

add_filter( 'woocommerce_checkout_fields' , 'conditionally_remove_checkout_fields' );

function conditionally_remove_checkout_fields( $fields ) {
    // Определяем нужные категории продуктов
    $categories = array(
        'age-defying-skincare',
        'az-brand-accessories',
        'az-healthy-supplements',
        'az-other-natural-products',
        'Not available mwb_wgm_giftcard',
        'little-geniuses-children'
    );

    $found = false;

    // Проверяем товары в корзине
    foreach ( WC()->cart->get_cart() as $cart_item ){
        if( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {
            $found = true;
            break;
        }
    }

    // Если в корзине есть товары из указанных категорий, убираем поля
    if ( $found ) {
        unset($fields['account']['account_password']);
        unset($fields['account']['account_password-2']);
        unset($fields['account']['account_username']);

        // Дополнительно скрываем раздел с информацией
        add_filter('woocommerce_enable_order_notes_field', '__return_false');
        add_filter('woocommerce_ship_to_different_address_checked', '__return_false');
    }

    return $fields;
}

Объяснение кода

  1. Фильтр woocommerce_checkout_fields: Этот фильтр позволяет модифицировать поля на странице оформления заказа. Мы добавляем новую функцию conditionally_remove_checkout_fields, чтобы вносить изменения.

  2. Определение категорий товаров: В массиве $categories необходимо указать те категории, для которых будет применяться удаление полей. В данном случае перечислены несколько категорий.

  3. Проверка товаров в корзине: Мы перебираем товары в корзине и проверяем, содержит ли корзина товары из наших определенных категорий с помощью функции has_term.

  4. Удаление полей: Если в корзине найден хотя бы один товар из указанных категорий, мы убираем поля для ввода пароля и имени пользователя.

  5. Скрытие дополнительных полей: Используем фильтры для скрытия полей, таких как примечания к заказу и адрес доставки.

Заключение

Используя приведенный выше код, вы сможете эффективно настраивать оформление заказа в вашем WooCommerce магазине в зависимости от категорий товаров. Это улучшит пользовательский опыт и ускорит процесс покупки, что в свою очередь может повысить конверсию и удовлетворенность клиентов. Не забывайте тестировать изменения на тестовом сайте прежде, чем применять их на продакшн-версии, чтобы избежать нежелательных сбоев в процессе оформления заказа.

Оцените материал
Добавить комментарий

Капча загружается...