How to display links in excerpt? [duplicate]

First, I would suggest that you combine your p and a tags into one line, like so:

$text = strip_tags($text, '<p><a>'); 

Second, the remove_filter and add_filter should go in your functions.php file, not content.php…..move those lines to just below the $text = strip_tags…..

I don’t think you need the line that has $main_content = apply_filters as I’ve never seen that used before. Try it without it and after moving the other two lines, but if you find you need it then it would also go in your functions.php file.

EDITED: Here is my entire code, in case it helps anyone else. This works perfectly to preserve bolding ( and ), italics ( and ) and links (). Those are the only tags I allow in my excerpts but that can be modified to suit your needs. THIS goes in my Child Theme’s functions.php file so it’s safe from Theme updates.

    // Improves the look of the excerpt, more words, allows bolding
function improved_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('\]\]\>', ']]&gt;', $text);
    $text = strip_tags($text, '<b><strong><em><i><a>');
    $excerpt_length = apply_filters('excerpt_length', 45);
    $newexcerpt_more = apply_filters('excerpt_more', 'new_excerpt_more');
    $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 . $newexcerpt_more;
        $text = force_balance_tags( $text );
    } else {
        $text = implode(' ', $words);
        $text = force_balance_tags( $text );
    }
}
return $text;
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');