CSS-Tricks is a Poster Child WordPress Site

Howdy! Like a lot of you, I run a website. It’s hosted right here on Media Temple. A whole bunch of years ago, I chose WordPress to run it on, and I’m sure glad I did. These days, it takes advantage of a huge array of WordPress features to handle all the things I need the site to do.

Let’s walk through a bunch of those features. By the end of it maybe you’ll agree: CSS-Tricks is a poster child for WordPress.

First and foremost, WordPress is a blog. Many WordPress advocates spend a lot of time convincing the world that WordPress isn’t just a blog, which I agree with, but it still ships with features that are particularly well-suited toward blogging.


I use WordPress to blog nearly every day. I even do most of my writing directly in the browser, since it does such a good job of saving work even when I forget to or go offline.

Which are categories and tags.

This gives me useful URL’s like all posts that are interviews or all posts that have something to do with SVG.

And if I needed my own distinct taxonomies, I could do it.

I embrace the comments on CSS-Tricks. I’ve set the tone over the years to encourage thoughtful and helpful discussions and critique. Anything else is removed.


Bonus information like this is a regular occurrence on CSS-Tricks. A modern day miracle. I keep the threading level at 2 (a comment and replies) to keep the conversations understandable (uckcgkh, infinite nesting drives me nuts.)

Jetpack (an official plugin) makes it easy to support Markdown, which I highly recommend. For legacy reasons, I actually don’t blog in Markdown on CSS-Tricks, but do on every other WordPress site I work with. I do, however, support Markdown in the comments and in the forums.

css tricks 5

Speaking of forums…

bbPress! It’s a plugin that enables powerful, feature-rich forums. I started a forum on CSS-Tricks many years ago to help solve the problem that I got too much email asking for help with web design problems, and I wanted to let people help each other so that more of it could happen. Not to mention do it publicly, which is good for lots of reasons: community, searchability/findability, traffic, etc.

3 copy

I’m not the only person who manages CSS-Tricks. There is a whole team, and even that isn’t everyone with access. The default WordPress permission levels serve us well:

  • Administrators, like me, who are all-powerful and can do anything on the site.
  • Contributors who can write (and edit) new content, but not publish it directly or see/edit anybody else’s content.
  • Authors who are like contributors but can control publication.
  • Editors who can write, edit, and publish any content on the site.

There are also forums-specific roles that allow me to grant forums users moderation abilities. We even have a custom role (via plugin) we use to designate a user as “Staff” with capabilities to match.

Part of the business of CSS-Tricks is offering membership to the site, what we call The Lodge. It’s things like video tutorials that only members can see. That means having published content that is locked down so that only active members can see it.

This is the kind of thing a plugin is perfect for. We use Restrict Content Pro. It allows me to use simple logic like:

<?php if (rcp_is_active()) { ?>
  Show content for members.
<?php } else { ?>
  Show content for non-members/
<?php } ?>

css tricks 6

I can use that logic in the templates I build for the various content around the site. Speaking of which…

For example, I use plenty of the traditional “CMS” abilities of WordPress as well. The most common example is a “static” page, like an about page. Pages like that don’t need to have a comment thread. They don’t need to go out over RSS. They might even be styled differently or have different layout. That’s no problem. Whenever I need a specially designed page, I just make a template like <code>page-about.php</code> and let WordPress know it’s a special page template through code comments:

Template Name: Special Cool Page Template 

That template then becomes available to any “page” from a drop-down selection.

css tricks 7

I use that feature regularly. For example, all videos on the site have a special layout that puts the video large and in charge at the top of the page.

css-tricks 4

RSS. I love it. I know it had a hard time being adopted by more than the techy crowd. But hey, the CSS-Tricks crowd is a techy crowd, and I know (I’ve done polling) that a ton of people read the site that over RSS. That’s fine with me! I don’t have to do much work at all to get an RSS feed out of WordPress.

That feed is sort of like a read-only API. It’s syndication. It makes a lot of stuff possible. Not just reading through a feed reader, but, just as one example, the weekly newsletter that goes out through MailChimp is generated from that RSS feed.

I do make heavy use of “posts” and “pages”, but I also use some completely custom post types. One of which is “shifts”. At the moment, we’re experimenting with a perk of being a Lodge member called Office Hours. Staff members hold live themed Q&A sessions at certain days/times.

I created a custom post type for the “shifts”, and then customized the input screen with Advanced Custom Fields. Now we have a way to collect exactly the content we need for this specific feature.


This is a tremendously useful feature of WordPress, allowing it to be adapted to any sort of CMS need.

I use WooCommerce (also an official plugin) to sell physical products from the site.


Like The Lodge, I need to collect payment information, but since these products need to be shipped, it’s a more complex checkout flow that handles collecting addresses, calculating shipping, saving payment information, and things like that.

Even though I use so many of the default WordPress features, I certainly customize things to my liking as well. For example:

  • I customize the markup that the Media Uploader outputs when I add an image to a blog post.
  • I customize the markup that is output for comment threads.
  • I customize the RSS feed to link directly to the article I’m talking about when the blog post is in the “Link” category.

That’s just a few of the dozens of little customizations I do, without manipulating WordPress itself. I use my own functionality plugin, not to mention a good couple dozen other plugins.

I’m particularly fond of static site generators like Jekyll and Middleman. The fact that there is no live database or server side languages doing stuff live feels is a really clever way to handle things. Less moving parts! Fast! Secure! Inherently backed up!

I’d reach for those CMSs in a second for certain projects. Something like a personal site is a great use case for that. Or any site where “No.” is the answer to “Do I clearly need a log in system for myself and/or users?” Since my answer is “Yes.” I’ll need to stay.

I’ve never written anything about any CMS without people extolling the virtues of their favorite CMS in response. Wonderful, I say! Let’s hear about your considerations in the comments.


  • Hey, you should blur out your user IDs. WordPress is great, but with a large site like yours I’m sure people may target it and the less they know the better IMO.

    • chriscoyier

      I’m not toooo worried about it (if those are useful to anybody, we’re already in trouble). But yeah, good plan, we’ll get those blurred just to be classy 😉

  • What a great write-up! So cool to see the backend of your site Chris, and get your perspective on how WordPress is helping you rock your site. CSS-Tricks is an invaluable resource that I’ve personally learned TONS from over the years. Thankful for all you do, keep it up!

    • I’m glad you enjoyed this, Matt. We’re lucky to have such fantastic articles on this site 😉 ^AR

  • Chris both you and your website is awesome. Thanks for this write up, I have been following your updates for more than 10 years now. CSS-Tricks definitely is an exemplary implementation of WordPress and its features.

  • Luke Pettway

    Hey my face is in here!

  • Would love to hear what you think of flat-file CMSes (e.g. Grav or Statamic). They seem to strike a decent balance between the usability of WordPress and the speed/security of static site generators.

    • chriscoyier

      Most of my experience is in Jekyll, which I love.

      That’s kind of the point of this post though… Can you have forums on Jekyll? Not really. Do you get a login system for Jekyll, where I can control user permission levels? No. Do I own my own comment threads on Jekyll? No, the suggest stuff like Disqus. There’s a million reasons why CSS-Tricks specifically is a WordPress site.

      But if a static site generator meets your needs entirely, I’d also say it’s a better choice than WordPress (largely because of the speed and ultimate safety).

  • zomars

    I switched from WordPress to Bolt.cm 2 years ago and never looked back. You should give it a try it’s pretty neat and has a great community!

  • chriscoyier


    For those out there, Jason has helped me a ton with little issues on CSS-Tricks, and Markdown has certainly been one of them.

    I’d stick to “easily” if you just wanna activate it through Jetpack and blog in it and offer it for comments. Less easily if you wanna use it through bbPress and have an active user base of people posting code snippets!

  • Iva

    Second all of the points on this list, they are the reason I use WordPress for both own websites and client websites. All I need, through a single CMS as a core.

  • As one commenter already mentioned, I think you should checkout a flat-file CMS like Statamic. The new 2.0 beta is shaping up to be quite a contender to WordPress. It’s a nice hybrid between a static site generator like Jekyll and a full database-driven system like WordPress. To me, it’s a great alternative to WordPress for sure. In fact, all the reasons you mentioned in this post could apply to Statamic. Everything that can be done in WordPress can be done in Statamic…if not easier! A lot of that has to do with Statamic’s ability to create highly customized content types and templates, all in an environment that is so much easier to design in than WordPress. With Statamic, you really do gain a much higher level of control over the design and functionality of your site. Definitely recommended!

    Another good reason to consider a CMS like Statamic is security. Not just with WordPress but with plugins as well. Many of the reasons you mentioned WordPress is good for requires plugins to facilitate the functionality. That creates a lot of problems because, as we know, WordPress upgrades are quite frequent and, at times, can break plugins. When that happens, you’re left either having to fix the plugin or wait for an update…which sometimes doesn’t happen or takes too long.

    Biggest reason though for me is creative freedom. Way too often I see WordPress sites where the overall design, the markup, and performance aren’t up to snuff. The reason is that so much of it is locked away with pre-built themes and plugins that manage all this for you. What most don’t realize though is that much of it isn’t done right. WordPress themes are notoriously hard to work with. My experience has been one of pure frustration trying to get a site to work the way that I want.

    My advice is always to consider more forward thinking alternatives. I honestly feel like WordPress is starting to hit some walls, thus the reason why so many folks are coming out in defense of WordPress. Is WordPress irrelevant? No, not really. It’s still a good blogging platform. But there are other platforms that are just as good that are more forward thinking, provide better security, and allow for more flexibility. Just some things to think about. :)

    • I would love to try Statamic honestly, but a $200 price point is just too high for my humble little personal site. I wish they had some sort of trial period or Lite version or something. :(

      • Yeah, the $200 price point is a bit of a sticking point. But, even then, that’s not a ridiculous price for something like this. My advice then would be to try out Grav, Kirby, and a few others. Grav is probably the closest in similarity to Statamic. If you like Grav you’ll definitely like Statamic, which I believe offers a greater level of flexibility and functionality. If you’re serious about your website then spending $200 on something that will be driving your site for the next two years is a pretty fair investment.

  • Ryan Malayter

    The problem with WordPress in my eyes is that it is a complete security nightmare. Nearly every site I’ve had to report to Google or MSFT as compromised has been a Wirdpress site.

    And unlike software which seems to “harden” over time and become more secure, WordPress seems to get worse over time due to feature creep and plugin sprawl.

    I’ve used many other CMS, and don’t really love any of them. But many seem to have a much better security track record. I’m in the banking industry now, and static generators are the path forward with narrow-purpose, self-hosted app code Iframed or ajaxed in as needed. You can do auth or secure URL tokens at the CDN or Nginx layer for protected content.

    • It really depends on how you’re using WordPress and the steps you take to secure yourself. Every CMS can have flaws, as you said, but without protecting yourself you’re leaving yourself open. At my company we use WordPress exclusively, and we make custom themes for every client. Using a plugin like Wordfence helps against brute force attacks, and watches the core WordPress files against changes and so much more. While yes, we have had some hacks in the past, they almost always come from bought themes or plugins. If you’re running a complete solution with your own custom theme and as little plugins as possible, you’re going to have a lot less risk.

      Nothing connected/on the internet is fully secure. You just take measures to protect yourself.

  • I love to use Neos CMS (www.neos.io) for its content model (something I always dreaded in WP), based on full-fledged content repository, where everything is a node and you can go completely custom. Our editors love it for live editing and simplicity of use.

Related Articles