it-swarm.com.de

auszug in Zeichen

Ich habe Code in functions.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);
}

aber ich muss den Auszug in der Anzahl der Zeichen begrenzen. Könnten Sie mir dabei helfen?

4
Marcin

Ich habe diesen Code in einem meiner letzten Projekte verwendet:

function ng_get_excerpt( $count ){
  $permalink = get_permalink( $post->ID );
  $excerpt = get_the_content();
  $excerpt = strip_tags( $excerpt );
  $excerpt = mb_substr( $excerpt, 0, $count );
  $excerpt = mb_substr( $excerpt, 0, strripos( $excerpt, " " ) );
  $excerpt = rtrim( $excerpt, ",.;:- _!$&#" );
  $excerpt = $excerpt . '<a href="'.$permalink.'" style="text-decoration: none;">&nbsp;(...)</a>';
  return $excerpt;
}

Ich habe es von hier bekommen:

http://wordpress.org/support/topic/limit-excerpt-length-by-characters

https://stackoverflow.com/questions/10923955/make-function-that-limits-text-not-show-last-punctuation-mark

Es hat den Vorteil, keine Interpunktion am Ende und kein Ende mit dem letzten vollständigen Wort zuzulassen

Die Verwendung der von @ medhamza7 oder @bainternet oder @fuxia vorgeschlagenen Filter ist vorzuziehen.

4
Nicolai

Verwenden Sie die Funktion utf8_truncate() aus dieser Antwort und kämpfen Sie sich durch wp_trim_excerpt().

Beispielcode, nicht getestet:

add_filter( 'excerpt_more', 'wpse_69436_excerpt_more' );

function wpse_69436_excerpt_more( $more )
{
    add_filter( 'wp_trim_excerpt', 'wpse_69436_trim_excerpt' );
    // we remove the more text here
    return '';
}

function wpse_69436_trim_excerpt( $excerpt )
{
    return utf8_truncate( $excerpt, 300 );
}
2
fuxia

WordPress hat einen Filter für das, was bequemerweise excerpt_length heißt und akzeptiert eine Reihe von Zeichen, so:

function custom_excerpt_length( $length ) {
    return 50;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

ändern Sie 50 auf das gewünschte Limit.

Aktualisierung per @toscho-Kommentar:

das ist die obige Lösung, die auch für Wörter und nicht für Zeichen gilt. Hier ist eine kurze Lösung:

add_filter('the_excerpt','excerpt_char_limit');
function excerpt_char_limit($e){
    return substr($e,0,50);
}
1
Bainternet

Für eine bessere Möglichkeit können Sie den get_the_excerpt-Filter verwenden:

function get_excerpt($excerpt="",$limit=140){

    $excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = mb_substr($excerpt, 0, $limit);
    $excerpt = mb_substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
    $excerpt = $excerpt.'...';
    return $excerpt;
}   
add_filter('get_the_excerpt',"get_excerpt");

Ändern Sie den $limit=140 auf die Anzahl der gewünschten Zeichen. Auch wenn Sie es anders wollen:

add_filter('get_the_excerpt',function ($excerpt="",$limit=140){

    $excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = mb_substr($excerpt, 0, $limit);
    $excerpt = mb_substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
    $excerpt = $excerpt.'...';
    return $excerpt;
});

Dadurch werden Konflikte wie der vorhandene Name der Funktion get_excerpt vermieden.

1
med amine hamza