2016-09-14 55 views
3

我目前正在準備一個基於Woocommerce的在線商店,但我有一個迷你車的外觀問題。每當特定產品的名稱太長時,就會導致迷你購物車出現問題(不適用於.cart_wrapper)。隱藏在迷你車(主題functions.php)的中間短跑

我決定隱藏(重複)產品名稱中最不重要的元素。我用下面的代碼:

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的知識非常基礎 - 我向你提出這個問題 - 是否有任何標籤可以讓我隱藏名稱末尾的中間短劃線,而保留現有的中間短劃線在括號之間。

我該怎麼做?

回答

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()

+0

謝謝,效果很好! – user3282071

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()是不區分大小寫。

+0

我覺得這樣愚蠢的,因爲現在它確實有效。非常感謝。 – user3282071