Intereting Posts
Как подключиться к «последнему» документу в медиа-библиотеке? Как показать комментарии Disqus и pingbacks? Как включить файл для администратора и 2 страницы без загрузки на другие части сайта? Пользовательские поля на виртуальной странице Блог WordPress – Просмотр сетки Категории в интерфейсе администратора: могут ли они быть разборными? Удалить пользовательскую таксономию Metabox с экрана пользовательского типа сообщений Как узнать, существует ли сообщение с custom_field == X? Создание пользовательской роли нескольких пользователей для снижения возможностей Включить / отключить пост ревизии программным путем Как добавить нескольких существующих пользователей на многосайтовый сайт? Можем ли мы создать настраиваемый шаблон публикации для определенного шаблона страницы Как обрабатывать запросы администратора и паролей от разработчиков плагинов? Как изменить / расширить / переопределить основной метод? Различные посты для разных авторов

Как ограничить видимую часть краткого описания на странице категории?

Как ограничить видимую часть «краткого описания» на странице категории?

Я нашел код в теме / woocommerce / content-product.php, но все, что я пробовал, ничего не делает.

<?php $len = strlen(strip_tags($post->post_excerpt)); if($len>get_option('shop_dec_len', '180')) { $len = "..."; } else { $len = ""; } ?> <?php if ($post->post_excerpt && $post->post_excerpt != "") echo '<div itemprop="description" class="desc">' . mb_substr ( strip_tags($post->post_excerpt), 0, get_option('shop_dec_len', '180')) . $len . '</div>'; ?> 

Solutions Collecting From Web of "Как ограничить видимую часть краткого описания на странице категории?"

Обычно, если вы настраиваете пользовательский отрывок, он показывает полный текст этой выдержки. В этом случае длина ограничивается функцией PHP mb_substr до предела в 180 символов или независимо от параметра shop_dec_len . Это говорит мне, что вы можете либо изменить этот параметр mb_substr напрямую, либо есть опция где-то в администраторе, и вам даже не нужно менять код. Чтобы изменить его, вы можете сделать следующее:

 <?php if ($post->post_excerpt && $post->post_excerpt != "") echo '<div itemprop="description" class="desc">' . mb_substr ( strip_tags($post->post_excerpt), 0, 100 ) . $len . '</div>'; ?> 

Для другого способа обрезать выдержку вы можете посмотреть на [trim_word()][2] которая является аккуратной функцией, которую кто-то написал для обрезки без разрыва слов:

 /** * trims text to a space then adds ellipses if desired * @param string $input text to trim * @param int $length in characters to trim to * @param bool $ellipses if ellipses (...) are to be added * @param bool $strip_html if html tags are to be stripped * @return string */ function trim_text($input, $length, $ellipses = true, $strip_html = true) { //strip tags, if desired if ($strip_html) { $input = strip_tags($input); } //no need to trim, already shorter than trim length if (strlen($input) <= $length) { return $input; } //find last space within length $last_space = strrpos(substr($input, 0, $length), ' '); $trimmed_text = substr($input, 0, $last_space); //add ellipses (...) if ($ellipses) { $trimmed_text .= '...'; } return $trimmed_text; } 

Так что это может выглядеть так:

 <?php if ($post->post_excerpt && $post->post_excerpt != "") echo '<div itemprop="description" class="desc">' . trim_words( $post->post_excerpt, 100, false, true ) . $len . '</div>'; ?>