Menu Sidebar

Add a NinjaDemo Form on External Domain

At Sprout Apps we’re going to be using the awesome NinjaDemo plugin but we wanted to allow for a demo to be created without directing them to the bland demo site running Twenty Twelve :).

Here’s the solution I came up with:

Add some AJAX handlers on the WPMU demo site running NinjaDemo. I wish NinjaDemo would provide these built in at some point but before that I’d like to see them allow for some attributes to be passed to Ninja_Demo_Shortcodes->try_demo(): add the domain in the form action (home_url()), add some classes to the submit form and change the submit button value.

Modify the allowed domains so that cross domain AJAX requests can be made.

After activating the example plugin above, a shortcode can be used on your main domain (or site you want to add the NinjaDemo form).

Make sure to modify the demo_url!

I know only a few could use this but I hope they find it useful. and Jetpack should lead the way toward standardizing custom post types

I don’t understand why this is an issue. The “lock-in” is only perceived by the theme user, it’s not real, especially when the content is owned. Any theme could add a very basic option and method to convert post type names. The answer should be to build better tools to convert their prospective customers; to help those that might think they’re locked in. It’s good business for Array and others to help convert than to wait and expect others to follow 1.

The real lock-in isn’t custom post type slug names: it’s post_meta 2!


We shouldn’t give up control by imposing any standards on a popular plugin. Jetpack shouldn’t be an authority for standards; as well as s2Member should never be an authority on subscription logic (even if it was extremely popular).

As I wrote in my response CPT slug names really isn’t an issue. If these businesses want to help customers (by converting them into buyers) they need to provide tools to help them convert from older themes. Technically a CPT slug name is probably the easiest thing to change and an interface to migrate is a days worth of work–more importantly it’s a business opportunity.



  1. Not to say that they can’t try to set a standard and build tools to help new customers start running post activation.
  2. Which only gets a mention. Understandably since there’s no true solution.

Javascript new Date() Formats and Offsets

Noticing that new Date( 'July 17, 2014' ).getTime() and new Date( '07/17/2014' ).getTime() will return two different values. The former will have the GMT offset attached while the later will not.

I need to test if this has anything to do with the values of the first are from a string and the second is from a date input type.


See the Pen sdypG by Dan Cameron (@dancameron) on CodePen.

Catching up in the WordPress Community

I have been releasing plugins and themes since the early days (~1.0) and I’ve been doing professional WordPress development for 6 years, but I only recently realized that I’ve become out of loop with the WP community. There’s so many new sub-groups: premium sellers, WP agencies and a ton of shops.

Looking back (beyond 6 years ago) I fit into a few places, I had some popular themes 1 and a surprisingly popular plugin in Search Everything 2. The community was smaller, the “premium” market was just starting and the explosion of WordPress dominating anything but blogs hadn’t hit yet. I could blame the community growth but I can’t.

I really just shut myself out. I stopped releasing code, stopped blogging and participating. This was because I ended up separating community involvement with work/business, and with me working full-time on a premium WordPress plugin I didn’t want to spend any free time on anything related.

Now that I have a more flexible work schedule, since I only need to hold myself accountable, I’ll be able to “give back”. I plan to contribute back to core 3, putting in more time at Stack Exchange (because it’s not just about WordPress) and being involved in my local WP meetup.

It will also be good business to give back at Sprout Apps and the plan is to make the core apps available for free in WP extend. This alone will help prevent me from sheltering myself away from a community I owe a lot to.


  1. All are no-where to be found now.
  2. Search Everything which I sold to Zemanta earlier this year because I was too busy to support it and they promised to make it better.
  3. Trying to contribute back to core has always been a negative experience for me. The next time around I’m going to take a trac issue that needs work but the debate is already over.
logo vert gradient solid background

Jumping Head First into the Unknown WordPress Project

For the last several years I’ve working hard, head down developing and supporting Smart eCart (formally GBS) 1. Recently I’ve moved away from working full-time on that project but found myself without a clear direction as to what was next.

I contemplating getting back into full-time freelancing web development; for a stretch I was toying with getting a “real job” working for a team that I always wanted to work for; my original plan was go to school to learn iOS development. Instead I decided to keep doing what I’ve been doing, building and supporting a premium WordPress product. However the big difference: I’m on my own this time.

Deciding to build an app wasn’t as difficult as it was to figure out what I should build. At first I was looking to build an e-commerce solution for booking. That idea and many others didn’t last long because I found no real opportunity to break-in with the current solutions already available. I also didn’t want to build something that I’d never use myself.

I ultimately decided on building a WordPress plugin for estimates and invoicing after getting really annoyed with harvest 2. Under the advisement of good a friend I was led think bigger and build more than just an estimate and invoicing app. Instead, I could have the invoicing app as the cornerstone to a whole suite of apps/plugins.

That’s what I’ve been working on. Sprout Apps will start selling Sprout Invoices 1.0 in August and there’s a lot to get done in the next three weeks in order for that to happen. A. Lot.



  1. SeC is a social e-commerce plugin for WordPress. It’s started as a small client project and turned into something huge and successful for everyone involved.
  2. A major payment incident occurred.


I never wanted to write about this topic but after seeing this today I couldn’t help but share my Alzheimer’s experience.

If you watch Seth Rogan’s testimony you’ll briefly hear about his mother-in-law and the complications, conditions and problems they had; my mom had those very same issues, exactly the same. After years of trying my best to take care of her the disease won last year weeks before her 60th birthday. I’m still recovering from seeing how the disease destroys, especially in only a few years.


My experience with contributing to WordPress core has been awful and after years of convincing myself it’s gotten better the results might be the same. Hopefully my feeling of discouragement changes because I really want to be involved.

Newer Posts
Older Posts

Dan Cameron

I build stuff with WordPress

I'm currently building Sprout Apps to help small businesses and freelancers running WordPress.