WordPress.org

Ready to get started?Download WordPress

Forums

Custom excerpt length doesn't work anymore (6 posts)

  1. renata_d
    Member
    Posted 2 years ago #

    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

  2. esmi
    Theme Diva & Forum Moderator
    Posted 2 years ago #

    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.

  3. carlynorama
    Member
    Posted 2 years ago #

    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?

  4. alchymyth
    The Sweeper & Moderator
    Posted 2 years ago #

    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>
  5. carlynorama
    Member
    Posted 2 years ago #

    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")

  6. carlynorama
    Member
    Posted 2 years ago #

    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.

Topic Closed

This topic has been closed to new replies.

About this Topic