Woocommerce Удаление обязательных полей из «Дополнительная информация» - PullRequest
0 голосов
/ 27 мая 2019

У меня есть бесплатный продукт в Woocommerce, и я использовал это руководство от Skyverge для упрощения процесса оформления заказа: https://www.skyverge.com/blog/how-to-simplify-free-woocommerce-checkout/

Проблема в том, что для всех других продуктов у нас есть 3 обязательных поля на вкладке Дополнительная информация:

cracha_empresa cracha_primeironome cracha_sobrenome

И мы удалили "order_notes" все вместе.Чтобы добиться этого, мы используем редактор полей Woocommerce Checkout.

Когда мы пытаемся пройти процесс проверки для этого бесплатного продукта, фильтр add_filter ('woocommerce_enable_order_notes_field', '__return_false');удаляет дополнительные поля (как и ожидалось), но когда вы пытаетесь завершить покупку, я получаю сообщение об ошибке, в котором говорится, что указанные выше поля НЕОБХОДИМЫ для заполнения, даже если они не отображаются.

Исходя из того, что, по-моему, мне нужно отфильтровать эти поля в массиве?

/ ** * Удалите os cupons, notas, e campos que não são requiredários para palestrantes.* * / function sv_free_checkout_fields () {

// Se carrinho precisa de pagamento, não fazer nada
if ( WC()->cart && WC()->cart->needs_payment() ) {
    return;
}

// Continuar somente se estamos no checkout
// is_checkout() foi quebrado em WooCommerce 3.2 no ajax, checkar se is_ajax está ativo
if ( function_exists( 'is_checkout' ) && ( is_checkout() || is_ajax() ) ) {

    // Remove cupons para produtos gratuitos
    remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );

    // Remove o campo "Additional Info" nas notas dos pedidos
    add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );

    // Desativa os campos para produtos gratuitos
    function unset_unwanted_checkout_fields( $fields ) {

        // Adiciona aqui o que deseja remover
        // campos: http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-2
        $billing_keys = array(
            'billing_persontype',
            'billing_cpf',
            'billing_rg',
            'billing_cnpj',
            'billing_company',
            'billing_phone',
            'billing_cellphone',
            'billing_address_1',
            'billing_address_2',
            'billing_neighborhood',
            'billing_city',
            'billing_postcode',
            'billing_country',
            'billing_state',
            'billing_number',
        );


        // unset each of those unwanted fields
        foreach( $billing_keys as $key ) {
            unset( $fields['billing'][ $key ] );
        }


        return $fields;
    }
    add_filter( 'woocommerce_checkout_fields', 'unset_unwanted_checkout_fields' );
}

} add_action ('wp', 'sv_free_checkout_fields');

Я попробовал это без удачи:

/ ** * Удалите купоны, нотасы и кампусы, которые вам нужны, в случае необходимости.* * / function sv_free_checkout_fields () {

// Se carrinho precisa de pagamento, não fazer nada
if ( WC()->cart && WC()->cart->needs_payment() ) {
    return;
}

// Continuar somente se estamos no checkout
// is_checkout() foi quebrado em WooCommerce 3.2 no ajax, checkar se is_ajax está ativo
if ( function_exists( 'is_checkout' ) && ( is_checkout() || is_ajax() ) ) {

    // Remove cupons para produtos gratuitos
    remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );

    // Remove o campo "Additional Info" nas notas dos pedidos
    add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );

    // Desativa os campos para produtos gratuitos
    function unset_unwanted_checkout_fields( $fields ) {

        // Adiciona aqui o que deseja remover
        // campos: http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-2
        $billing_keys = array(
            'billing_persontype',
            'billing_cpf',
            'billing_rg',
            'billing_cnpj',
            'billing_company',
            'billing_phone',
            'billing_cellphone',
            'billing_address_1',
            'billing_address_2',
            'billing_neighborhood',
            'billing_city',
            'billing_postcode',
            'billing_country',
            'billing_state',
            'billing_number',
        );

        $order_keys = array(
            'cracha_empresa',
            'cracha_primeironome',
            'cracha_sobrenome',
        );       

        // unset each of those unwanted fields
        foreach( $billing_keys as $key ) {
            unset( $fields['billing'][ $key ] );
        }

        // unset each of those unwanted fields
        foreach( $order_keys as $key ) {
            unset( $fields['order'][ $key ] );
        }


        return $fields;


    }
    add_filter( 'woocommerce_checkout_fields', 'unset_unwanted_checkout_fields' );
}

} add_action ('wp', 'sv_free_checkout_fields');

1 Ответ

0 голосов
/ 27 мая 2019

Просто отключите редактор полей Woocommerce Checkout и попробуйте это.

Вы можете удалить поля «Дополнительная информация» и «Примечания к заказу» на странице оформления заказа WooCommerce с помощью двух фильтров, которые вы добавляете в свой файл functions.php тем. Functions.php

// Removes Order Notes Title - Additional Information & Notes Field
add_filter( 'woocommerce_enable_order_notes_field', '__return_false', 9999 );

// Remove Order Notes Field
add_filter( 'woocommerce_checkout_fields' , 'remove_order_notes' );

    enter code here

function remove_order_notes( $fields ) {
     unset($fields['order']['order_comments']);
     return $fields;
}

Первый фильтр woocommerce_enable_order_notes_field возвращает false и не будет отображать заголовок «Дополнительная информация», а также поле примечаний к заказу, я обнаружил, что иногда его нужно запускать с высоким приоритетом, поэтому я добавил в'9999'.

Второй фильтр woocommerce_checkout_fields удаляет поле примечаний к заказу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...