• Resolved alex845

    (@alex845)


    Is it possible to allow some HTML tags in the excerpt? (line breaks to be more specific).

    I managed to do it in archive pages (categories and tags) with the folowing code:

    /******************************************************************************
    * @Author: Boutros AbiChedid 
    * @Date:   June 20, 2011
    * @Websites: https://bacsoftwareconsulting.com/ ; https://blueoliveonline.com/
    * @Description: Preserves HTML formating to the automatically generated Excerpt.
    * Also Code modifies the default excerpt_length and excerpt_more filters.
    *******************************************************************************/
    function custom_wp_trim_excerpt($text) {
    $raw_excerpt = $text;
    if ( '' == $text ) {
        $text = get_the_content('');
     
        $text = strip_shortcodes( $text );
     
        $text = apply_filters('the_content', $text);
        $text = str_replace(']]>', ']]>', $text);
         
        /***Add the allowed HTML tags separated by a comma.***/
        $allowed_tags = '<br>,<li>,<p>';   
        $text = strip_tags($text, $allowed_tags);
         
        /***Change the excerpt word count.***/
        $excerpt_word_count = 60; 
        $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); 
         
        /*** Change the excerpt ending.***/
        $excerpt_end = ' <a href="'. get_permalink($post->ID) . '">' . '&raquo; Continue Reading.' . '</a>'; 
        $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);
         
        $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
        if ( count($words) > $excerpt_length ) {
            array_pop($words);
            $text = implode(' ', $words);
            $text = $text . $excerpt_more;
        } else {
            $text = implode(' ', $words);
        }
    }
    return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
    }
    remove_filter('get_the_excerpt', 'wp_trim_excerpt');
    add_filter('get_the_excerpt', 'custom_wp_trim_excerpt');

    Thanks for the great plugin!

    • This topic was modified 4 years, 10 months ago by alex845.

    The page I need help with: [log in to see the link]

Viewing 9 replies - 1 through 9 (of 9 total)
  • Plugin Author Ajay

    (@ajay)

    I think that code might work if you take out the wrapping if ( '' == $text ) {

    And then do add_filter(‘crp_excerpt’, ‘custom_wp_trim_excerpt’);

    https://github.com/WebberZone/contextual-related-posts/blob/master/includes/tools.php#L79

    Thread Starter alex845

    (@alex845)

    Thanks for the fast reply.

    Unfortunately, removing if ( '' == $text ) { causes a critical error.

    Plugin Author Ajay

    (@ajay)

    Hi,

    The full wrapping if statement had to be taken out – please try this:

    
    function custom_crp_trim_excerpt($text) {
        $raw_excerpt = $text;
    
        $text = get_the_content('');
     
        $text = strip_shortcodes( $text );
     
        $text = apply_filters('the_content', $text);
        $text = str_replace(']]>', ']]>', $text);
         
        /***Add the allowed HTML tags separated by a comma.***/
        $allowed_tags = '<br>,<li>,<p>';   
        $text = strip_tags($text, $allowed_tags);
         
        /***Change the excerpt word count.***/
        $excerpt_word_count = 60; 
        $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); 
         
        /*** Change the excerpt ending.***/
        $excerpt_end = ' <a href="'. get_permalink($post->ID) . '">' . '&raquo; Continue Reading.' . '</a>'; 
        $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);
         
        $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
        if ( count($words) > $excerpt_length ) {
            array_pop($words);
            $text = implode(' ', $words);
            $text = $text . $excerpt_more;
        }
        return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
    }
    add_filter(‘crp_excerpt’, ‘custom_crp_trim_excerpt’);
    
    • This reply was modified 4 years, 10 months ago by Ajay.
    Thread Starter alex845

    (@alex845)

    Thanks,

    Unfortunately, nothing happens – also if I try to completely mess up the code hoping that it will at least break up something. (like removing the ‘strip_shortcodes’)

    I’m no way a coder, but can it have something to do with the right filters (tptn_excerpt ???)

    Best regards,
    Alex

    Plugin Author Ajay

    (@ajay)

    Indeed it was the filter! Sorry, mixed up my plugins which are identical sets of code.

    can you try with tptn_excerpt

    Thread Starter alex845

    (@alex845)

    Also did not work ;-(

    I also tried to modify ‘formatting.php’ but I’m clearly not good enough to mess with these things.

    Plugin Author Ajay

    (@ajay)

    Please can you try this – I got it to work on my test installs.

    
    function custom_tptn_trim_excerpt( $text, $id ) {
    	$raw_excerpt = $text;
    
    	$text = get_the_content( null, false, $id );
    
    	$text = strip_shortcodes( $text );
    
    	$text = apply_filters( 'the_content', $text );
    	$text = str_replace( ']]>', ']]>', $text );
    
    	/***Add the allowed HTML tags separated by a comma.*/
    	$allowed_tags = '<br>,<li>,<p>,<strong>';
    	$text         = strip_tags( $text, $allowed_tags );
    
    	/***Change the excerpt word count.*/
    	$excerpt_length = 60;
    	$excerpt_length = apply_filters( 'excerpt_length', $excerpt_length );
    
    	/*** Change the excerpt ending.*/
    	$excerpt_end  = ' <a href="' . get_permalink( $id ) . '">&raquo; Continue Reading.</a>';
    	$excerpt_more = apply_filters( 'excerpt_more', ' ' . $excerpt_end );
    
    	$words = preg_split( "/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY );
    	if ( count( $words ) > $excerpt_length ) {
    		array_pop( $words );
    		$text = implode( ' ', $words );
    		$text = $text . $excerpt_more;
    	}
    	return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt );
    }
    add_filter( 'tptn_excerpt', 'custom_tptn_trim_excerpt', 10, 2 );
    
    
    • This reply was modified 4 years, 10 months ago by Ajay.
    Thread Starter alex845

    (@alex845)

    Yesss!!!

    Works as a charm.

    Many thanks,
    Alex

    • This reply was modified 4 years, 10 months ago by alex845.
    Plugin Author Ajay

    (@ajay)

    You’re welcome ??

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘Allow HTML in excerpt’ is closed to new replies.