[wp-hackers] filter the_content without affecting the_excerpt

Dougal Campbell dougal at gunters.org
Wed Jul 20 00:24:05 UTC 2011

On Jul 19 2011 6:10 PM, Philip Walton wrote:
> So, I've spent some time digging through the source, and it appears 
> the wp_trim_excerpt() function applies 'the_content' filters to the 
> excerpt by default. And it looks like there's no getting around it.
> Can someone please explain the rational behind not differentiating the 
> two? Why should I be forced to apply my content filters to my excerpts 
> as well?
> On 7/19/11 12:38 PM, Philip Walton wrote:
>> In my theme I'm adding a filter to "the_content" to insert social 
>> sharing buttons at the beginning of each post, but then when I call 
>> the_excert() the text of those buttons is showing up.
>> I know I can just write another filter on "get_the_excerpt" to remove 
>> them, but that just seems wrong.
>> Is there a way to filter the_content without affecting the_excerpt?

Depending on your desired outcome, how about adding your own filters at 
a different priority? You can add a filter that runs at an earlier 
priority, and use that to remove the default filter.

   add_filter('get_the_excerpt', 'cancel_trim_excerpt', 5); // run at 
priority 5 instead of 10
   function cancel_trim_excerpt($content) {
     remove_filter('get_the_excerpt', 'wp_trim_excerpt');
     return $content;

In your case, I think you said you're prepending share links, and the 
HTML is getting stripped from the excerpt, leaving you with bare text 
that has no purpose? How about:

   add_filter('get_the_excerpt', 'no_share_links', 5);

   function no_share_links( $content ) {
     remove_filter('the_content', 'add_my_share_links');
     return $content;

   // fancy-schmancy: add the share links to the excerpt anyways:
   add_filter('the_excerpt', 'add_my_share_links', 20); // run after all 
the other filters

Is that what you're trying to do?

Dougal Campbell <dougal at gunters.org>

More information about the wp-hackers mailing list