37 responses to “How to filter a WordPress theme’s ‘more link’ text”

  1. The Frosty @WPCult

    Totally simple! Love it!

  2. Aaron

    Between your and Ian’s wonderful code tutorials, I might actually finish (and release) a proper child theme for Thematic.

    Thanks Justin!

  3. Upper Fort Stewart | Daily Digest for July 3rd

    [...] Theme authors: No need for custom more link filter hooks. Use WP’s filter hook instead: http://justintadlock.com/?p=1737 [#] — 3:25am via [...]

  4. links for 2009-07-02 « Twan van Elk

    [...] How to filter a WordPress theme’s ‘more link’ text (tags: WordPress more link themes functions.php) [...]

  5. Replacing the “read more” link on your WordPress blog

    [...] goes to Justin Tadlock for this great recipe! If you enjoyed this article, please consider sharing it! [...]

  6. Webwinkel

    @ Justin, the script above, using the_content_more_link filter hook, just works for WP 2.8 ?

  7. David Zemens

    Thanks for the tip. Also remember that you can style your more-link text using the CSS class:

    .more-link {
    }
  8. Ed

    Justin, is it possible to have an image for this custom more link?
    And apply it to specific categories as well?

  9. David Zemens

    I don’t want to hijack any answer Justin might give, but you can have a background image attached to the .more-link CSS class and can easily apply a single image to the more link.

  10. David Zemens

    @Ed,
    As a followup, I used this PHP code to add a class to the container that the more link is in. By doing so you should be able to apply additional CSS markup to add a different background image based on the category ID number.

    cat_ID;	?>

    I think.

  11. David Zemens

    Sorry, the PHP code was stripped out of the post above. Let’s try it again:

    cat_ID;	? >
  12. Ed

    No problem at all David! :)

    So how would that alter the above code snippet Justin posted in his post as a whole?

    Like this?

    I don’t know exactly how to apply your suggestion to the code.

  13. Ed

    Ah crap, same thing happens to me now.

    Let me give it another shot:

  14. Ed

    Okay this is not going to work for me, I can’t post the code in a comment.

  15. David Zemens
    $category = get_the_category(); echo $category[0]->cat_ID;

    I placed this code (contained withing the appropriate PHP tags) inside the container tag that the more-link was contained within. By doing this a unique container class can be generated depending on the category of the post.

    For instance, in my case it generated as such:

    as the 33 is the category ID of the category assigned to the post.

    Then, I suppose, you could use CSS to customize this class and serve up a different image for the more-link depending on the class.

    Make sense?

  16. David Zemens

    @Ed

    http://www.1955design.com/_powerlink/

    At the example URl above, I have styled the “Read the full article” link just as I described above. The .more-link class can be styled as desired, and the PHP code that gets the current category can be used to specifically style a CSS container. The red bordered link is styled in such a way that only items in category 3 received the red border. In this same manner you could apply a background image to the link that would be different for each of your categories. I hope this helps.

  17. Ed

    Hi David,

    Hmm, I’m still not sure how I need to use that line in combination with Justin’s code?

    Should I just add it under the second line?

    I’ve got the snippet here: http://snipt.net/Edwin/custom-more-link

  18. David Zemens

    @Ed,
    That code needs to be hard coded into your index.php file, etc. so that it applies the unique class to the division that the more-link is located in. Make sense?

  19. Ed

    @David,

    So I could basically add that line (Within the appropriate php tags) after the the_content template tag?

  20. David Zemens

    Not really. It needs to be added to the CSS markup that controls the container that the more-link is located in. Are you familiar with CSS?

  21. Ed

    @David,

    Okay, now you’re confusing me. :)
    The code line you posted surely can’t be posted in a CSS stylesheet?

    $category = get_the_category(); echo $category[0]->cat_ID;

    @Justin,

    Thanks for posting the code for the background image, I’ll check it out.

  22. Theme Playground | Community Link Roundup: Everything’s for sale

    [...] How To Filter The Read More Link [...]

  23. Jauhari

    My Question is..

    add_filter( 'the_content_more_link', 'my_more_link', 10, 2 );

    What for the 10 and 2 number above?

  24. Shibi Kannan

    Very nice discussion going on here, I would like to see more creative uses for the custom more link – any ideas !

  25. Keith Purkiss (Alex Jeffreys Student)

    Hi Justin,

    I’m finding a lot of useful stuff here.

    My homepage was getting a bit full so I’ve just edited a few posts and put in the
    tag to tidy it up a bit. I know there’s plugins that do something similar but this is so simple and you can choose where to put the tag to intrigue people – a bit like having a headline that makes them want to read more.
    Now I have a whole compact list a partial posts and I think it will get me more readers.

    Haven’t got as far as the advanced stuff yet ;)

  26. Simon Wilby

    I am using this one but not able to edit its style, like I want it to display in bold and underline.

    Can I change that on the stylesheet or in the functions.php itself.

  27. David Zemens

    @Simon;

    You should be able to add this class to your style.css file and style it accordingly:
    .more-link {
    }

  28. kaos murah

    My homepage was getting a bit full …yeah. but no problem

  29. Tiago

    Perfect! Just what I was looking for. Was able to hook it up on Thematic without any issues. Out of curiosity: what are the 10 and 2 numbers refering to?
    Thanks!

  30. neel

    Nice trick. i want to ask you can we apply filters in sidebar widgets. I want to change all links in sidebar and want to add affiliate id in front of all the links. can i do this using the filter . please let me know

  31. Jaxov
  32. Cool Things You can do with the WordPress “more” Tag | Digging into WordPress

    [...] That goes into your theme’s functions.php file. Simply edit the “Keep reading this post” string to whatever you would like to use for your custom more text. This is a good way to change your theme’s more text without modifying any theme template files — perfect for customization via child themes! Check out Justin Tadlock’s article for more information. [...]

  33. Maxwell

    I’m starting to use more links too.
    But what if you have a nice beautiful image (say 640 X 480px) in your post and you still want that image (resized of course!) to be part of the entry so that you post isn’t just all text. For exaple, look at how Purse Blog (http://www.PurseBlog.com ) has nice small intros with a “Continue Reading” button, but the glamourous fashion product image is still part of the shortened post. How do I do that??

    I know some professional themes do that right off the bat. But is there a way to tell WordPress that you want the image in your post to also be part of the shortened entry?

    Thanks for the tips!

  34. Alan

    Thanks very much! In particular, here’s how to append a right arrow to each cut, regardless of whether you’re using the default cut text or not:

    <?php
    add_filter('the_content_more_link', 'my_more_link', 10, 2);
    function my_more_link($more_link, $more_link_text) {
            return str_replace("", " →", $more_link);
    }
    ?>
    1. Alan

      Oh, darn. that was supposed to be str_replace("</a>", " &rarr;</a>", $more_link)

  35. Rehberi

    Thanks for the tip! I am gonna try it right now!

Leave a Reply

By submitting a comment here you grant this site a perpetual license to reproduce your words and name/Web site in attribution.

Please use your real name or a pseudonym (i.e., pen name, alias, nom de plume) when commenting. If you add your site name, company name, or something completely random, I'll likely change it to whatever I want.