Показывать настраиваемые поля оформления заказа, если в Woocommerce есть определенный товар в корзине - PullRequest
0 голосов
/ 10 декабря 2018

Итак, у меня есть несколько настраиваемых полей в разделе выставления счетов на странице оформления заказа, которые я хочу отображать только в том случае, если в корзине есть продукт с идентификатором (603).

В настоящее время мой код ниже работает дляскрыть поля, если в корзине есть товар с идентификатором 603, но одна проблема заключается в том, что когда у меня есть 603, а другой продукт в корзине снимает поля,

, что является лучшим способом скрытьполя, если 603 нет в корзине или просто показать их, если это?

это текущий код, который я использовал

    function conditional_checkout_fields_products( $fields ) {
        $cart = WC()->cart->get_cart();

        foreach ( $cart as $item_key => $values ) {
            $product = $values['data'];

            if ( $product->id != 603 ) {
                unset( $fields['billing']['billing_prev_injuries'] );
                unset( $fields['billing']['billing_dogs_events'] );
                unset( $fields['billing']['billing_dogs_age'] );
                unset( $fields['billing']['billing_dogs_breed'] );
                unset( $fields['billing']['billing_dogs_name'] );
              }
        }

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

1 Ответ

0 голосов
/ 10 декабря 2018

Следующее выполнит работу:

add_filter( 'woocommerce_checkout_fields', 'conditional_checkout_fields_products' );
function conditional_checkout_fields_products( $fields ) {
    $is_in_cart = false;

    foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( $cart_item['data']->get_id() == 603 ) {
            $is_in_cart = true;
            break;
        }
    }

    if ( ! $is_in_cart ) {
        unset( $fields['billing']['billing_prev_injuries'] );
        unset( $fields['billing']['billing_dogs_events'] );
        unset( $fields['billing']['billing_dogs_age'] );
        unset( $fields['billing']['billing_dogs_breed'] );
        unset( $fields['billing']['billing_dogs_name'] );
    }

    return $fields;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Проверено и работает.

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