Problem beim Aktivieren der Formatierung in Auszügen in WordPress

Dies ist, was ich in der functions.php-Datei meines Themas hinzugefügt habe, um die Formatierung für Auszüge in WordPress zu ermöglichen ( Quelle des Tipps ):

remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'bwp_trim_excerpt'); function bwp_trim_excerpt($text) { $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]>', $text); $text = strip_tags($text, ''); $excerpt_length = apply_filters('excerpt_length', 55); $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]'); $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY); if ( count($words) > $excerpt_length ) { array_pop($words); $text = implode(' ', $words); $text = $text . $excerpt_more; } else { $text = implode(' ', $words); } } return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); } 

Das Problem mit der Aktivierung der Formatierung in Post-Auszügen scheint zu sein, wenn der Text, der mit einem Tag formatiert ist (sei es , , , oder irgendein anderes), ausgeschnitten wird Durch den dazwischen liegenden Auszug wird die Formatierung der gesamten Seite von diesem Tag überschrieben. Schau dir diesen Screenshot an:

Bildschirmfoto

Ich glaube, das ist der Grund, warum Formatierung für Auszüge nicht standardmäßig aktiviert ist. Gibt es trotzdem etwas zu beheben? Stimmt etwas nicht mit dem Code?

Hoffe ich kann hier Hilfe bekommen. Vielen Dank!

Solutions Collecting From Web of "Problem beim Aktivieren der Formatierung in Auszügen in WordPress"

Dies ist einer der Gründe, warum HTML-Markup überhaupt aus Auszügen entfernt wird, um zu verhindern, dass solche Probleme auftreten, aber wo ein Wille ist, gibt es einen Weg …

Sie können, indem Sie regulären Ausdruck verwenden, die offenen Tags schließen, die nur für den Auszug gelten, und Sie sollten vielleicht den folgenden Link für einige Ideen ansehen,

Schließen Sie HTML-Tags

Oder alternativ können Sie dieses Plugin für WordPress fertig machen,

Fortgeschrittener Auszug

Oder, wenn Sie so geneigt sind, können Sie es modifizieren oder seine Struktur probieren und es auf Ihre function anwenden.

AKTUALISIEREN

Ich habe mich entschieden, einen Test durchzuführen, aber bitte beachten Sie, dass ich eine andere function verwendet habe, die ich häufig nutze, um Ausschnitte mit anpassbaren Längen im laufenden Betrieb zu erstellen.

Setze das in deine functions.php Datei,

 function content($limit) { global $content; $content = explode(' ', get_the_content(), $limit); if (count($content)>=$limit) { array_pop($content); $content = implode(" ",$content).'...'; } else { $content = implode(" ",$content); } $content = preg_replace('/\[.+\]/','', $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); return $content; } 

gefolgt von,

 function closetags($html) { #put all opened tags into an array $content = $result; preg_match_all('#< ([az]+)(?: .*)?(?#iU', $html, $result); $openedtags = $result[1]; #put all closed tags into an array preg_match_all('##iU', $html, $result); $closedtags = $result[1]; $len_opened = count($openedtags); # all tags are closed if (count($closedtags) == $len_opened) { return $html; } $openedtags = array_reverse($openedtags); # close tags for ($i=0; $i < $len_opened; $i++) { if (!in_array($openedtags[$i], $closedtags)){ $html .= ''; } else { unset($closedtags[array_search($openedtags[$i], $closedtags)]); } } return $html; } 

Dann würden Sie in Ihrem Thema Folgendes tun:

 < ?php echo closetags( content(55) );?> 

Wobei 55 = die Länge in Worten, die Ihr Auszug haben soll.

Wenn Sie die ACTUAL-Exzerpt-Box im Post-Edit-Bildschirm verwenden möchten, können Sie dieses Snippet auch zu Ihrer functionsdatei hinzufügen,

 function excerpt($limit) { global $excerpt; $excerpt = explode(' ', get_the_excerpt(), $limit); if (count($excerpt)>=$limit) { array_pop($excerpt); $excerpt = implode(" ",$excerpt).'...'; } else { $excerpt = implode(" ",$excerpt); } $excerpt = preg_replace('/\[.+\]/','', $excerpt); $excerpt = apply_filters('the_excerpt', $excerpt); $excerpt = str_replace(']]>', ']]>', $excerpt); return $excerpt; } 

Und seine Verwendung wäre,

 < ?php echo closetags( excerpt(55) );?> 

Wenn Sie jedoch das Feld AKTUELLE Auszüge im Posteditor-Bildschirm verwenden, müssten Sie natürlich Ihre Tags ,,,,etc.. manuell schreiben. Es sei denn, Sie ändern das Standard-TinyMCE für die Auszugsbox.

Also da hast du es, du bist in beiden Fällen verdeckt, entweder …

1) einen Ausschnitt aus dem Inhalt entnehmen () 2) einen Ausschnitt aus dem Auszug extrahieren ()

HINWEIS Es könnte einen effizienteren Weg geben, dies zu tun, indem Sie die functionalität des Beispiels zum Schließen von HTML-Tags in Mailand schreiben, falls Sie dies weiter untersuchen möchten.

Es ist so einfach wie das Hinzufügen dieser function zu der Datei functions.php Ihres Themes. Der Code wurde klar kommentiert, daher ist es selbsterklärend:

 function better_trim_excerpt($text) { $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]>', $text); // Removes any JavaScript in posts (between  tags) $text = preg_replace('@@si', '', $text); // Enable formatting in excerpts - Add HTML tags that you want to be parsed in excerpts, default is 55 $text = strip_tags($text, ''); // Set custom excerpt length - number of words to be shown in excerpts $excerpt_length = apply_filters('excerpt_length', 55); // Modify excerpt more string at the end from [...] to ... $excerpt_more = apply_filters('excerpt_more', ' ' . '...'); $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY); if ( count($words) > $excerpt_length ) { array_pop($words); $text = implode(' ', $words); // IMPORTANT! Prevents tags cutoff by excerpt (ie unclosed tags) from breaking formatting $text = force_balance_tags( $text ); $text = $text . $excerpt_more; } else { $text = implode(' ', $words); } } return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); } // Remove the native excerpt function, and replace it with our improved function remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'better_trim_excerpt'); 

EDIT: Und stellen Sie sicher, HTML-Minification ist deaktiviert in W3 Total Cache (wenn Sie es verwenden).

[ Quellartikel ]