WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I set up a theme in buddypress and i want to have a teaser section for my groups on there. It works fine but i have a problem to shorten the group description...

I'm using it like this:

<p><a href="<?php bp_group_permalink() ?>"><?php bp_group_name() ?></a></p>
<p><?php bp_group_description_excerpt() ?></p>

If there´s a very long group-description it crashes my layout. Is it possible (like in wordpress) to make the excerpt shorter (with a function or something)? Like "maximum of 20 letters", or something like that?


share|improve this question

Custom API

Write a normal API wrapper function for it and place it in your functions.php theme or offer it as (mu-)plugin.

Trim Words

 * Trim Words Cb fn
 * @link Adjusted from http://snipplr.com/view.php?codeview&id=20397
 * @param string $excerpt Input string
 * @param int $count Word count
 * @param boolean/string $more Whether to show a "more" or not or a string
 * @return string $excerpt
function wpse50198_word_trim( $excerpt, $limit, $more = FALSE )
    $output = explode( ' ', $excerpt );
    $count = count( $input );

    if ( $limit < $count )  )
        array_splice( $excerpt, $count, null, $output );

    if ( $more )
        $output .= $more;

    $output = implode( ' ', $output );

    return $output;

The Template Tag

 * @param bool $count Number of words to show - (default) 20
 * @param boolean/string $more Whether to show a "more" or not - (default) ...
 * @param bool $echo Print or return the excerpt - (default) TRUE
 * @return string $excerpt The reduced excerpt
function short_bp_group_descr_excerpt( $count = 20, $more = '&hellip', $echo = TRUE )
    $excerpt = bp_get_group_description_excerpt();
    $length = str_word_count( $excerpt );

    if ( $count < $length )
        $excerpt = wpse50198_trim_words( $excerpt, $count, $more );

    if ( $echo )
        echo $excerpt;

    return $excerpt;


Now, just call it like any template tag inside your template: short_bp_group_descr_excerpt();.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.