eCommerce Dream

At the end of my WordCamp San Francisco talk, I said I had a dream. A dream about a plugin that can share an inventory between WordPress sites on a Multisite Network.

Firefly_-_WhitefallImagine, if you will, a store with a physical products (Geisha dolls). The store has a bunch of different types of dolls. The store has satellite stores, one in Ariel (their flagship store) but now one on Bellerophon and another on Whitefall. While the Companion-Style dolls sell well on Ariel and Bellerophon, the Cowboy-Style ones sell best on Whitefall. Also each store has a different kind of clientele.

So the Dollhouse Store makes a website, and then using Multisite, makes another site for each location: whitefall.dollhousestores.com and so on (or maybe whitefalldollhouse.com even). At first, the webpages are just a list of the local store products, come and buy them here, photos of the locale, employees, and local events. Then they decide to sell stuff on line. But they only want to list items for sale under specific criteria.

  1. All items for sale are stored on the network admin
  2. Each store can select what products they have at their store
  3. Each store controls product volume.
  4. Stores can request more product from homebase

Now of course they could have a separate store for each site, but they want to manage what possible items could be sold online, so having that controlled by the network makes sense, doesn’t it?

Firefly4_LMeanwhile another store sells cows. All the cows live at Persephone, and are shipped out to Jiangyin and other stores. They’re doing well with everyone going to cowship.com, but they too want to have jiangyin.cowship.com and so on. Each store lists what cows are for sale that live well in each location because Holsteins’ don’t like Bellerophon, who knew? This way, someone on Jiangyin can order Holsteins but not Texas Longhorns. Obviously they need to control which product can be sold at each location, same as the Dollhouse, but they also have a different problem. Their product amounts must also be stored in one location and shipped out from there, so they want to make sure they don’t oversell their cows.

Their criteria:

  1. All items for sale are stored on the network admin
  2. Network admin controls absolute amount of products
  3. Network selects what products they have at each store
  4. Orders per store base product volume on the network amount

These are pipe dreams. Today there is no plugin that ‘shares’ an estore across multisite sites on a network. You can’t even do it with ‘digital’ products which now that I say it aloud, I think Pippin should totally get on that.

Today, all sites are separate, and since estores have their content saved per-site, there isn’t an easy, friendly way (if there is at all) to pull data between sites in a way that preserves shopping carts and such. I wish there was. I get asked about this at least once a week, and I have to say “Today, there is no plugin that can share an inventory between WordPress sites on a Multisite Network.”

But this is a complicated thing. Multisite itself isn’t actually built to handle that kind of thing, since the network doesn’t have posts or pages. You’d have to dedicate a site on the network to the shop and pull in content from there, which of course has a switch_to_blog() overhead penalty. I can’t even begin to get past the paper thoughts I have here.

About these ads
StudioPress Theme of the Month

Comments

  1. I have seriously wanted something like this for quite a while. Currently we have networks of numerous stores with very similar product catalogs and we are managing them by having .csv files on the server and using WP All Import to keep every site’s product catalogs in sync and up to date. Obviously not as elegant as what you are suggesting but…what options do we have now?

  2. Robert Lilly says:

    This is a dilemma I’m facing now. I have 5 sites I’d like to share users across. (Two are already WordPress sites, the other three need to be converted.) For this, and other reasons, Multisite seems ideal. However, I’d also like to be able to share e-commerce across the sites, especially the shopping cart.

    Options I’m currently considering for that are: 1) redirect to the shopping site, 2) use iframes do display the e-commerce portion, 3) switch_to_blog(). None of these options thrill me.

    • @Robert Lilly: Sharing the Shopping Cart. Man, I didn’t even even get to that part of the shenanigans. Knowing you, I’m sure you already considered custom post types, and locking each user to their own CPT, so that technically the store and everything else is just one one WP site, but it looks and acts like more?

      Mind you, switch_to_blog() is less horrendous these days, but yeah, not my favorite fix either. :sad:

    • Robert Lilly says:

      @Ipstenu (Mika Epstein): Yes, that’s an option I’ve considered, but the use case for one of the sites makes that untenable. :x

      I guess it’s time I looked under the hood to see if there’s a way to create an e-commerce site and then enable (force) the other sites to use those tables from the database instead of creating their own. :shock: :???: :cry:

      I can see for use cases like WP.com why the separation makes sense, but that’s not the only type of scenario for wanting to employ Multisite these days.

    • @Robert Lilly: I wonder if a sub-plugin could be made to redirect those tables? I’m spitballing ideas.

      It’s a split decision for me on if this is the ‘fault’ of WordPress, for assuming we all want 100% separate-content sites, or of plugins for not allowing sites to share data knowing how Multisite already works.

      (The comment about CPTs was not actually towards you, I know you would have thought it through cause I know you, but for the next guy who thinks there’s no other options. Sometimes there are, sometimes there aren’t.)

    • Robert Lilly says:

      @Ipstenu (Mika Epstein): “I wonder if a sub-plugin could be made to redirect those tables?” My thoughts exactly!

      I’m going to do some playing around with this and if I come up with anything even halfway doable I’ll post it on GitHub and see if the rest of the WP community can help. I think the time has come to find an elegant solution to this once and for all. I’m going to reach out on StackExchange, etc. for ideas as well.

    • @Robert Lilly: please link here to the GitHub repo once you get it up. I’d love to contribute.

    • Robert Lilly says:

      @Brent Shepherd: Will do!

  3. I wish you both luck, it would be great to see this ‘solved’

  4. This dream will be much closer to a reality within the next 18 months.

    I’ve seen a few different efforts creating multisite WooCommerce plugins and multisite features are on the roadmap for version 2.3 of WooCommerce core.

    The two big issues:

    although many of us share the eCommerce multisite dream, we all have our own variation on that dream. Proof of this can be seen in the many different use cases given on the multisite WooCommerce feature request.
    as you touched on Mika, despite being in the same table, it’s difficult to share product, order & cart data between sites in a multisite network. Even just to share posts on a network, the best option appears to be to duplicate that content. Sharing products post types, order post types, with all their meta data and item data and then the cart (i.e. session) is significantly more complicated.

    Despite the complexities, it’s an incredibly exciting time now for eCommerce on WordPress, and given another year or two, it should be much easier for anyone wanting to sell dolls, cows or any other widget in a network to do so. :)

    • Robert Lilly says:

      @Brent Shepherd: Thanks for sharing those links. They help me to begin the process of researching this topic by looking at the discussions already taking place.

      The key issue, to me, is that the WordPress database schema is still first and foremost a blogging platform. Having the basic object be a post (in the generic sense of that term) and storing that data in the posts table is what makes sharing it across sites/blogs difficult. This is how it should be since that kind of content is generally meant to be site specific. My gut reaction is that we’re going have to store e-commerce data somewhere else (perhaps a new table) that CAN be shared across a Multisite network, just like the users and usermeta tables already are. Once we have the ability to share the data we can then implement filters, etc. to determine what shows up on which site/blog.

      Supposedly WPMU Dev’s MarketPress works on a Multisite, so I’ll definitely be looking into how they’ve approached the issue.

      How to do this and have it work with EDD, WP e-Commerce, WooCommerce, etc. will be tricky. It’d be nice to get Pippin from EDD, Justin from WP e-Commerce, and the principals from the other e-commerce solutions to collaborate so as to come up with a solution that can have a more universal application. Who knows, maybe this will become one of those “features as plugins” that eventually makes its way into core!

Half-Elf? Try Half OFF WordPress ebooks!