WordPress — Скрытие среднего тире в мини-корзину (тема 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 очень просты, я перехожу к вам с вопросом — есть ли какие-либо теги, которые позволили бы мне скрыть среднюю черту в конце имени, оставляя существующую среднюю черту между скобками.

Как я могу это сделать?

3

Решение

Да, это возможно с нативной функцией 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 функция rtrim ()

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