Release Early: A Case for a Strong 1.0

I am not a fan of the “move fast and break things” mantra that Facebook used to hold and I don’t think there’s a reason to have to justify my opinion on that. I’m glad they’ve sense moved away from it (or appear to have – I don’t know what they do internally).

I am, however, a fan of the “Release Early” idea. Sometimes this is also coupled with “Release Often” so we get the near-infamous “Release Early, Release Often” phrase in the software development nomenclature.

I don’t necessarily think they have to go together.

But when it comes to the idea of “Release Early,” it seems that no matter what you release, if it’s not up to a customer’s expectation, then it’s no good.

And I get it. At least from that perspective.

But what if you’re a fellow software developer and have some insight on to how this kind of stuff works?

Read More

WordPress Widgets: How to Detect Object-Oriented Programming

If you’ve not read the first post in this series, I recommend it, as we’re starting to get into writing object-oriented code for WordPress through the use of the Widgets API.

The series is going to capture a few things:

  1. show you the basic skeleton of a widget and why it’s object-oriented,
  2. discuss what things you should be able to notice and why
  3. update the Widget Boilerplate directly on this site first and then push it out to GitHub,
  4. build a widget using the API with the boilerplate as the foundation for our work.

But before doing that, I want to make sure that everyone reading this is caught up on the core principles of object-oriented programming and has everything needed to build out an object-oriented solution for WordPress.

To that end, I recommend the following:

  1. Two Pillars of Object-Oriented Programming: Part 1 of 2
  2. Two Pillars of Object-Oriented Programming: Part 2 of 2
  3. Abstract Classes, Part 1 – Abstracting Behavior
  4. Abstract Classes, Part 2 – Abstract Classes and Interfaces
  5. The Independent WordPress Developer

If you’ve read all of that content, great. You’re going to be well-prepared for this post and the upcoming posts. If not, there may be some holes in the rest of what you’re about to read, but the gist of the post should be clear enough.

What’s The Deal, Exactly?

Here’s the thing: Last week, I shared a bit of code along with some information about the Widgets API. I’m going to be revisiting that a little bit more in this post before we get into the more coding intensive part for two reasons:

  1. I want everyone reading this to be on the same page as it relates to writing object-oriented code (at the very least, in this context),
  2. I recognize that people are coming from different backgrounds and I want to make sure we’re all on the same page as much as possible before proceeding.

If you have experience with writing object-oriented code, especially in an advanced capacity, this may seem simpler to you; otherwise, I hope this is going to arm you with everything you need to detect object-oriented practices not only concerning this API but when reading others’ code, too.

Read More

Organizing WordPress Settings Screens with Namespaces

As many of us continue to move forward with PHP7+, we can continue to take advantage of a lot of new features that the language offers.

Organizing WordPress Settings Screens: PHP7

In the meantime, though, there are still features of PHP and related software that we can use t help streamline our development. The least of which (and that which I’ve written and spoken about a bit) is namespaces.

Namespaces and Autoloading in WordPress

Here’s the thing, though: I like to have my plugin’s files and directories structured so that they are organized to mirror that of the namespace conventions they follow. And this can be done for taxonomies, meta boxes, domain objects, database-related functionality and so on.

In this post, though, I want to talk about a way of organizing WordPress settings screens from both the logical – that is, their file system location – and the virtual – that is, their namespaces – organizational structures.

Read More

How to Easily Truncate Text in PHP

If you treat WordPress exclusively as a blogging application or, even in a more liberal sense, a content management system, then you’re likely used to using the editor or the excerpt field to write a teaser then introduce a Read More link.

WordPress for Web Applications (Again)

For those who have read this site for a while, I’m specifically interested in using WordPress as a foundation for web application development (see also this, this, this, and this).

WordPress for Web Applications

At the time of this post, this is an article that’s about six years old.

So there are times when the content that you’re going to be rendering on the front-end may be coming from a third-party source.

Back to the Content

That is, the application works like this:

  1. contact a third-party API,
  2. import data from the call and parse it as necessary,
  3. write it to the database,
  4. render the information on the front-end when requested.

There’s a lot that can go in between each of the above steps, but the main thing I want to share in this post is an effective way to easily truncate text using PHP to render on the front-end.

This is useful for providing teasers, linking out to third-party sites, and more all without needing to write or edit content manually.

Read More

Using Coding Standards with WordPress

I write a fair amount about coding standards with WordPress and the importance that I believe they have for individuals, teams, and with working with the core application, that being WordPress itself.

Coding Standards with WordPress: The WordPress Coding Standards

In the last year or so, I’ve moved away from working primarily with the WordPress Coding Standards and have begun to use PHP Standard Recommendations for coding.

Coding Standards with WordPress: PSR

Note that I did not say I abandoned the WordPress Coding Standards nor that I elevate the PSR recommendations above them, but I have reasons for when I use each. And for anyone working with WordPress-based projects, I think it’s important to recognize when it’s appropriate to use each.

And that’s the purposes of this post.

Read More