Please help support the continued development of AZIndex, particularly if you are using the plugin in your work or as part of a for-profit website. All contributions, no matter what size, will be gratefully received.

Tweaking Themes the Plugin Way

How many WordPress users install a brand new theme for their blog and never feel the need to tweak it in some way?  Not many, I’d wager.  While there are many great themes out there, there’s almost always something that’s not quite right for your blog.  Perhaps the blog title is too big, or something in the sidebar doesn’t look quite the way you want it to.

And so it’s off into the theme files you go—fumbling around with functions.php, header.php, and style.css, until you get it the exactly the way you want your blog to look.  I should know, I’ve never met a theme I didn’t want to tweak in, oh so many ways. (That doesn’t make me a person, does it?)

Anyway, there’s usually no real harm in tweaking a few theme files now and again, until you find out that there is a new version of the theme, with even more bells and whistles that you are just dying to try out.

Fine.  Just a quick download and… uh oh… you just overwrote all that painstaking work you did to get the previous version looking just right.  Even if you did remember to back everything up the first time, there’s still a good chance that you’ve forgotten where you put all the little modifications and tweaks you made.  I know of what I speak!

So, is there a better way?  Of course there is, otherwise what would be the point of this article?  For many of the theme tweaks you want to make, you can use a plugin instead of attacking the theme files.

“A plugin?” I hear you gasp.  “But aren’t they all hundreds of lines of code written by those geeky programmers?”  Well, yes they are, for the most part, but there’s no reason why a plugin can’t contain just a few lines of code to do something really useful.  In fact, I’m about to show you a plugin you can use with any theme that’s only six lines long (excluding all those comments that clutter up the place).

Consider how many times you want to add some more CSS styles to your theme’s main stylesheet (style.css) or maybe tweak the values that are already in there.  Unless you are extremely conscientious about comments, you will soon forget which values you added or changed.  It would be much better if you could consolidate all your changes in another CSS file (e.g. my-style.css) that you know will never be overwritten.  You can certainly do this by modifying the header template of your theme and including a <styles> tag, but even that modification should not be necessary.  You can use a plugin instead.

And here’s the code:

add_action('wp_head', 'my_add_headers');

function my_add_headers() {
   if (file_exists(get_stylesheet_directory().'/my-style.css')) {
      echo '<link rel="stylesheet"href="'.get_stylesheet_directory_uri()
           .'/my-style.css" type="text/css" />';
   }
}

That’s all there is to it.  The function my_add_headers() checks to see if there is a my-style.css file in the current theme’s folder, and if there is one, adds a link to it into the HTML header section of your blog page.  So the code works fine whether or not you decide to create your own stylesheet file.

The magic to make this happen is in the first line.  The add_action() function call “hooks into” WordPress just after it has generated all the HTML headers your blog needs for displaying a page.  (WordPress has dozens of  these “action” and “filter” hooks that can be used to inject your own code and HTML into a blog page.)

The one we are using here is the wp_head action which, as the name suggests, is invoked just before the </head> end tag is added to the HTML going to the browser.  This is an excellent place to hook in your own stylesheet file without having to change any existing theme files at all.

The great thing is that this will work for any theme you use.  Anytime you switch to a different theme, all you have to do is create another my-style.css file in that theme’s directory (or copy an old one over) and you’re done. No more messing about with theme files.

Now all that’s left to do now is to bundle this code up into a plugin, so that WordPress will recognize it properly.  That’s pretty easy too.  Just add the following comment lines to the top of the file:

/*
    Plugin Name: My Tweaks
    Plugin URI: none
    Description: Customize the theme without modifying any template files
    Version: 1.0
    Author: Your name here
    Author URI: Your home page URL here
*/

All you really need here is the Plugin Name: line, but the rest of the information will show up on the Manage Plugins page, so it’s useful to put something in there so you remember what it is when you look at it in several months’ time.

Finally, because this is PHP code, you need to add the <?php and ?> tags around the whole thing, so the complete file looks like this:

<?php
/*
    Plugin Name: My Theme Tweaks
    Plugin URI: none
    Description: Customize the theme without modifying any template files
    Version: 1.0
    Author: Your name here
    Author URI: Your home page URL here
*/

add_action('wp_head', 'my_add_headers');

function my_add_headers() {
   if (file_exists(get_stylesheet_directory().'/my-style.css')) {
      echo '<link rel="stylesheet"href="'.get_stylesheet_directory_uri()
           .'/my-style.css" type="text/css" />';
   }
}
?>

Create an new file called something like my-tweaks.php and place it in a directory with a name like my-tweaks (imaginative, or what?).  Then add the file and directory into a zip file, and you’re ready to install it.  Go to Plugins » Add New in your blog’s administration pages and upload the zip file to your blog by clicking the Install Now button.

Your plugin will install in a few seconds, and at the next screen just click the Activate Plugin link to finish the process.  You will be taken to the main plugin page where you will see your new plugin taking pride of place amongst all the other plugins you installed.

If you’re worried about the process of making your own zip file, here is one I prepared earlier:

zipfile

Simply download this to your computer and install it using the instructions above. If you want, you can edit the information in the plugin comment by clicking the Edit link next to your plugin in the list of installed plugins once it is running on your blog. (Be careful not to change anything outside the comment lines unless you know what you’re doing.)

Now you can start adding all those new CSS styles into your my-style.css file and they will immediately be picked up by your blog.  Remember, because your stylesheet file is added after the main style.css file in the page header, you can also override the default theme CSS values with your own.  (You may have to use the !important tag for to override them successfully in some cases, but you should only use that when you really have to.)

Stay tuned for some more interesting things you can do with your new tweaks plugin.

287 comments to Tweaking Themes the Plugin Way

  • I have to express my appreciation to you just for rescuing me from this incident. Because of looking out through the search engines and seeing ways that were not beneficial, I believed my life was gone. Living minus the approaches to the difficulties you have fixed through this write-up is a critical case, and the kind that would have negatively affected my career if I had not noticed your website. Your capability and kindness in maneuvering every item was helpful. I don’t know what I would’ve done if I had not discovered such a subject like this. I can also at this time look forward to my future. Thanks for your time so much for this high quality and amazing help. I will not be reluctant to recommend the blog to any individual who should get direction on this topic.

  • Merely wanna comment on few general things, The website design is perfect, the content material is rattling wonderful. “Good judgment comes from experience, and experience comes from bad judgment.” by Barry LePatner.

  • You are my inspiration , I own few web logs and rarely run out from to brand.

  • Extraordinary guide via you. I’ve take note your concepts prior to and you are just too wonderful. I certainly enjoy what you have received right here, really like what you are stating and the way in which you are saying it. You are making it entertaining and you continue to take care of to keep it smart. I can not wait to learn much more from you. That is really a terrific website.

  • cheers for the actual write-up i’ve recently been on the lookout with regard to this kind of advice on the net for sum time correct now so a lot of thanks

  • Magnificent beat ! I wish to apprentice while you amend your web site, how could i subscribe for a blog website? The account helped me a acceptable deal. I had been a little bit acquainted of this your broadcast provided bright clear concept

  • I merely intend to notify you that I am new to putting up a blog and very much enjoyed your page. Very likely I am most likely to store your blog post . You absolutely have excellent article materials. Delight In it for sharing with us your own blog write-up

  • Very great write-up. I just came upon your weblog and wished to mention that I have truly loved surfing around your blog posts. After all I’ll be opt-in on your rss feed and also I hope you compose again very soon!

  • You made certain nice points there. I did a search on the matter and found mainly persons will agree with your blog.

  • Immigration Lawyers… […]here are some links to websites that we link to because we feel they are worth visiting[…]…

  • Thanks for sharing superb informations. Your web site is very cool. I’m impressed by the details that you¡¦ve on this web site. It reveals how nicely you understand this subject. Bookmarked this web page, will come back for more articles. You, my pal, ROCK! I found just the information I already searched everywhere and just couldn’t come across. What a great web site.

  • Hi there, I do think your web site might be having browser compatibility problems. Whenever I look at your website in Safari, it looks fine however, if opening in IE, it’s got some overlapping issues. I merely wanted to give you a quick heads up! Other than that, great blog!

  • Thank you a lot for sharing this with all people you really recognize what you are speaking about! Bookmarked. Please also seek advice from my website =). We may have a hyperlink change contract among us!

  • I am glad to be one of the visitants on this excellent internet site (:, thanks for putting up.

  • I delight in, cause I found just what I was looking for. You’ve ended my 4 day lengthy hunt! God Bless you man. Have a great day. Bye

  • Amazingly interesting point of view, thanks for blogging.. Isn’t it terrific any time you come across a good submit? I appreciate you discussing your perspective.. Truly appreciate the entry you provided..

  • An intriguing discussion is worth comment. I’m confident that you simply write regarding this subject, could possibly not be considered a taboo topic but typically persons are too small to communicate on such topics. To one more. Cheers

  • A carpet cleaners you are looking to employ really should have state-of-the-art tools. A fantastic organization may at least have a process of cleansing that includes 6 measures. The particular steps ought to include cleaning the rug, pre-treatment, pre-grooming, cleaning, post-spot washing and a velocity blow drying course of action. Any less than that, it is possible to question the grade of work.

  • 植髮的中心概念已經是毛囊單位移植,並演進成不同的手術方式,讓植髮手術在進行時能輕鬆自在;例如,通過衛生署核可的FUE微創植髮技術,就能將疤痕飛梭化成點狀,讓頭皮的傷口縮小化,降低患者的疼痛感,並加快傷口癒合度。

  • Hey there, You’ve done an incredible job. I will definitely digg it and personally suggest to my friends. I’m confident they’ll be benefited from this web site.

Leave a Reply to Samuel L. Cancel reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>