Вопрос интересный. Проверил - действительно режет в одну строку. Да и с кроссбраузерностью у этого кода не ахти как.
Тоже хотел бы обрезать заголовки в витринах до двух или трёх строк. И именно с тремя точками на конце.
Заголовки из двух строк используются в магазине OBI.
Гляньте к примеру на страницу
Проточные водонагреватели. этого магазина.
У всех товаров фиксированная высота при переменной ширине. За счёт этого, скорее всего медиазапросами, меняется количество колонок при различных разрешениях и сохраняется ровность строк.
Если при просмотре этой страницы уменьшать ширину браузера то изменится ширина и количество колонок, и соответственно меняется длина подрезанных заголовков. Но две строки остаются неизменными, причём с тремя точками на конце.
Вариантов подрезки много:
http://blog.n1dev.ru/html-i-css/obrezka-teksta/
Но если использовать обрезку по количеству знаков то могут возникнуть сложности в кодировке UTF8:
http://php.ru/forum/viewtopic.php?t=27083
Длина всё равно будет немного гулять. Может получиться, когда как - то две, то три строки.
Мне тоже не нравится неровный вывод товаров в Woocommerce.
И это здесь обсуждалось:
https://wpcommerce.ru/threads/nastrojka-setki-tovarov.1081/
Была ещё одна тема с советами по этому вопросу, но её я отыскать не смог.
Интересен вариант с использованием jQuery dotdotdot:
Вот здесь
интересное поясняюшее видео.
И сам первоисточник -
http://dotdotdot.frebsite.nl/
Надо бы поробовать на досуге. Возможно с ним получится что-либо путное.