WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

On my blog on all my main loops I have it set to show the excerpt instead of the content

If I make a longer post and leave the excerpt text box empty, then wordpress will make it's own excerpt from my post and show the [...] or a custom link at the end. Thats great however if I DO enter my own excerpt into the excerpt textbox, it will show that text but it will not show the read more part added to it.

Does anyone know how I can make it always show a read more?

share|improve this question
up vote 3 down vote accepted

Perhaps a conditional statement like the following will work. The logic is: "If the post has an explicit excerpt, add a read more link. Otherwise, use default excerpt behavior."

if($post->post_excerpt) {
    echo '<a href="'.get_permalink().'">Read More</a>';
} else {

You can use this in combination with Gavin's suggestion to unify the appearance of the "Read More" link.

share|improve this answer
Hello, thanks that is pretty much what I was looking for (untested but looks good) thank you – JasonDavis Jan 5 '12 at 20:15
Perfect! Exactly what I needed. Thanks you! – Nick Jul 24 '15 at 4:52

I know that question was more than 2 years ago but I think here's more correct answer.

function new_excerpt_more($more) {
    global $post;
    return $more . '<a href="'. get_permalink( $post->ID ). '" class="readmore">more &raquo;</a>';
add_filter('the_excerpt', 'new_excerpt_more');

Even if your excerpt is filled the "readmore" link will be print after the excerpt paragraph.

share|improve this answer

Add this in your theme's functions.php:

function new_excerpt_more($more) {
       global $post;
    return '<a href="'. get_permalink($post->ID) . '">Read the Rest...</a>';
add_filter('excerpt_more', 'new_excerpt_more');

More info: Make the "read more" link to the post

Good luck!

share|improve this answer

I know it's three years late, but I found a better solution that it can even help me in the future:

First, clean the default excerpt more to remove the default ellipses [...]:

function clean_excerpt_more() {
    return '';

add_filter( 'excerpt_more', 'clean_excerpt_more' );

Then, we get the excerpt and add the link inline, into the same excerpt paragraph! (Most of the solutions above show the link out of the paragraph, in a new line).

function custom_the_excerpt( $excerpt ) {
    global $post;

    if( $post->post_excerpt ) {
        // If the post has manual excerpt,
        // it already has a point to end
        // the paragraph, so we don't want
        // the point + the ellipsis: ....
        // Clean it!
        $ellipsis = '';
    } else {
        $ellipsis = '...';

    // Save the link in a variable
    $link = $ellipsis . ' <a class="moretag" href="' . get_permalink( get_the_ID() ) . '">' . __( 'Read more &raquo;', 'starion' ) . '</a>';

    // Concatenate the link to the excerpt
    return $excerpt . $link;


add_filter( 'get_the_excerpt', 'custom_the_excerpt' );

Edit: A final note. You don't need to modify nothing else. Use the_excerpt(); normally to display the excerpt with the link.

Hope it helps to someone :)

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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