Forums

Limit number of words on front page posts (on WP 3.0)? (9 posts)

  1. talgalili
    Member
    Posted 1 year ago #

    I all,

    I have a blog with variying lengths of posts, and I want the homepage to only present the first (let's say) 100 words of the post.
    After which, it should (automatically) add "more".

    What is a good way for doing this with WP 3.0 ?

    (I found the "Content and Excerpt Word Limit" plugin:
    http://wordpress.org/extend/plugins/content-and-excerpt-word-limit/

    But:
    a) I see it works for WP 3.0, but could also not.
    b) Since twenty ten theme is a bit more complex, in what way should I add it to the theme ? (add a file called loop-index.php and change it there ?)

  2. esmi
    Theme Diva & Forum Moderator
    Posted 1 year ago #

    You could just use the_excerpt() but customise the number of words displayed by adding:

    if( !function_exists( 'my_excerpt_length' ) :
    	function my_excerpt_length($length) {
    		return 100; // Or whatever you want the length to be.
    	}
    	add_filter('excerpt_length', 'my_excerpt_length');
    endif;

    to functions.php. It hardly seems worth creating a whole new Loop template just for this change, so you could modify the orginal and replace <?php the_content(); ?> with <?php if( is_home() ) the_excerpt; else the_content(); ?>.

  3. talgalili
    Member
    Posted 1 year ago #

    Thank you esmi:

    1) How will this handle formating ?
    Let's say exactly it was before a < strong > tag was closed - will it cause problems ?

    2) Where do I change that in twenty ten ? (Usually I would do it on index.php, but I am a bit scared of changing anything on 2010 theme :) )

    3) If it is that simple, could it possibly (easily) be coded into a plugin to control this aspect on all pages of the blog (how many words on front page, on tag page and so on)

    Thanks for helping :)

    Tal

  4. esmi
    Theme Diva & Forum Moderator
    Posted 1 year ago #

    1. the_excerpt() strips out all formatting by default.

    2. It's already in the TwentyTen theme. Functions.php:

    function twentyten_excerpt_length( $length ) {
    	return 40;
    }
    add_filter( 'excerpt_length', 'twentyten_excerpt_length' );

    Just change 40 to 100 (or whatever number you want).

    3. In theory, yes. The coding wouldn't be difficult. It's just that covering all of the different types of pages that might make it a bit clunky.

  5. talgalili
    Member
    Posted 1 year ago #

    Thanks Esmi.

    I would rather not strip my text from it's formatting (If something was bold or with a link, I want it to stay like it).

    Any other options ?

    Thanks!

  6. esmi
    Theme Diva & Forum Moderator
    Posted 1 year ago #

    You could try using get_the_content and the PHP substr(() function:

    <?php
    $content = substr( get_the_content(),0, 100) ;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;
    ?>

    But the problem here is that you could inadvertently output an opening <strong> (for example) but omit the matching closing </strong> (because it's after the first 100 characters) - which would cause all subsequent text to be rendered as bold.

  7. esmi
    Theme Diva & Forum Moderator
    Posted 1 year ago #

    Just remembered that there are a couple of custom excerpt plugins that allow you to retain content formatting but customise the length of the output. I'm just not sure if they work with WP 3.0.

  8. talgalili
    Member
    Posted 1 year ago #

    Thanks for trying to help esmi,

    I'll look around. If I don't find anything, I'll come back :)

    Tal

  9. talgalili
    Member
    Posted 1 year ago #

    Bump - any other suggestions ?

Topic Closed

This topic has been closed to new replies.

About this Topic