AdControl Plugin Is Here!

The AdControl plugin for self-hosted WordPress sites I’ve been working on for the past while has finally launched! Piggybacking off Jetpack and WordAds 2.0 it’s now easier than ever to start showing ads on your site!


WordAds has been a hit with publishers and WordPress VIPs who further embraced it after we launched WordAds 2.0. Today we are excited to announce that WordAds is available to any WordPress site via the AdControl plugin.

Built specifically for WordPress sites that want to earn income from advertising, WordAds is built for simplicity, allowing bloggers to focus on blogging and leave the monetization to your WordAds partner.

Adcontrol screenshot

If you have  a self-hosted sites there are four steps to get going with Wordads:

  1. Apply here at
  2. Download and install the AdControl plugin here.
  3. Make sure that the Jetpack plugin is installed.
  4. Complete setup questions in your WordPress dashboard under Settings > WordAds

More questions? Check the WordAds FAQ here.

View original post

Spreadsheet Column to Index Conversion in Python

If you’ve ever had to dig down into specific columns of a spreadsheet with > Z columns you probably know how annoying it is to try to convert something like ‘AQ’ to the appropriate index (e.g. row[42]). Here’s a quick one-liner to convert a spreadsheet letter-based column to the equivalent zero-based index.

For example:

  • col2num(‘A’) -> 0

  • col2num(‘Z’) -> 25

  • col2num(‘BC’) -> 54

Using the WordPress Media Loader in the Front-End

Over a year ago I was checking out WordPress’ new JavaScript media uploader interface and I had the idea to try to get it working on the front-end. After playing around with it I managed to get something working and thought, “I should write a blog post about that,” and promptly forgot all about it. Since I’m at Loopconf at the moment and feeling inspired I guess it’s finally time 🙂

I created a simple plugin available at to demonstrate what you’ll need to do to get it working. There are some important caveats!

  1. You need to decide how you want to handle how it’ll work for users that aren’t logged in.
  2. You’ll also have to decide what to do about users without ‘upload_files’ permissions.

That said, let’s take a look!

The Plugin

The media interface is all JavaScript so the plugin mostly serves as a way to bootstrap the js libraries we’ll need. I also included a simple shortcode that spits out a button that summons the interface and replaces the button with the selected image. Otherwise, there are three important things happening:

  1. I’m calling wp_enqueue_media() to load the media interface libraries.
  2. I’m filtering ajax_query_attachments_args in filter_media() to retrieve only the images belonging to the user. If you don’t care about restricting the images just remove the filter.
  3. I’m checking current_user_can( 'upload_files' ) in the shortcode to restrict access to the interface, you’ll need a similar check somewhere in your own code.

The JavaScript

This is the meat of what you’ll need to use the media interface on the front-end. It’s actually pretty simple to summon the interface and then do something with the file that was retrieved. It’s all handled in these three easy steps:

  1. Create the file_frame object using
  2. Attach a 'select' listener to the file_frame object to handle what you want to do when a file is selected. The attachment variable will have an object containing all the metadata for the selected item. Just do a console.log() to figure out what you’re getting.
  3. Tell the file_frame to pop open the interface based on a click (or whatever) on an element somewhere.

There you have it! I’ll leave it up to you to do something non-trivial with it, but this should get you started. happy coding!

It's magic!


As the tweet below proclaims, I’m participating in Movember this year with my teammates at Automattic. If you want to help a bro with his mo please use the tweet below or you can donate directly to the team at