wake-up-neo.net

Wie kann ich den Inhalt richtig einschränken und HTML entfernen?

Ich benutze diesen Code schon lange:

$temp_arr_content = explode(
    " ",
    substr(
        strip_tags(
            get_the_content()
        ),
        0,
        720
    )
);
$temp_arr_content[count( $temp_arr_content ) - 1] = "";
$display_arr_content = implode( " ", $temp_arr_content );
echo $display_arr_content;
if( strlen( strip_tags( get_the_content() ) ) > 0 )
    echo "...";

Um meinen Inhalt auf 720 Zeichen zu beschränken und HTML daraus zu entfernen
Heute habe ich es jedoch wieder in meinem neuen Thema verwendet, aber ich habe festgestellt, dass es auch die HTML-Codes ausgibt (der HTML-Code funktioniert nicht, wird aber im Inhalt angezeigt).

Ich habe diesen Code auch in meinem Theme verwendet:

$excerpt = get_the_excerpt();
echo string_limit_words( $excerpt, 55 );

und dieser Code auf meiner Function.php:

function string_limit_words( $string, $Word_limit ) {
    $words = explode( ' ', $string, ( $Word_limit + 1 ) );
    if( count( $words ) > $Word_limit )
        array_pop( $words );
    return implode( ' ', $words );
}

um Wörter einzuschränken und HTML zu entfernen, funktioniert der Code jedoch nicht, wenn ich 55 in 150 ändere, und es werden immer noch 55 Wörter angezeigt.
Kann mir jemand bei der Lösung dieses Problems helfen? Vielen Dank

2
Dave

Erstens würde ich die Zeichenfolge/Wortlänge von content nicht ändern. Semantisch haben Sie es mit einem Auszug zu tun, konzentrieren wir uns also darauf.

Zweitens, um die Anzahl der für den Auszug zurückgegebenen Wörter zu begrenzen, filtern Sie einfach excerpt_length :

<?php
function wpse52673_filter_excerpt_length( $length ) {
    // Return (integer) value for
    // Word-length of excerpt
    return 150;
}
add_filter( 'excerpt_length', 'wpse52673_filter_excerpt_length' );
?>

Der zusätzliche Vorteil der Verwendung von the_excerpt() besteht darin, dass für automatisch generierte Auszüge kein HTML-Code geparst wird . Wenn Sie also keine benutzerdefinierten Auszüge verwenden, Fertig.

Wenn Sie jedoch do benutzerdefinierte Auszüge verwenden und dennoch HTML-Tags entfernen möchten, entfernen Sie einfach einen oder alle der folgenden Filter, die auf the_excerpt angewendet werden:

add_filter( 'the_excerpt',     'wptexturize'      );
add_filter( 'the_excerpt',     'convert_smilies'  );
add_filter( 'the_excerpt',     'convert_chars'    );
add_filter( 'the_excerpt',     'wpautop'          );
add_filter( 'the_excerpt',     'shortcode_unautop');

Um einen zu entfernen, rufen Sie einfach an, z.

remove_filter( 'the_excerpt', 'wptexturize' );
1
Chip Bennett