WordPress: Post Types vs. Post Formats

I am far from a WordPress expert, as this post will highlight. However, I am a hobbyist and an out of practice one at that. This past week I’ve been messing around with the template here on the site.

In doing so, I ran into a problem and it took me a while to google properly and figure out the issue.

The issue was that I use custom post formats for various things on the site. I have a format for the movie/book/tv reviews, a format for links, the format for normal posts, etc. But I was really struggling to figure out how to get WordPress to change display information for the different things.

The core of my problem was I kept trying to use get_post_type(). Like the definition of insanity, I tried it over and over expecting something to change somewhere.

I did this because in my mind these are different post types. To avoid confusion, I’ve properly referred to them above as formats but in my mind those are different types of posts. However, every time I would try to use get_post_type(), it always only returned ‘post,’ regardless of if I had set it as ‘link’ or something else. So I kept banging my head on my metaphorical desk.

Well, it took until Sunday morning (watching Manchester City vs. Sheffield United) for me to properly Google fu my way to an answer. WordPress parlance is that the above are post formats and not types, and the correct command is get_post_format() (reference link.)

Returns the post format of a post. This will usually be called in the the loop, but can be used anywhere if a post ID is provided.

I wanted to share about this here because the first several answers when Googling don’t highlight this difference well enough or at all. If I lost hours trying to solve this issue, then I’m sure there are others doing the same thing and hopefully I can save someone else a few hours of their time.

My Fixture Picker

As is well known, I am an avid soccer fan. I love watching it and watch games from around the world. On average, I will watch 20+ hours of soccer a week. Admittedly, that time is not focused solely on soccer. I am usually having it on in the background while I do other things.

For example, this morning I watched Arsenal vs. Chelsea, two teams I am not a big fan of, face off. While watching them, hoping for a meteor to strike the stadium, I did a major revamp to a little tool I built that helps me identify games to watch.

Simply titled, “Fixture Picker”, it looks at upcoming matches in a number of leagues and identifies ones which I will likely enjoy watching. It does this in a few ways:

First, I’ve built a database of the teams in each of the leagues and assigned each team two values: My interest in the team and their relative place in the league’s standings. The latter of these is one I hope to automate in the near future, but I haven’t found a data source I can pull this from. So, for the time being, every few weeks I go in and spend 15 minutes updating the various league standings.

The system first combines the ratings of the two teams, and then combines that with looking at the difference between the teams. The idea being I want games featuring higher ranked teams and ones which are closer ranked.

Secondly I have assigned various leagues a modifier. There are certain leagues I am more eager to watch than others.

Next, it looks at if I’m interested the teams (are they my chosen teams in various leagues or do they feature players I am keen on?)

And then out of that there are four classifications which it comes back with:

  • Must Watch – Two top teams in a league where I’m interested in at least one of them.
  • Should Watch – Involves at least one team I’m interested in, or is two evenly matched teams in the top half of the league
  • Can Watch – The vast majority of games
  • Should Avoid – The system sees no reason for me to watch this game

Prior to today, I had imported the calendars of various leagues, and relied on the database of games for looking at the schedule. But this was a manual process and required me to review schedule changes or accept a certain amount of misscheduled games.

This morning’s update was to begin making use of a data source where I could abandon the manually built match database and instead pull from the data source. Needless to say, this is a very exciting update to the system.

Future updates I want to make to my fixture picker:

  • Automate pulling the team’s place in the standings
  • Refine the algorithm for identifying matches
    • Use data from previous meetings
    • Betting data?
    • Flag teams with notable injuries, etc.
  • Improve the looks, it’s very ugly right now
  • Expand the tool to cover more leagues (Mexico, NWSL being the primary two)
  • Add email updates to make sure I don’t miss must watch games

But why?

This isn’t a critical tool. I could easily look at the matches for a day and pick them on my own. This was just a fun side project to give me something to fiddle with and work on.

In many ways I see programming as a hobby and like a carpenter or artist, I just want something to work on and play with. If it ends up being something I can use, then all the better.