Content Management Systems are great for managing content, with means to create, modify, and delete pages/posts easily. However, sometimes as developers we need to leverage the displaying of content outside of the normal system (read: user facing system). For example, Ninja Forms, the Drag and Drop Form Builder for WordPress, has a feature for previewing forms as they would be displayed in your theme. In order to display a preview of the form on the front end of the website we created a page, using the WordPress page post type, then filtered the content of that page with the contents of the form. This worked great during in-house development, however there are complications when deployed to 200,000+ user websites.
As I’ve been developing the Ninja Forms 3.0 API, Kevin Stover has been developing the Ninja Forms 3.0 Builder. This builder is sweet. We are so super excited (yes, so super excited; quote me on that) about this new form building experience. However, it has been a great development tease to see it in progress, knowing that I can’t, yet, reach out and build forms with the beautiful new UI. None the less, my work has required form data and I needed a way to build a form without the builder. In the interim I’ve been building forms programmatically, which has some really cool possibilities.
As we work through developing a new version of Ninja Forms, I’ve been thinking about the cool new features that I can incorporate into the Ninja Forms Kozo Add-On Generator. A majority of Ninja Forms extensibility is moving to the Form Action system, which is where Kozo is anyway. Having a preview of the direction for Ninja Forms 3.0, I was able to start moving Kozo in that direction from the beginning.
While re-writing Field Class Registration for Ninja Forms 3.0, one of my goals was to clean up the file structure for adding fields. Previously, in Ninja Forms 2.*, new fields were created with procedural PHP, long argument arrays, and prefixed WordPress action hooks. These files were large, messy, and a burden to maintain. As a part of the re-write process, we were able to step back and take a fresh approach for registering new form fields with the Ninja Forms drag-and-drop form builder.
Alex Ogle, co-founder of Tubatomic, reminds us of the importance of communication in our work, not just for the consumer, but also for ourselves. In his talk, “Avoiding Zombies” (slides), he analogizes zombies to “creating without communications”. This is important if we are to create good work, for without communication with our audience, without a story, we are mere zombies. We must remember to “Find the Story” and communicate it.
Have you ever wanted to use that cool AJAX thing, what ever it is? You know, that cool thing that all the cool kids are using? What is AJAX, anyway?
Here is a little detail on how I setup my development environment for WordPress plugin development.
Ninja Forms leverages three (3) main database tables for storing form and form action data:
The `nf_objects` and `nf_objectmeta` tables mirror the setup between the WordPress `posts` and `postmeta` tables. With this setup, the `nf_objects` table is essentially a list of objects without any real information about each object. This keeps the table small and the queries fast.
“Hey Kyle, Rely Race… you in?” A few months ago, Jeremy, our CFO, asked if I’d be interested in a relay race with a group from the office. “Sure, sounds like fun” I said. However, Jeremy never said anything about a running relay race. Of course a relay race is a running relay race, but I was expecting a water balloon relay at a fall festival (or some such nonsense).