Как скрыть DIV на основе массива товаров или категории в корзине? - PullRequest
1 голос
/ 09 июля 2019

Как и в заголовках, я пытаюсь скрыть div на основе массива продуктов или категории в /cart.

У нас есть категория под названием "DRTV".Если продукт из этой категории находится в корзине, я хочу, чтобы он скрыл класс "freeship".

Я нашел какой-то PHP из Bloomer, который я изменил:

function bbloomer_find_id_in_cart() {
    global $woocommerce;     
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {

        $product = $values['data'];

        if ( in_array( 'DRTV', $categories ) ) {
            .freeship {display:none}
        }
    }
}

Можеткто-нибудь, помогите мне по правильному пути, здесь?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Самый простой способ сделать это (как упомянул Тагр) - добавить класс к телу с помощью действия / фильтра body_class и скрыть его в своем CSS на основе этого класса тела. Ниже приведен рабочий пример.

PHP выглядит так:

add_filter( 'body_class', 'check_for_drtv' );
function check_for_drtv( $classes ) {
    $drtv_check = false;

    foreach ( WC()->cart->get_cart() as $key => $cart_item ) {
        $product = $cart_item['data'];
        if ( has_term( 'DRTV', 'product_cat', $product->id ) ) {
            $drtv_check = true;
            break;
        }
    }

    if ( $drtv_check ) {
        $classes[] = 'drtv-in-cart';
    }

    return $classes;
}

И тогда ваш CSS будет просто:

body.drtv-in-cart .freeship {
    display: none;
}
0 голосов
/ 10 июля 2019

Я печатаю с телефона и из памяти, так что извините за отсутствие точных строк кода, однако, логика будет следовать за 3 шага.

  1. Подключитесь к действию "wp", чтобы проверитьесли в WC () -> cart есть какой-либо продукт из категории DRTV.
  2. Если вы обнаружите какой-либо продукт, добавьте фильтр в функцию body_class (), которая обычно используется в теге <body>.По сути, вы хотите добавить новый класс, что-то вроде «hide-freeshipping»
  3. Затем в свой CSS-файл добавьте строку кода, чтобы скрыть продукты с классом freeshipping, когда тело имеет класс «hide-freeshipping».

С уважением, T.

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