如果元素在 WP/WooCommerce 中有准确的文本,如何有条件地添加类名

How to conditionally add classname if an element has exact text in WP/WooCommerce

我目前正在网上商店工作,想做一些条件渲染,但我不确定如何让它工作。现在我有一个脚本,可以为购物篮中的所有产品提供一个与产品 ID 相匹配的 class 名称。

部分产品为可变产品,选择时已包含在主对象的价格中。该项目也可以单独购买,因此共享相同的产品 ID。我想做的是仅将 class 名称添加到价格中包含的产品。

我的想法是做一个 if 语句来确定产品是否将文本“包含在价格中”作为其产品总计,如果是,则添加 class 名称。这个 if 语句让我感到悲伤。这是将 class 名称添加到购物车(以及结帐页面)中所有内容的代码:


Gives cart items a classname equal to the product ID

function so_42237701_cart_item_class( $class, $values, $values_key ) {

    if ( isset( $values[ 'product_id' ] ) ) {
        $class .= ' custom-' . $values[ 'product_id' ];
    }

    return $class;
}
add_filter( 'woocommerce_cart_item_class', 'so_42237701_cart_item_class', 10, 3 );

结帐时:

function additional_class_to_order_item_classes ( $class, $values, $values_key ) {

    if ( isset( $values[ 'product_id' ] ) ) {
        $class .= ' custom-' . $values[ 'product_id' ];
    }

    return $class;
}
add_filter( 'woocommerce_order_item_class', 'additional_class_to_order_item_classes', 10, 3 );

我如何让它成为有条件的?

变体产品包含当前返回的父 ID,还有可以从 $values 获得的变体 ID,因此您的代码应如下所示

function so_42237701_cart_item_class( $class, $values, $values_key ) {
    //If we have variation ID its variable product
    if (!empty($values[ 'variation_id' ])) {
        $class .= ' custom-' . $values[ 'variation_id' ];
    } else {
        $class .= ' custom-' . $values[ 'product_id' ];
    }

    return $class;
}
add_filter( 'woocommerce_cart_item_class', 'so_42237701_cart_item_class', 10, 3 );