Menu Sidebar


Director of WordPress Platform Services at Alley Interactive. WordCamp Speaker. Core contributor.

Bringing Big Media Features to Your Site

What do Time and Quartz have in common?

They’re big, run on WordPress, publish tons of content and do tons of traffic. When you read an article on one of those sites, they deliver a unique experience. That experience starts when you reach the bottom of the article. Instead of hitting the end, seeing a footer, and then closing the browser tab, something special happen: the next article loads. What this means for readers is that they don’t need to take an action to continue their experience. The next steps have already been taken and content has landed in their lap. What that means for sites like these is their users stay on the site longer, consume more content, see more ads. All good things.’ Read More

Post Formats are Dead. Long live Post Formats.

WordPress 3.1 birthed Post Formats in early 2011 as a way of introducing Tumblr-like functionality. More than three years later, this functionality is hardly used and underestimated, collecting dust.

Post formats are slowly dying, and that’s okay -Krogsgard

I hope that the way we currently view Post Formats dies. I hope that it crumbles into a pile of ashes. I hope that Post Formats rises from those ashes like a Phoenix.

We’re past the point of throwing a coat of paint on Post Formats and watching it turn into a magical success. We need to take care of the rust underneath and come to terms with what has held Post Formats from reaching its full potential before we can move forward. Read More

The Opportunities We Take For Granted

I’m working a bit late tonight (2:00AM at the moment) and a memory just popped into my head of when I was in Jamaica. This was probably about 3 or 4 years ago now, but we all have those moments when something feels like it was yesterday. I was staying at a resort with my family and our toilet broke. We’d called the front desk and they were sending a maintenance person. We went down to the beach to enjoy the beautiful weather, fresh air and fantastic views. I popped back to the room to grab a Red Stripe and handle a couple of customer emails. Back then I was working on my startup full-time and doing consulting work on the side. When I got to the room, our maintenance engineer, James, was playing with the toilet. I offered him a drink, at first he was a bit hesitant as drinking on the job isn’t really encouraged, I made him a stiff rum and coke and we got to talking a bit. James asked me “what do  you do” and I told him I run a software company in the States. He seemed really impressed and a dozen questions entered from there. At the time, I’d not thought the position I was in to be impressive at all, the hours put in were horrendous, the relationships that suffered were heartbreaking and the return on investment, uncertain. Read More

Post Formats, whether you want them or not


The Debug Bar plugin has become one of my best friends lately. I’ve been spending a large portion of the last few months optimizing and rewriting a pretty large WP multisite. I’ve been scrutinizing queries and cache bashing like Mario on mushrooms. While looking through error logs today, I found something interesting, the site lost its connection to the MySQL server while doing a query involving the ‘post_format’ taxonomy. Now I don’t blame Post Formats for my DB issues, the two are unrelated and this was just a coincidence.

The thing is, I don’t have ‘post_format’ support registered in any of the themes I’m using. My false assumption was that if I don’t register theme support for something, then it doesn’t exist. Wrongish. I go to the admin panel for my dev environment and go to Posts->Add New, pop open Debug Bar and I see this:

Add New Post - Post Format query

Where is it coming from? Well, it comes from the create_initial_taxonomies() function in wp-includes/taxonomy.php

post_format taxonomy

On init, the ‘post’ post type gets the post_format taxonomy. No matter what. If I wanted it, I’d ask for it.

Edit: Wait, there’s more! On the initial creation of post types, ‘post’ gets support for ‘post-formats’.


This means every time your theme calls ‘post_class()’, or ‘body_class()’ on single pages, we get more unneeded queries. Here’s the unneeded query that runs every time you use ‘post_class()’:


‘post_class()’ calls ‘get_post_class()’, which does a check for if ‘posts’ support ‘post-formats’, which it does by default. Then it calls ‘get_post_format()’:


Here’s a fun bit, ‘get_post_format()’ does a check for if the post type supports ‘post-formats’. WP just did that already!


You can use the following function will get rid of these unneeded queries on your site:

add_action('init', 'unregister_post_formats');
function unregister_post_formats(){
register_taxonomy('post_format', array());
remove_post_type_support( 'post', 'post-formats' );

You can read about Posts Formats in the Codex or view the code here.

The concept is neat, but since you can’t add your own formats, I don’t use them. Nacin has a great post on post formats and in it says “If you want a custom post format, then chances are you shouldn’t be using post formats.” While I don’t like the idea of rebuilding what’s already been built, just to be able to customize or add to it, that’s the only option there is, and on that note, that’ll be the topic of my next post, Custom Post Formats, and I’ll be presenting on that topic at Internet Club NYC on May 27 if you’re in New York.

Toms’ Top 10 Tunes of 2013

[twocol_one]Spotify_Year_in_Review_2013-2 In 2013, I streamed over 70,000 minutes of music on Spotify. Here are my top 10 tunes for the year. All songs on this list are from 2013 with the exception that one of these tunes was released as a single at the end of 2012, but the album it’s on released in 2013, so that counts for me. I’ve not ranked the tunes because they all rock and the order they are displayed in will randomize itself every once in a while as a result of my indecision. [/twocol_one] [twocol_one_last]


The Wild Winding Road to WordCamp

Earlier this year I’d made a goal to get more involved in the WordPress community. I wanted to speak at a WordCamp. I’m the type of person that will put something off unless I have a fire under me, so the only way I knew I’d do it is if I signed up right away. I locked myself in to speaking at WordCamp Buffalo, so there was no backing out, this was happening. Now it’s the end of 2013 and I’ve been able to speak at 3 WordCamps and WordSesh 2, so I can happily say I reached that goal. I want to share a little bit about my experience speaking at a WordCamp for the first time though. It made some amazing memories and relationships, and hopefully a decent story too.

Staring at WordCamp Central, I took a look at the list of upcoming WordCamps and Buffalo was one of the first and only an 8 hour train ride away. I contacted one of the organizers, the awesome Andy Staple, on Twitter to get an idea of if I should gear my proposal toward devs or users based on the makeup of attendees.

I wrote out my proposal, pasted it in the form on their site and waited…and waited. Over the next few weeks I checked back frequently as they started to fill in the speaker info with names/pics/bios. I hit the refresh button a few hundred times, hoping my face would pop up on the next reload. It didn’t happen. In a quick tweet a week or so later to Andy, I asked if the list was finalized yet. He said it was pretty much finalized but he’d left a spot open as he was waiting for my submission. It never went through! That Andy had left a spot open for me was such a kind gesture, and extremely fortunate for me. I emailed him the proposal (which I’d luckily saved in a doc), and a picture of my big head popped up on the speakers list 5 minutes later. The journey begins!

Chris Van Patten, one of the other speakers,  happened to be coming up from NYC as well. We exchanged a few tweets and booked train tickets up together. I pulled an all-nighter so that I’d make my train in the morning. The train ride was great, Amtrak kind of has wireless, so you can theoretically be productive on the 8 hour trip. The ‘kind of’ wireless is ‘kind of’ not great, and on top of that, the wireless on my Macbook was kind of broken. Chris got most of his presentation slides completed during the trip, I did not.

That evening was the speaker dinner. I went to my hotel after we arrived, laid down to take a nap for a couple of hours before the dinner, couldn’t fall asleep. I got out of bed, got ready and did a little bit of work, then headed over to the dinner. The WordCamp Buffalo organizers planned the dinner at a really neat pub type place with lots of micro-brews on tap. The food was great, getting to spend a few hours with the best WordPress peeps in town, amazing!

Still on no sleep, I was off to create my presentation, I was speaking at 10:30AM the next morning. I started making my presentation at 3AM, finally took a nap from 5-7 and headed over to the venue. I worked on making my slides until 10AM. With 30 minutes to go, I downed a coffee and psyched myself up. Remember that wireless internet issue I mentioned? If I touch the computer the wrong way, the internet goes out and the only way to get it back is by restarting the computer. Typically, it goes out every 30 minutes. My presentation was about sliders, so I had about 30 browser tabs open with examples and such. By some miracle, the wireless stayed on as I walked to the room I was speaking in, and it stayed on for the whole presentation. Once again, I got really lucky.

My room was pretty full, a great group with great questions. Having a handful of other speakers in the room made me feel at ease as they were familiar faces in the crowd. I got the room to laugh early in the presentation, which set the mood for the rest of the talk. It was a fantastic experience, and getting to spend two days hanging out with all of the speakers and interacting with all of the attendees was a complete blast. If you have something to share, don’t hold it in, go speak at a WordCamp!

Keep My Feet on Ground and My Head in the Clouds

Keep my feet on ground and my head in the clouds


As a support Ninja at WooThemes, I spend a lot of my day with headphones on and listen to everything from Skrillex to I See Stars to Britney Spears and everything in between. I’m partial towards music without lyrics as it’s less distracting, but sometimes there are artists that just get me in the groove and in a good mood. When one is answering support ticket after support ticket, it’s essential to keep that internal smile stretched wide. Sometimes that means heavier music to vent a bit, sometimes that means inspirational music like Hillsong, David Crowder or Matisyahu.

Today was an ‘inspirational music’ day. I started the day off at 5AM with the honor of speaking at WordSesh, which was a complete blast! Now it’s time to get back to the normal work, right now I have a solid handful of tickets that I’ve started working on with customers, but these tickets need an additional response, either because a fix didn’t work (many times due to cache not being cleared from a caching plugin after making changes, or a CSS error from previously added custom code), or the response contains additional details to clarify the issue, etc. Or maybe my fix just didn’t work or I misunderstood the issue, it happens 🙂

I love my job. I don’t like calling it a job though. It’s part of my life, and the team I work with are more than just co-workers, they’re the people I’m sharing a large part of my days with, they feel like family to me. I love helping our customers, it’s a thrill seeing responses from customers ecstatic that the new thing they’ve been trying to get to work in their site is now functioning correctly. When I travel to speak at a WordCamp and a customer introduces his or herself to me and says ‘thank you’ for a time I helped them with an issue they were facing, it makes the whole trip worth it right there.

Helping fellow WordPress users at the Happiness Bar at WordCamps Raleigh and Atlanta:

[twocol_one]photo (3)[/twocol_one] [twocol_one_last]wordcamp_atlanta_2013[/twocol_one_last]

So where does the quote I started this post off with come in? As much as I completely love the happiness I experience from helping our customers, there’s one thing that makes my days even brighter: writing code. Whether this means pushing a bug-fix to one of our theme repositories, adding new functionality to WooSlider, or making a proof-of-concept for something I just thought up, I don’t really care. It could also be something like taking backbone.js classes on CodeSchool or participating on the Accessibility Team for Coding is like breathing, and if I don’t do it regularly, my head will explode.

‘Keep my feet on ground and my head in the clouds’ to me means to do what is needed and expected of me (which just so happens to be fulfilling), but never stop aiming for the stars, dreaming big, and pushing the limits of what I can do. I’d love to be spending more of my days coding. As a support Ninja, that means buckling down and making sure I’m performing my job life to the best of my ability, providing the best support possible, delivering happiness, not procrastinating and thinking two steps ahead. This is the way I can ensure that I have the time to write code, build awesomeness and maximize my personal happiness.

Bring on the support, bring on the code, bring on the happiness.

TomPress: The Toms of WordPress

Check out Tompress now!

I made TomPress to showcase all of the ‘Toms’ in the WordPress community. Some of you may remember BeardPress, a site for the bearded members of our lovely community. Toms are an equally diverse and talented group of individuals in our community, drawing inspiration from BeardPress, it seemed only logical for us Toms to have a home as well.

TomPress uses the Our Team plugin by WooThemes to display all of the ‘Toms’ along with their stats.


At the bottom of the page is a form, powered by the Gravity Forms plugin.

TomPress 2

This form allows Toms to add themselves to TomPress. When submitted, the Gravity Forms + Custom Post Types plugin creates a new ‘Team Member’ in the Our Team plugin and populates all of the fields with the information submitted in the form. The new member is saved as a draft, which I can then approve to display on the site.

TomPress runs on The One Pager theme.

Sliders: The Good, the Bad and the Technical

This is my presentation given at WordCamps Buffalo, Raleigh and Orlando during 2013. This presentation was created using the WooSlider plugin and is based on my experiences while working on WooSlider v2.0. I’m happy to answer any questions regarding sliders in general in the comments.

Actual presentation slides are on the left side, with my notes and links added to the right. Slides can be navigated via the previous/next button on the top right of the slider, or by using the left and right arrows on your keyboard. Special thanks to Brian Krogsgard and Chris Lema for the great articles they’ve written on sliders and to all of the authors of plugins mentioned in this slide deck.


  • Sliders: The Good, The Bad and The Technical

    Tom Harrigan

    Twitter: @TomHarrigan

    This presentation is built completely in a slider (using the WooSlider plugin).

    Sliders are one of the most popular functional elements included with themes, or added via plugin. Despite their widespread use, the value added to a site by having a slider has been increasingly questioned, with some results showing that sliders hurts a site in terms of click-through rate, page-load time, and accessibility.

    As the lead developer on WooSlider version 2.0, I’ve been head deep in sliders for the past 6 months. I’ll be using this experience in combination with research, articles and posts from others in the industry to look at what we’ve been doing wrong, and right, in implementing sliders. We’ll see where sliders can be most effective, how they can be effective and what makes (or doesn’t make) a slider a valuable addition to a site.

  • WooThemes: Ninja


    I work for WooThemes, we build awesome themes and plugins (WooCommerce, Sensei, WooSlider, etc.). At Woo, I primarily work on tech support and WooSlider.

Newer Posts
Older Posts

Tom Harrigan

Director of WordPress Platform Services at Alley Interactive

Follow @TomHarrigan

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.