WordPress.org

Support

Support » How-To and Troubleshooting » Custom excerpt length doesn't work anymore

Custom excerpt length doesn't work anymore

  • A couple of months ago I customized the length of the excerpt I see in my home page, using these lines of code in function.php:

    function modifica_lunghezza_excerpt(){
    return 10;
    }
    add_filter(‘excerpt_length’,’modifica_lunghezza_excerpt’);

    It worked for a while and then, all of a sudden, it didn’t work anymore: just checked the home and saw a 55words long excerpt.
    I also tried to modify the core in file formatting.php:

    $excerpt_length = apply_filters(‘excerpt_length’, 20);

    Nothing happened.
    Thank you to anyone who can help
    Renata

Viewing 5 replies - 1 through 5 (of 5 total)
  • esmi

    @esmi

    Forum Moderator

    I also tried to modify the core in file formatting.php

    Never modify core!

    There’s nothing obviously wrong with the code you have posted.

    carlynorama

    @carlynorama

    I’m sorry, but I am also having this trouble.

    Using a twenty eleven child them, Ive added the following to my functions.php to no avail.

    remove_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );
    function new_excerpt_length($length) {
    	return 10;
    }
    add_filter('excerpt_length', 'new_excerpt_length');

    The Excerpt Length Plugin doesn’t work.

    using the get_the_excerpt call in my content.php template instead doesn’t work.

    the example code in this support doesn’t work for me:
    http://wordpress.org/support/topic/changing-length-of-the_excerpt-without-changing-it-on-the-whole-wordpress?replies=14

    The example code from the support topic below does – but it seems like the nuclear option:
    http://wordpress.org/support/topic/changing-the-default-length-of-the_excerpt-1

    Any thoughts?

    Michael

    @alchymyth

    functions.php of the child theme is loaded before functions.php of the parent theme, which needs to be considered;

    there is a section at the beginning of functions.php (of Twenty Eleven)which explains exactly that:

    * We can remove the parent theme's hook only after it is attached, which means we need to
     * wait until setting up the child theme:
     *
     * <code>
     * add_action( 'after_setup_theme', 'my_child_theme_setup' );
     * function my_child_theme_setup() {
     *     // We are providing our own filter for excerpt_length (or using the unfiltered value)
     *     remove_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );
     *     ...
     * }
     * </code>
    carlynorama

    @carlynorama

    I knew there was some giant known-quantity that I was missing. I was unclear on what that section meant. Thank you. I will read more about how child themes interact with the parent, for sure.

    I found a work around though, that I might like better. It is sort of an “auto more function”

    in my showcase.php

    // Set $more to 0 in order to only get the first part of the post.
    						global $more;
    						$more = 0;
    
    						if ( has_post_format()) {
                                get_template_part( 'content', get_post_format() );
                            } else {
                                get_template_part( 'content', 'index' );
    						}

    In my content-index.php

    <?php if (has_more()) {
    		        the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyeleven' ) );
    		    } else {
                    $my_content = limit_content();
                    //$my_content = apply_filters('the_content', $my_content);
                    //$my_content = str_replace(']]>', ']]>', $my_content);
                    echo $my_content;
                }?>

    in the functions.php

    //more tag detection
    //http://wordpress.org/support/topic/check-if-post-has-more
    function has_more()
    {
     global $post;
     if ( empty( $post ) ) return;
    
        if ($pos=strpos($post->post_content, '<!--more-->')) {
            return true;
        } else {
            return false;
        }
    }
    
    function more_posistion()
    {
        if ($pos=strpos($post->post_content, '<!--more-->')) {
            return $pos;
        }
    }
    
    //limit content length
    //http://www.fusedthought.com/archives/wordpress-custom-content-length-code-snippet
    function limit_content($content_length = 150, $allowtags = true, $allowedtags = '') {
    	global $post;
    	$content = $post->post_content;
    	$content = apply_filters('the_content', $content);
    	if (!$allowtags){
    		$allowedtags .= '<style>';
    		$content = strip_tags($content, $allowedtags);
    	}
    	$content = str_replace(']]>', ']]>', $content);
    	$wordarray = explode(' ', $content, $content_length + 1);
    	if(count($wordarray) > $content_length) :
    		array_pop($wordarray);
    		//array_push($wordarray, '...');
    		$content = implode(' ', $wordarray);
    		$content .= "</p>";
    		$content .= twentyeleven_continue_reading_link();
    	endif;
    
    	echo $content;
    }

    other relevant pages:
    http://codex.wordpress.org/Customizing_the_Read_More (“Displaying a “more…” link without a <–more–> tag”)

    carlynorama

    @carlynorama

    Bug Fix – showcase.php stopped working when i moved it live, the following change fixed it:

    if ( has_post_format()) {

    to

    if ( has_post_format('')) {

    I have no idea why it worked on my local dev and not on my live site. They are supposed to be identical.

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Custom excerpt length doesn't work anymore’ is closed to new replies.
Skip to toolbar