Using WP_Mock with PhpSpec

Over the last few weeks I’ve begun a push to increase our test coverage in OptinMonster with PhpSpec. Doing so will allow the team to release features with greater confidence and reduce bugs throughout the codebase. As tests were being written I quickly ran into issues mocking WordPress functions. Yep! OptinMonster is written on top of WordPress!

Continue reading Using WP_Mock with PhpSpec

Improving the support ticket submission experience

During the design phase of the new OptinMonster SaaS we realized that there was one killer feature that could set us apart from our competition. It wasn’t more beautiful themes, a super-duper form builder or a brand new type of optin form. Don’t get me wrong. All of those features are important to us and are in the works, but…

Our killer feature is outstanding customer support. Continue reading Improving the support ticket submission experience

Finally. An easy way to style dropdowns (select elements)

Do you know what I hate the most about CSS? Styling form elements.

Yes, most browsers provide some sensible defaults, but clients never seem to want those in their designs. Good luck getting the form to look the same across all browsers. Some even say it’s downright impossible.

Continue reading Finally. An easy way to style dropdowns (select elements)

Using ArrayObject with WordPress Transients

PHP arrays are great when you’re working with simple data structures, but what if you have a collection of objects that needs to be treated as an array? The ArrayObject class included in Standard PHP Library (SPL) is an excellent solution.

Continue reading Using ArrayObject with WordPress Transients

Packaging your WordPress plugin with Grunt

A show of hands, please!

For those of you who distribute their own plugins, who enjoys selecting your plugin files and directories, compressing them and then uploading that zip file to the server for distribution every single time you wanted to release a new version?

…crickets…

Continue reading Packaging your WordPress plugin with Grunt