Multiple excerpt lengths in wordpress Multiple excerpt lengths in wordpress wordpress wordpress

Multiple excerpt lengths in wordpress


How about...

function excerpt($limit) {      $excerpt = explode(' ', get_the_excerpt(), $limit);      if (count($excerpt) >= $limit) {          array_pop($excerpt);          $excerpt = implode(" ", $excerpt) . '...';      } else {          $excerpt = implode(" ", $excerpt);      }      $excerpt = preg_replace('`\[[^\]]*\]`', '', $excerpt);      return $excerpt;}function content($limit) {    $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;}

then in your template code you just use..

<?php echo excerpt(25); ?>

from: http://bavotasan.com/tutorials/limiting-the-number-of-words-in-your-excerpt-or-content-in-wordpress/


As for now, you can upgrade Marty's reply:

function excerpt($limit) {    return wp_trim_words(get_the_excerpt(), $limit);}

You can also define custom 'read more' link this way:

function custom_read_more() {    return '... <a class="read-more" href="'.get_permalink(get_the_ID()).'">more »</a>';}function excerpt($limit) {    return wp_trim_words(get_the_excerpt(), $limit, custom_read_more());}


This is what I came up with.

Add this to your functions.php

class Excerpt {  // Default length (by WordPress)  public static $length = 55;  // So you can call: my_excerpt('short');  public static $types = array(      'short' => 25,      'regular' => 55,      'long' => 100    );  /**   * Sets the length for the excerpt,   * then it adds the WP filter   * And automatically calls the_excerpt();   *   * @param string $new_length    * @return void   * @author Baylor Rae'   */  public static function length($new_length = 55) {    Excerpt::$length = $new_length;    add_filter('excerpt_length', 'Excerpt::new_length');    Excerpt::output();  }  // Tells WP the new length  public static function new_length() {    if( isset(Excerpt::$types[Excerpt::$length]) )      return Excerpt::$types[Excerpt::$length];    else      return Excerpt::$length;  }  // Echoes out the excerpt  public static function output() {    the_excerpt();  }}// An alias to the classfunction my_excerpt($length = 55) {  Excerpt::length($length);}

It can be used like this.

my_excerpt('short'); // calls the defined short excerpt lengthmy_excerpt(40); // 40 chars

This is the easiest way that I know of to add filters, that are callable from one function.