Intereting Posts
Сортировка пользовательских типов сообщений по фамилии в бэкэнд Выбор сообщения в панели инструментов Отсортировать все сообщения по названию категории в панели администратора? Включить запланированные (будущие) сообщения в почтовую навигацию WordPress (previous_post_link, next_post_link) Создание двух тем для создания полного сайта Просмотр / редактирование веб-сайта Multisite после истечения срока действия домена Получить изображение Описание Пользовательский запрос в верхней части страницы поиска архива, аргументы переопределены Более гибкое управление боковой панелью и виджетами Различные ленты WordPress для одного и того же блога do_shortcode с настраиваемым полем Как отобразить имена пользователей из определенной группы с помощью короткого кода? Получить адрес электронной почты типа Администратор если значение null или int (0) равно 0 get_page_template ничего не возвращает

Короткий контент по символам

Возможный дубликат:
выдержка в символах

На некоторых наших сайтах мы показываем выдержки из сообщений (администраторы контента не вводят выдержки).
Мы могли бы использовать функцию the_excerpt , но из того, что я мог видеть, я могу контролировать только количество слов, которые она извлекает, и для нас это слишком много общего (слово может содержать 2 буквы или 10 букв …).
Поэтому нам нужна функция, которая принимает количество символов и выдержек, количество которых зависит от содержимого. Но мы также не хотим, чтобы слова были срезаны посередине. Последняя необходимость заключается в том, что функция работает с многобайтовой версией строковых функций php (например: l: используйте mb_substr вместо substr )

Есть ли WP, встроенный в функции, которые будут делать это?

Solutions Collecting From Web of "Короткий контент по символам"

Нет встроенных функций WordPress для обрезки строк по количеству символов.

 /** * Get a limited part of the content - sans html tags and shortcodes - * according to the amount written in $limit. Make sure words aren't cut in the middle * @param int $limit - number of characters * @return string - the shortened content */ function mop_the_short_content($limit) { $content = get_the_content(); /* sometimes there are <p> tags that separate the words, and when the tags are removed, * words from adjoining paragraphs stick together. * so replace the end <p> tags with space, to ensure unstickinees of words */ $content = str_replace('</p>', ' ', $content); $content = strip_tags($content); $content = strip_shortcodes($content); $ret = $content; /* if the limit is more than the length, this will be returned */ if (mb_strlen($content) >= $limit) { $ret = mb_substr($content, 0, $limit); // make sure not to cut the words in the middle: // 1. first check if the substring already ends with a space if (mb_substr($ret, -1) !== ' ') { // 2. If it doesn't, find the last space before the end of the string $space_pos_in_substr = mb_strrpos($ret, ' '); // 3. then find the next space after the end of the string(using the original string) $space_pos_in_content = mb_strpos($content, ' ', $limit); // 4. now compare the distance of each space position from the limit if ($space_pos_in_content - $limit <= $limit - $space_pos_in_substr) { /* if the closest space is in the original string, take the substring from there*/ $ret = mb_substr($content, 0, $space_pos_in_content); } else { // else take the substring from the original string, but with the earlier (space) position $ret = mb_substr($content, 0, $space_pos_in_substr); } } } return $ret . '...'; }