Categories
Posts

Two zero zero zero zero zero zero

Wow, what a milestone. WooCommerce has today hit 2 million downloads, just 6 months after hitting a million.

Downloads per day
Downloads per day are still growing!

How did we get here? Team WooCommerce has grown from 2 to 11 employees over the past 2 years, we’ve made 63 releases, closed 3735 Github issues (out of 3779), and solved over 30k support tickets.

Since the creation of the WooCommerce repository on Github, there have been a massive **6,284 commits*. Personally I’ve made 3,134 commits of those, with 1,187,191 line additions and 887,313 lines removed.

My contributions

WooCommerce is by far the biggest and most successful thing I’ve worked on and I’m so happy to see it flourishing, especially this quickly into it’s existence.

Platform growth

Google trends shows the increasing interest in searches related to WooCommerce which really demonstrates its popularity:

Interest from Google

This dwarfs other WordPress eCommerce plugins. Other platforms such as Magento do still have more interest average, but WooCommerce is catching up fast (given it’s age, and that its not a dedicated eCommerce solution this is pretty impressive).

BuiltWith has even more promising stats, suggesting WooCommerce powers 9% of eCommerce sites (thats 154 463 stores!). the below chart shows it’s popularity amongst the top 100k, 10k and 1 million sites. and suggests at present it is more popular with smaller sites, but that popularity is growing.

WooCommerce usage

BuiltWith also has stats about platform usage showing just what the stores they track are using. WooCommerce takes a large chunk of that pie. Interestingly many use custom carts. I would expect custom carts to be a lot more work over time for the companies involved, so perhaps those will start moving to other solutions (including WC) in the near future?

Platform usage

It’s good to see WooCommerce beating other WordPress eCommerce plugins, and even many dedicated eCommerce platforms, by a substantial margin.

What’s next?

We’ll continue to improve core (2.1 is coming out soon) build and evolve surrounding plugins, and hopefully continue with the impressive growth we’ve seen so far. As the platform evolves I imagine WooCommerce will appeal more and more to users of WordPress, and WordPress + WooCommerce will become a more serious alternative to dedicated eCommmerce platforms like Magento.

Bring on 3 million!

Categories
Posts

8 necessary Sublime Text plugins

Sublime Text is a fantastic code editor – far superior and faster than editors I’ve used in the past such as Coda and Espresso.

There are many plugins/packages for SublineText to add features and tailor the experience to your work flow; these are my favourites.

Categories
Posts

8 things I’d drop from WordPress core to remove bloat

Let’s face it – there are some features in WordPress which are unloved and rarely used. Ever used Press This? I’d love to see WordPress cutting out some bloat to make core lighter, and as a consequence easier to use. Here are my thoughts on what should be killed.

Categories
Posts

Deprecating plugin functions and hooks (and what we did in WooCommmerce)

Sometimes code needs to change; without doing so you can end up with a non-consistent, bloated mess. When changing things such as functions and hooks however, you do have to consider backwards compatibility so that code which relies on the old things doesn’t just stop breaking without explanation.

In WooCommerce major releases we often have to deal with this problem – in this post I’ll explain how to deprecate code, and how we dealt with it whilst developing 2.1.

Categories
Posts

Using the new Credit Card form in WooCommerce 2.1

WooCommerce 2.1 includes a standardised credit card form which payment gateway plugins can now utilise for a consistent UI.

2013-12-14 12_45_18

Using the jQuery Payment script (built by Stripe) inputs are formatted as you type which also helps prevent user error.

Categories
Posts

RE: The WooCommerce ecosystem

Last week at WordSesh there was a session all about the WooCommerce ecosystem. If you missed it, you can view it below:

Coen Jacobs also voiced his thoughts after being disconnected (#fail).

Unfortunately, as a developer-hermit I didn’t take part in this session, but I would like to give my thoughts anyway so here goes 🙂

Categories
Snippets

Manipulating shipping packages in WooCommerce 2.1

Up until 2.1, each order had to be shipped via a single method with a single price. 2.1 changes that and allows each package to be quoted and shipped individually.

By default, each order is a package, so to get this new functionality to kick in you must split it into multiple packages first.

Filtering the packages

Each package has cart items, a total cost, applied coupons, and the destination:

Once items are placed into this package, the package is then filtered through the woocommerce_cart_shipping_packages hook. This is where you can manipulate the packages and create more if needed.

Lets say for this example we have a regular items and a bulky item in our cart:

2013-12-12 at 15.16

The bulky item cannot ship with regular items, so we give it a shipping class called ‘Bulky’ and then filter the packages to separate it out via some code:

This code puts bulky items in one package, and regular items in another – once done, during cart and checkout you will get a shipping section per-package, and each can be chosen independently:

2013-12-12 at 15.30

Limiting available methods for a package

Each package can now also be marked to ‘ship via’ a method of your choosing. This is useful if certain packages can only be shipped by certain methods.

For this example, lets ensure bulky items are only shipped via flat rate, and not shipped for free.

Notice the ‘ship_via’ row which has been added. Now during cart and checkout, only flat rate will be allowed for the bulky items:

2013-12-12 at 15.34

Neat!

After an order is placed, this is displayed in the backend like this:

2013-12-12 at 15.37

Use-cases

So how can this new feature be used? Here are some example use cases:

  1. Shipping method restrictions
  2. Per product shipping with a different selectable method per product
  3. True per-product shipping costs
  4. Shipping per class
  5. Free shipping for qualifying products only, not the whole cart

Right now its obviously only do-able via code, but I plan on building some extra functionality into the per-product shipping plugin to use this at some point, and I’m sure someone will make a UI for this eventually 🙂

Categories
Posts

Apps I use during my daily workflow

I think it’s great to see what tools other people in your industry use day to day. You can learn new techniques, discover new apps, and improve your own workflow by looking. Coen Jacobs recently shared his setup, so I thought it would be good to share mine too. Even though pretty much we do the same thing, we’re both pretty different when it comes to workflow.

Categories
Posts

Tweaking the donation monitization model

Most developers agree the donation model isn’t great (giving the plugin away for free and requesting, not requiring, a small donation as a sign of support).

Arguably the best alternative is freemium model (where you have a free plugin and build premium functionality plugins around it) which is growing in popularity and is used by plugins such as WooCommerce and EDD.

Freemium may not be suitable for all plugins however, as some may not have many features which you can make premium, or you may just want to avoid the burden of supporting users who’ve purchased a premium product (who’s expectations for support may be far greater).

One of my plugins, Download Monitor, has always been donation based and free on WordPress.org. Although there is space for a few premium extensions, I’ve not had the capacity nor will to build them yet. When I rewrote the core plugin however, I did take out a feature I deemed to be bloat and made it separate – but not premium, as I thought users would react badly to a previously core feature being made paid-for after an update. Instead I made it “pay what you want”.

Categories
Posts

Plugin installation techniques; activation, deactivation and uninstall

If you are building a complex plugin, or one which needs it’s own database tables, you’ll likely be installing all kinds of things during activation or first run. Uninstalling your data however may be an after thought.

In this post I’ll explain techniques you can use to install and remove your data to keep things tidy, should the user decide they no longer want your plugin.