在特定产品的 WooCommerce 购物车页面中的购物车项目名称后添加产品 ID

时间:2021-05-18 23:33:36

标签: php wordpress woocommerce product cart

我希望挂钩 WooCommerce 中的 woocommerce_cart_item_name 过滤器,并希望仅在特定产品的名称后显示产品 ID。

我正在查看此代码:

add_filter( 'woocommerce_cart_item_name', 'just_a_test', 10, 3 );
function just_a_test( $item_name,  $cart_item,  $cart_item_key ) {
    // Display name and product id here instead
    echo $item_name.' ('.$cart_item['product_id'].')';
}

这确实返回了带有产品 ID 的名称,但它适用于我商店中的所有产品。

只想显示指定产品的产品 ID。我很好奇我会怎么做?

2 个答案:

答案 0 :(得分:2)

你快到了。您可以通过应用一些基本条件来做到这一点。

add_filter( 'woocommerce_cart_item_name', 'just_a_test', 10, 3 );
function just_a_test( $item_name,  $cart_item,  $cart_item_key ) {
    $product_ids = array(68, 421);
    if(in_array($cart_item['product_id'], $product_ids) {
        echo $item_name.' ('.$cart_item['product_id'].')';
    } else {
        echo $item_name;
    }
}

请注意,我使用了 array 的产品 ID,以防您的问题可能需要将此函数应用于两个或多个产品 ID。或者,您可以使用这个:

//single product id
$product_id = 68;
echo $item_name . ($cart_item['product_id'] == $product_id) ? ' ('.$cart_item['product_id'].')' : '';

答案 1 :(得分:2)

jpneey 给出的答案不起作用(HTTP ERROR 500),因为:

  • echo 代替了 return

所以你得到:

function filter_woocommerce_cart_item_name( $item_name, $cart_item, $cart_item_key ) {
    // The targeted product ids, multiple product IDs can be entered, separated by a comma
    $targeted_ids = array( 30, 815 );
    
    // Product ID
    $product_id = $cart_item['variation_id'] > 0 ? $cart_item['variation_id'] : $cart_item['product_id'];
    
    if ( in_array( $product_id, $targeted_ids ) ) {
        return $item_name . ' (' . $product_id . ')';
    }

    return $item_name;
}
add_filter( 'woocommerce_cart_item_name', 'filter_woocommerce_cart_item_name', 10, 3 );