问题在于$_product->get_permalink($cart_item) 会在相关产品是变体时自动将属性添加到永久链接。
我不明白您为什么要摆脱这种行为,但可以通过将 $_product->get_permalink() 方法切换到 WordPress 的默认 get_permalink() 函数来实现。对于非变体产品,无论如何,该方法只是一个“包装器”。
如果你没有显示缩略图,那么你可以通过过滤器切换标题链接:
function so_remove_attributes_from_permalink( $name, $cart_item, $cart_item_key ){
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
if ( ! $_product->is_visible() ){
$name = sprintf( '<a href="%s">%s</a>', get_permalink( $cart_item['product_id'] ), $_product->get_title(), $cart_item, $cart_item_key );
}
return $name;
}
add_filter( 'woocommerce_cart_item_name', 'so_remove_attributes_from_permalink', 10, 3 );
如果您在购物车中显示缩略图,那么我认为您需要覆盖 cart/cart.php 模板并修改引用
$_product->get_permalink( $cart_item )
到
get_permalink( $cart_item['product_id'] )