在迷你购物车中隐藏中间破折号(主题functions.php)
Hiding middle-dash in mini-cart (theme functions.php)
我目前正在准备一个基于 Woocommerce 的在线商店,但我对迷你购物车的外观有疑问。每当特定产品的名称太长时,就会导致迷你购物车出现问题(不适合 .cart_wrapper)。
我决定隐藏(重复)产品名称中最不重要的元素。我使用了以下代码:
function wpse_remove_shorts_from_cart_title( $product_name ) {
$product_name = str_ireplace( 'premium', '', $product_name );
$product_name = str_ireplace( 'standard', '', $product_name );
return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'wpse_remove_shorts_from_cart_title' );
而且效果很好。以产品名称为例:
Car Carpet VW (1999-2001) - PREMIUM
我得到了:
Car Carpet VW (1999-2001) -
现在我的问题是产品名称末尾的中间破折号。
我无法使用上述方法删除它,因为通过这样做,它还删除了括号内的中间破折号(分隔年份或生产的那个)。
由于我对 PHP 的了解非常基础 - 我问你这个问题 - 是否有任何标签可以让我隐藏名称末尾的中间破折号,同时离开括号之间现有的中间破折号。
我该怎么做?
为什么不直接用 PREMIUM 或 STANDARD 替换功能替换它?
像这样:
function wpse_remove_shorts_from_cart_title( $product_name ) {
$product_name = str_replace( '- premium', '', $product_name );
$product_name = str_replace( '- standard', '', $product_name );
return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'wpse_remove_shorts_from_cart_title' );
我也会使用 str_replace()
而不是 str_ireplace()
因为 str_replace()
不区分大小写。
是的,可以使用本机 php 函数 rtrim()
。你会这样使用它:
<?php
$string1 = 'Car Carpet VW (1999-2001) - PREMIUM';
$string2 = 'Car Carpet VW (1999-2001) -';
$string1 = rtrim($string1, ' -');
$string2 = rtrim($string2, ' -');
echo '$string1: '.$string1.'<br>'; // displays "Car Carpet VW (1999-2001) - PREMIUM"
echo '$string2: '.$string2.'<br>'; // displays "Car Carpet VW (1999-2001)"
?>
参考文献:PHP function rtrim()
我目前正在准备一个基于 Woocommerce 的在线商店,但我对迷你购物车的外观有疑问。每当特定产品的名称太长时,就会导致迷你购物车出现问题(不适合 .cart_wrapper)。
我决定隐藏(重复)产品名称中最不重要的元素。我使用了以下代码:
function wpse_remove_shorts_from_cart_title( $product_name ) {
$product_name = str_ireplace( 'premium', '', $product_name );
$product_name = str_ireplace( 'standard', '', $product_name );
return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'wpse_remove_shorts_from_cart_title' );
而且效果很好。以产品名称为例:
Car Carpet VW (1999-2001) - PREMIUM
我得到了:
Car Carpet VW (1999-2001) -
现在我的问题是产品名称末尾的中间破折号。
我无法使用上述方法删除它,因为通过这样做,它还删除了括号内的中间破折号(分隔年份或生产的那个)。
由于我对 PHP 的了解非常基础 - 我问你这个问题 - 是否有任何标签可以让我隐藏名称末尾的中间破折号,同时离开括号之间现有的中间破折号。
我该怎么做?
为什么不直接用 PREMIUM 或 STANDARD 替换功能替换它?
像这样:
function wpse_remove_shorts_from_cart_title( $product_name ) {
$product_name = str_replace( '- premium', '', $product_name );
$product_name = str_replace( '- standard', '', $product_name );
return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'wpse_remove_shorts_from_cart_title' );
我也会使用 str_replace()
而不是 str_ireplace()
因为 str_replace()
不区分大小写。
是的,可以使用本机 php 函数 rtrim()
。你会这样使用它:
<?php
$string1 = 'Car Carpet VW (1999-2001) - PREMIUM';
$string2 = 'Car Carpet VW (1999-2001) -';
$string1 = rtrim($string1, ' -');
$string2 = rtrim($string2, ' -');
echo '$string1: '.$string1.'<br>'; // displays "Car Carpet VW (1999-2001) - PREMIUM"
echo '$string2: '.$string2.'<br>'; // displays "Car Carpet VW (1999-2001)"
?>
参考文献:PHP function rtrim()