Write a simple WP plugin to add the trademark symbol (™) to your mark

You have a trademark you need to mark on your WordPress site, but you don’t want to search through the site to find each occurrence and update each post?  I have developed a plugin for you that will ™ or ® your content on the fly.  But if you are the do-it-yourselfer type, then here’s a way to make a simple plugin to filter every instance of your trademark in posts, pages, and titles.

It is assumed that the reader has a basic working knowledge of PHP as I am not going to go into explaining the particulars of the PHP constructs.  While you could just copy and paste, it will be easier if you know the basics.

Filter the Content

The first function will go through the_content and replace every instance of your trademark with your trademark(tm).  We will call this tm_the_content.  WP stores the content of a post or a page in the variable $content, which we will pass to the function.

function tm_the_content( $content )
{
   ... we'll add code here later ...
}

We will use str_replace to find the instances of Our-Trademark (replacing “Our-Trademark” with the actual trademark text you are working with) in $content and replaced it with Our-Trademark(tm).  Note, I am using &#0153 for the trademark symbol, but you could put in place <sup> superscript or <div> and CSS, or what suits your fancy.  I like keeping it simple, though.  (Note: you can also replace &#0153 with &#174; to get the registered trademark symbol (r) ).

$content = str_replace("Our-Trademark", "Our-Trademark™", $content);

Now $content has all instances of Our-Trademark replaced with our trademark(tm), but we need to send back the filtered content:

return $content;

Functions and Filters:

function tm_the_content($content)
{
  $content = str_replace("Our-Trademark", "Our-Trademark&#0153", $content);
  return $content;
}

WordPress stores the title of a post or a page in the variable $title.  Filtering $title is exactly the same as filtering $content, so we can build our function tm_the_title by essentially copying tm_the_content and changing $content to $title:

function tm_the_title($title)
{
  $title = str_replace("Our-Trademark", "Our-Trademark&#0153", $title);
  return $title;
}

And you thought this was going to be hard.  ;-)

Now we need to fire these functions at the appropriate time.  As I mentioned earlier, in WordPress, we do this by using add_filter.

In case you were unaware, WordPress has a built-in function called add_filter() that will fire a function to filter your content.  We will use two instances of add_filter() to filter both the_content, the function that gets the $content of a post or a page, and the_title, the function that gets, you guessed it, the $title.

When you use add_filter(), you need to send the function two things, what you are filtering, and the function to use to do the filtering:

add_filter( $tag, $function_to_add, $priority, $accepted_args );

The last two parameters are optional, and in this case, we will only be using the first two.  We will use this twice in our plugin to fire each of our functions:

add_filter('the_content', 'tm_the_content');
add_filter('the_title', 'tm_the_title');

Put it all together:

<?php
add_filter('the_content', 'tm_the_content');
function tm_the_content($content)
{
  $content = str_replace("Our-Trademark", "Our-Trademark&#0153", $content);
  return $content;
}

add_filter('the_title', 'tm_the_title');
function tm_the_title($title)
{
  $title = str_replace("Our-Trademark", "Our-Trademark&#0153", $title);
  return $title;
}
?>

Here is a sample of the code.

Well that’s it.  I hope that you will find this snippet of code useful.

Comments

  1. Christopher "Domian Transfer" Hofman says

    Interesting post!

    It´s funny how domains are not seen as trademarks, but when there is a
    domain dispute, it´s ALWAYS about a trademark infringement.
    I know, domains are not trademarks, however it´s time that trademark lawyers take them seriously, and include them in their brand protection recommendations.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>