如何根据购物车中的产品阵列或类别隐藏DIV?

时间:2019-07-09 17:51:29

标签: php css wordpress woocommerce

像标题中所述,我试图基于/ cart中的产品数组或类别隐藏div。

我们有一个名为“ DRTV”的类别。如果购物车中有该类别的产品,我希望它隐藏“免费”类。

我从Bloomer找到了一些我已修改的PHP:

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 :(得分:0)

我正在从手机和内存中键入内容,因此很抱歉没有提供确切的代码行,但是逻辑将分3个步骤进行。

  1. 加入“ wp”操作,检查WC()->购物车是否有DRTV类别的任何产品。
  2. 如果发现任何过滤器,请向body_class()函数添加一个过滤器,该过滤器通常在<body>标签上使用。基本上,您想添加一个新类,例如“ hide-freeshipping”
  3. 然后在CSS文件中添加一行代码,以在正文具有“ hide-freeshipping”类时隐藏具有freeshipping类的产品。

关于T。

答案 1 :(得分:0)

最简单的方法(如Tagr所述)是通过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;
}