Intereting Posts
Почему previous_post_link и next_post_link работают вне Loop? Настройка виджета WordPress – категория продуктов Где было добавлено новое настраиваемое поле? Установите значение post_parent для изображений, загруженных кнопкой Add Media, в сообщение Удалить пользовательскую таксономию из-за постоянной связи Отображать только мои собственные файлы / изображения в медиа-библиотеке таблица префиксов и плагинов 404 Ошибка при отправке формы в пользовательский тип сообщения Пользовательские меню: проблема динамической подсветки с пользовательской домашней ссылкой Ошибка WordPress в пустое место Как принудить вставку <p> в редакторе PHP Неустранимая ошибка: не удается вызвать перегруженную функцию для не-объекта в wp-includes / capability.php Наш сокращенный блок Shortcode в Tinymce не работает в WordPress 3.9? Замечание Ошибка при использовании плагина QuickCache с плагином Mobile Smart?

Пользовательская функция wp_trim_words () не обрезается справа

У меня есть эта настраиваемая wp_trim_words() которая дает мне отрывки из 20 слов, и по большей части работает отлично. За исключением некоторых причин, на должностях, содержащих списки, он выводит более 20 слов. ( См. Сообщения внизу этой страницы. ) Как я могу это исправить? Я попытался удалить <ul>,<ol>,<li>, из function insight_allowedtags() но ничего не сделал.

В идеале я хотел бы сделать вывод пользовательского выдержки не менее 20 слов и заканчиваться в конце предложения независимо от того, содержит ли сообщение список.

Это пользовательская функция, которую я использую ( как предложено в этом сообщении ):

 // Custom Excerpt for Insights Posts on Insights Page & Category Pages function insight_allowedtags() { // Add custom tags to this string return '<script>,<style>,<span>,<ul>,<ol>,<li>,<a>,<p>'; } if ( ! function_exists( 'insight_custom_wp_trim_excerpt' ) ) : function insight_custom_wp_trim_excerpt($insight_excerpt) { global $post; $raw_excerpt = $insight_excerpt; if ( '' == $insight_excerpt ) { $insight_excerpt = get_the_content(''); $insight_excerpt = strip_shortcodes( $insight_excerpt ); $insight_excerpt = apply_filters('the_content', $insight_excerpt); $insight_excerpt = str_replace(']]>', ']]&gt;', $insight_excerpt); $insight_excerpt = strip_tags($insight_excerpt, insight_allowedtags()); /*IF you need to allow just certain tags. Delete if all tags are allowed */ //Set the excerpt word count and only break after sentence is complete. $excerpt_word_count = 20; $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); $tokens = array(); $excerptOutput = ''; $count = 0; // Divide the string into tokens; HTML tags, or words, followed by any whitespace preg_match_all('/(<[^>]+>|[^<>\s]+)\s*/u', $insight_excerpt, $tokens); foreach ($tokens[0] as $token) { if ($count >= $excerpt_word_count && preg_match('/[\,\;\?\.\!]\s*$/uS', $token)) { // Limit reached, continue until , ; ? . or ! occur at the end $excerptOutput .= trim($token); break; } // Add words to complete sentence $count++; // Append what's left of the token $excerptOutput .= $token; } $insight_excerpt = trim(force_balance_tags($excerptOutput)); // $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . sprintf(__( 'Read more about %s &nbsp;&raquo;', 'wpse' ), get_the_title()) . '</a>'; // $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); //$pos = strrpos($wpse_excerpt, '</'); //if ($pos !== false) // Inside last HTML tag //$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last word */ //else // After the content $insight_excerpt .= $excerpt_end; /*Add read more in new paragraph */ return $insight_excerpt; } return apply_filters('insight_custom_wp_trim_excerpt', $insight_excerpt, $raw_excerpt); } endif; remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt', 'blog_custom_wp_trim_excerpt', 'event_custom_wp_trim_excerpt', 'insight_custom_wp_trim_excerpt'); 

Solutions Collecting From Web of "Пользовательская функция wp_trim_words () не обрезается справа"