Why functionality in themes is not always good.

So you’ve switched over to a theme that comes with built-in functionality for titles and meta descriptions. Instead of using HeadSpace2, All in one SEO or another SEO plugin, you’re now using the theme’s built-in SEO functions and input boxes for title’s and meta descriptions. It just seems more logical doesn’t it? Loading one plugin less and using the theme’s functionality. It feels like that’s how it should be. I mean, that should be faster, right?

Wrong. Why that’s wrong? Let’s say that, a year from now, you’re tired of this theme and want something else. It happens to all of us. So, you’re switching themes. Have you guessed the problem yet? Because that theme you started using the titles and descriptions of uses it’s own methods and locations for storing those titles and descriptions, when you switch to another theme, it won’t recognize the old stuff.

If you’re smart, you’ll notice. If you’re not, you’ll be in even deeper trouble, as someone I did a site review for recently found out. She’d written superb SEO titles and meta’s for her last 50 odd posts, and the hundreds of posts before that didn’t have them. Took us a while to figure out she’d switched themes…

If you’re a developer, changing a couple of post meta fields in the database might be reasonably easy, but for most people, it’s not. That’s why your theme should only contain functionality that alters the looks and the code of your site, not the content.

So there are no “SEO friendly themes”?

Does this mean a theme couldn’t be SEO friendly? No it doesn’t. A theme still determines a large part of what your heading structure looks like, whether it shows your content first and then your navigation or the other way around, whether your code is clean and tight or all messy etc. etc. etc. These are all very important aspects of on-page SEO, and I applaud every theme developer thinking about this and trying to learn about it.


There’s a reason why we’ve got plugins and themes. We want to separate content from design. If something has to deal with your content, stuff you’d want to be the same regardless of which theme you’re using, it has to be a plugin.

Update: Nathan has released his SEO Data Transporter plugin, which allows you to “transport” your data from one plugin to another, or from a theme to a plugin etc. This makes the technical fix easier, but still doesn’t take care of the fact that people switch themes and simply forget about things like these. So my stance remains that it is a bad idea to have this functionality in your theme.

Make Yoast SEO & Woo work together smoothly

  • Make your products stand out in Google
  • Get more buyers to your online store
  • Make products easier to find on your site
  • Have a cleaner XML sitemap & more
More info

35 Responses to Why functionality in themes is not always good.

  1. Greg
    Greg  • 8 years ago

    Seriously, it’s never a good idea to auto-generate descriptions. If you think you’ll do better leaving things like that up to Google, you should spend some time really learning how snippets work.

  2. Pekka Sahlsten
    Pekka Sahlsten  • 8 years ago

    Thanks Joost for pointing this issue out! I have sort of intuitively always used an SEO plugin over theme SEO options. This is because I use a variety of different themes and I hate to relearn things. Once I find something that works I keep using that. Until I find something definitely better. (Can’t wait for your super-SEO plugin ;)

    To me it would seem logical for WP core to include standard fields in each post/page for page title and meta description etc. in the same way there already is an editable field for the “pretty permalink”.

    Generating the meta description form post exceprt also like a great idea too – although I’m not sure if it’s really necessary. Blog posts are good for matching long tail queries and I suspect having the search engine generate the snippet on the fly could actually improve click-thru rates – because the search term would probably show up in the snippet and reinforce the perceived relevancy of the result.

  3. Swamykant
    Swamykant  • 8 years ago

    Yes you are right – “Theme should only contain functionality that alters the looks and the code of your site, not the content.”

    Nice post once again :)

  4. Karilee
    Karilee  • 8 years ago

    Keeping content separate from design makes sense. Thanks for another useful post, and pointing out Nathan’s plugin.

  5. Greg
    Greg  • 8 years ago

    Definitely has been one of the most irritating things about frameworks for me. I love the concept of frameworks, because it does make things much faster but a lot of the savings goes away when you have to constantly reconcile “new features” with your own custom solutions.

    Frameworks that defer to pre-installed plugins helps, but since our internal stuff isn’t released to the public, we end up having to pretend we’re AIOSEO (which turns my stomach) in order to have things run smoothly.

    I would love to see all framework developers spend more time on providing better options for choosing what bells & whistles you want to run, on a much more granular level so you can keep what you want and ditch what you don’t. But right now, everyone bundles everything into a single on or off “seo panel” of some kind, which means you can’t mix good features that you don’t have with your own custom features you want to keep in tact.

  6. RickA
    RickA  • 8 years ago

    It appears to me that the problem you describe is limited to single style themes. OTOH, if you’re using a theme “framework” such as Chris Pearson’s Thesis, the “theme” doesn’t need to be replaced when it’s time for a redesign. You only need to change the styling so all the extra functionality such as meta titles and description is not lost but remains in place.

    • Joost de Valk

      Rick, while that is indeed the thought, even frameworks switch, and you still don’t want your content to rely on any framework or theme or whatever other than your core CMS.

  7. Bob
    Bob  • 8 years ago

    “We want to separate content from design”

    That is a basic tenant of WordPress, but its been kicked to the curb by premium theme developers who need another angle with which to sell their themes. The primary reason I have a bias against some of these”frameworks” is because of their “need” to screw with my content. Just stick to the design please.

    The converter doesnt make it a non issue and I’m betting Joost will demonstrate why with the release of his SEO plugin.

  8. Victor Teixeira
    Victor Teixeira  • 8 years ago

    I don’t use any of those options.
    I just write my themes to automatic generate meta descriptions from excerpts and meta keywords from tags.

    That’s it.

    • Joost de Valk

      That’s not needed. You might just as well leave the keywords out, and if you’re not going to write meta descriptions per page uniquely, auto generating them is nonsense…

      • Victor Teixeira
        Victor Teixeira  • 8 years ago

        I understand your point about keywords, actually I don’t really matter about keywords.
        But generating meta descriptions from excerpts I think is a good deal because I can write my own unique excerpt on the excerpt field instead of auto generating it from my post content, and that’s what I’m talking about (auto generating from the post content would really be a nonsense).
        So I can write a quick resume or description of my post on the excerpt field without the need of any plugin.
        And that’s what meta descriptions are meant to be: a description or resume of your page – and so does the excerpt.
        At list on my point of view you don’t need to write it twice.

  9. Corri
    Corri  • 8 years ago

    Is there any issue with a conflict between the theme seo functions and the plugin seo functions when you got two things doing the same thing?

  10. Gary Anderson
    Gary Anderson  • 8 years ago

    I’ve always used the All in one SEO plugin (of course, keep in mind… I’m just an advanced newbie).

    I’m surprised that no one has come out with anything that is nearly as good … for free that is. I’ve been looking at seopressor. It looks pretty good but then again it costs quite a bit.

    Thanks for the info Yoast! :)

    Gary Anderson
    aka- @GanderCo

    • jan
      jan  • 8 years ago

      I guess you will have to wait a bit longer, as Yoast is preparing something that will “rock your boat”… the Yoast WordPress SEO plugin. (keep an eye on his tweets… there are hints every now and then.)

      Is this post a hidden introduction, Joost? ;)

      • Joost de Valk

        Hehe no this one is not :)

      • Gary Anderson
        Gary Anderson  • 8 years ago

        Thanks for the heads-up Jan!! I think I follow Yoast on Twitter but I’ll check to make sure, and if I’m not… I will be in a few minutes ;)

        Gary Anderson
        aka- @GanderCo (on Twitter)

  11. TrafficColeman
    TrafficColeman  • 8 years ago

    Great stuff my man, I’m glad I been using the all in one seo plugin. I never thought you could be
    big trouble if one day you decide to switch themes.

    “TrafficColeman “Signing Off”

  12. Max
    Max  • 8 years ago

    Personally, built-in SEO options in themes and theme frameworks bug the hell out of me. Why not to come up with your own tables for posts/pages and process them in your own unique way that’s applicable only to the current theme or theme framework? I totally agree with Yoast – this is why we have plugins and themes separately. If you want to include your own SEO functionality into a theme – make it optional.

  13. Tom Altman
    Tom Altman  • 8 years ago

    I couldn’t agree more Yoast.

    I also think we need to look at WordPress “core” like that too. Allow people to use plugins to make the platform be what want…

  14. Scott
    Scott  • 8 years ago

    I’ve seen quite a few blogs have too many plugins running which negatively impact performance.

    If something has to deal with your content, stuff you’d want to be the same regardless of which theme you’re using, it has to be a plugin.

    Theoretically though, doesn’t a well-designed and well-coded theme with built-in functionality out perform a wp install, theme with plugins?

    So, there trade-off then is wordpress content portability to wordpress speed.

    Same thing with your google analytics plugin, I love it. I recommend it to everyone, but wouldn’t a theme built to include analytics out perform your plugin?

    • Andreas Nurbo
      Andreas Nurbo  • 8 years ago

      The statement “having too many” already identifies what the problem is.
      There shouldn’t be to much of a performance issue with having many plugins if the plugins are written correctly. Then there is the issue with the word performance in this context. Is it that the page loads slow, memory consumption etc.

      Same thing with your google analytics plugin, I love it. I recommend it to everyone, but wouldn’t a theme built to include analytics out perform your plugin?

      It depends on the nbr of options in the theme. If its just including the Analytics Id, the whole js function etc. If there is configuration of GA it should be in a plugin.

  15. Gary
    Gary  • 8 years ago

    Is there a reason, that someone couldn’t take charge, and organise with all the current advanced themes and SEO plugins, so come up with a standard way of storing the key data (say, custom title, and meta description, perhaps some robots choices), that they all went along with? That way, the data could be used by all of them without needing to switch.

    Better still, could these be added and stored natively by WP itself? If WP is helping to store the content of a post or page, it makes sense it should be natively storing the related meta content for that some post or page as well.

  16. Danny van Kooten
    Danny van Kooten  • 8 years ago

    Good point. Usually, when doing client work I just provide my themes with either All in One SEO Pack or Headspace2, and this is why! Curious to see what Nathan has been working on though.

    @Gilbert, if you can get that done, big thumbs up to you! Might be a little too optimistic ;-)

  17. Gilbert
    Gilbert  • 8 years ago

    Ok point taken ;) Another possible answer would be to create a set of standard custom fields/options that all themes used to fill the content of meta tags. But I realise this would be impossible unless implemented by WordPress themselves.

    • Nathan Rice
      Nathan Rice  • 8 years ago

      I sent out emails to all the authors of the supported plugins/themes for my portability plugin. I got responses from 3 of them saying they’d take a look. None of the 3 have gotten back to me.

      1 Person (from Frugal) did demonstrate a desire to cooperate, which is nice.

      I say that to say this: I don’t think you’ll see a lot of cooperation going on in the theme world. It would be nice, but I wouldn’t count on it.

  18. Nathan Rice
    Nathan Rice  • 8 years ago

    The plugin we’re building at StudioPress should make this a non-issue. Here’s a teaser:

    Should be released sometime today (Aug 25).

    • Gary
      Gary  • 8 years ago

      The problem with this, is that it puts the onus on you to maintain the plugin.
      If an existing plugin changes how it works, or if a new plugin comes on the scene that is deemed supportable then that’s more work for you. Don’t get me wrong – it’s going to be a useful plugin for users, but it’s approaching the problem in the wrong way.

      Assuming no core WP initiative on this problem is forthcoming, then if all the plugin and theme authors could agree on storing and accessing the data from the same point, then users would be free to swap to whatever plugin or theme they wanted to use. They won’t be limited to just those that Nathan’s plugin happens to support.

      I understand that some plugins/themes may see their unique way of storing the data as some sort of tie-in, but at the same time, they are also limiting themselves from users of all of the other plugins/themes who may want to swap to them.

      These themes/plugins shouldn’t be about how they store the data – they should be competing on the actual functionality they offer. A more open market leads to better competition, meaning a better result for the end user.

      • Rawist
        Rawist  • 8 years ago

        Here here. Thank you. Standardization is the answer. Truth be told, meta title, description, etc are content. I disagree with Yoast because *WordPress* should be handling this in a standardized way. Then plugins affect how you interact with this data.

    • Joost de Valk

      As said on IM: this helps fix it, but it doesn’t help the large group of people who forget about this stuff entirely. I still think this is a design mistake :)

  19. Mayur Somani (AgentWP)
    Mayur Somani (AgentWP)  • 8 years ago

    Nathan Rice is developing a plugin to resolve this issue. You can check the snapshot here, http://twitpic.com/2hu4m3. Coincidence that it resolves the theme switching problem completely.

    • Jared
      Jared  • 8 years ago

      Nathan is a badass like that :P

Check out our must read articles about WordPress