Plugin Directory

Test out the new Plugin Directory and let us know what you think.

Text Filter Suite

Advanced filtering functions for WordPress, including the Talk Like a Pirate Day filters.

Other notes

By default, if the "TFS Pirate" filter is active, it will automatically apply itself to all content on Talk Like a Pirate Day (September 19). If you do not want this filter to automatically activate, set the value of the "$talk_like_a_pirate" variable at the top of the plugin source to "false".

The "TFS Acronymit" filter is automatically applied to all posts whenever it is active. You do not need to set special post custom fields in order to use it. Just activate the plugin, and you're ready. To modify which acronyms are defined, see the list at the beginning of the plugin, and modify it as you like, following the format you see there.

It is possible to use the TFS core without activating any additional plugins. You can do this with any built-in PHP function accepts a single string as a parameter and returns a string. For example, you could set a post custom "content_filter" with the value "strrev", and the contents of the post would be displayed backwards, or with a value of "strtoupper" to convert the content to all uppercase text.

You can only specify a single function in each post custom field. However, you can chain multiple functions together by using the key more than once. For instance, if you wanted all comments for a post to display in uppercase Elmer Fudd text, you would set two post custom fields:

comment_filter = strtoupper comment_filter = fudd

HOWEVER, note that using PHP built-in functions in this way will bypass the power of the filter_cdata_content() function, which means that it can and will mangle your HTML tags, possibly rendering them useless. For example, applying the strrev function to the string "


p>" will transform it into ">p<", which will confuse your browser in new and wonderful ways.

NOTE: These filters can be very CPU intensive. For one thing, they make extensive use of regular expressions, which can be expensive on their own. And for another, they break your content into many small chunks, in order to separate the filterable text from the HTML code, and the filters run separately on each text chunk found. This probably won't be a problem in most cases. But if you have long posts being filtered, and you get a lot of traffic, it could start to add up. A caching plugin (e.g., WP Super Cache, or W3 Total Cache) would probably help in that case.

The Future

I will one day release a version 2.0 of this plugin which will be completely refactored. You can probably expect to see: * Consolidate the code so that it is not a collection of separately-enabled mini-plugins. * PHP5 OOP architecture to encapsulate everything. * An actual admin interface to select which filters are enabled, which bits of content you will allow to be filtered (post titles, post content, comments, blog title, widget titles, etc), whether to auto-activate the Pirate filter on Talk Like a Pirate Day, etc.

Eventually, there may also be a way to edit the string substitutions so that you can tailor it to your tastes.


I created TFS on my own, but I borrowed ideas from several sources. Here are some links you might also want to check out:

PhotoMatt's original Acronymit code:

Simon Willison and I traded some ideas when I started my original hack
for Talk Like a Pirate Day, in 2003:

I borrowed, modified, and mangled a ton of stuff from Adam Kalsey's
"MovableJive" plugin for Movable Type. See tfs-jive, tfs-chef, tfs-fudd,
and tfs-kraut.

If all you want to do is stuff like the acronym definitions (or similar
"turn this shorthand into a tag" substitions), then Michel Valdrighi's
"Tag, You're It" plugin is really a better solution:

The original inspiration that led to TFS was my desire to apply a
"pirate" filter on my blog for "Talk Like a Pirate Day", which is on
September 19 of each year:

Requires: 1.5 or higher
Compatible up to: 4.3.8
Last Updated: 2 years ago
Active Installs: Less than 10


4.5 out of 5 stars


Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.