2016-09-14 16 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