在迷你购物车中隐藏中间破折号(主题函数.php)

时间:2016-09-14 08:28:28

标签: php wordpress woocommerce cart character-trimming

我目前正在准备一个基于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的了解非常基础 - 我向您提出了一个问题 - 是否有任何标签可以让我隐藏名称末尾的中间短划线,同时保留现有的中间短划线括号。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

为什么不直接用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()不区分大小写。

答案 1 :(得分:1)

是的,可以使用本机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()