0

Currently, I call the_excerpt via traditional means:

<?php the_excerpt(); ?>

But I add a filter in functions.php for a custom "read more" message.

// Changing excerpt more
function new_excerpt_more($post) {
    return ' <a class="read_more" href="'. get_permalink($post->ID) . '">' . 'read more' . '</a>';
}
add_filter('excerpt_more', 'new_excerpt_more'); 

Here's the problem; I would like to call the_excerpt inside posts as well without any read more type of link being displayed while leaving the_exerpt being used in the actual excerpts unimpacted.

1 Answer 1

3

Just add the filter where you need it.

Define the filter callback in functions.php but don't add the filter...

// Changing excerpt more
function new_excerpt_more($post) {
    return ' <a class="read_more" href="'. get_permalink($post->ID) . '">' . 'read more' . '</a>';
}

In your template file just before you need the custom more link:

add_filter('excerpt_more', 'new_excerpt_more'); 

And remove it afterwards

remove_filter('excerpt_more', 'new_excerpt_more'); 

Or make it self-removing...

function new_excerpt_more($post) {
    remove_filter('excerpt_more', 'new_excerpt_more'); 
    return ' <a class="read_more" href="'. get_permalink($post->ID) . '">' . 'read more' . '</a>';
}
2
  • Thanks, this worked! Maybe this is a stupid question, but when I use this code in my single posts it is displaying [...] after the excerpt; how would I remove that or properly call in the single posts. I am using your suggested code in my archives for displaying actual excerpts and using the_excerpt in single posts to display the post's excerpt on the post's page. Commented Jun 24, 2013 at 19:51
  • That is really your code. I just re-organized it. Are you sure that this code is involved when you get the [...]?
    – s_ha_dum
    Commented Jun 24, 2013 at 20:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.