Thumbnail + Auszug = Verlust der Wortzählung

Meine Ausschnitte werden mit dieser function angezeigt

<?php function get_the_content_limit_custom_allowedtags() { // Add custom tags to this string return ',,
,,,

Das Problem, mit dem ich konfrontiert bin, ist, dass die HTML-Tags zu einem Verlust von Wörtern führen, wenn Sie the_excerpt() . Wenn ich zu Beginn meines Beitrags ein Bild habe, ist dieser Beitrag ungefähr 20 Wörter kürzer als ein Beitrag, an den kein Bild angehängt ist. Ich überprüfte ein paar Lösungen, und alle kommen auf die function preg_slit() herunter. Ich ersetze das in meinem Code durch ein Paar, das ich gefunden habe, aber sie vermasseln den Auszug. Ich benutzte '/()|\n|\r|\t|\s/' , '|\[(.+?)\](.+?\[/\\1\])?|s' . Irgendwelche Ideen, um the_excerpt() davon the_excerpt() die HTML-Tags als Wörter zu zählen

Solutions Collecting From Web of "Thumbnail + Auszug = Verlust der Wortzählung"

Für alle, die nach einem tollen Auszug suchen, der HTML-Tags in Takt hält und möchte, dass der Auszug nicht mitten im Satz abgeschnitten wird und eine wahre Wortzahl hat, hier ist der Code

  function pietergoosen_custom_wp_trim_excerpt($text) { global $post; $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]>', $text); //Add the allowed HTML tags separated by a comma. $allowed_tags = array( 'head', 'title', 'base', 'link', 'meta', 'style', 'script', 'noscript', 'body', 'section', 'nav', 'article', 'aside', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'footer', 'address', 'main', 'p', 'hr', 'pre', 'blockquote', 'ol', 'ul', 'li', 'dl', 'dt', 'dd', 'figure', 'figcaption', 'div', 'a', 'em', 'strong', 'small', 's', 'cite', 'q', 'dfn', 'abbr', 'data', 'time', 'code', 'var', 'samp', 'kbd', 'sub', 'sup', 'i', 'b', 'u', 'mark', 'ruby', 'rt', 'rp', 'bdi', 'bdo', 'span', 'br', 'wbr', 'ins', 'del', 'img', 'iframe', 'embed', 'object', 'param', 'video' ,'audio', 'source', 'track', 'canvas', 'map', 'area', 'svg', 'math', 'table', 'caption', 'colgroup', 'col', 'tbody', 'thead', 'tfoot', 'tr', 'td', 'th', 'form', 'fieldset', 'legend', 'label', 'input', 'button', 'select', 'datalist', 'optgroup', 'option', 'textarea', 'keygen', 'output', 'progress', 'meter', 'details', 'summary', 'menuitem', 'menu' ); $tag_string = '< ' . implode('>< ', $allowed_tags) . '>'; $text = strip_tags($text, $tag_string); //Set the excerpt word count and only break after sentence is complete. $excerpt_word_count = 75; $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', $text, $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; } $text = trim(force_balance_tags($excerptOutput)); $excerpt_end = ' ' . ' » ' . sprintf(__( 'Read more about: %s  »', 'pietergoosen' ), get_the_title()) . ''; $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); $pos = strrpos($text, '