WordPress Plugins – For most people this is the bread and butter of their site. The theme provides the style, but except for the initial core features of WordPress, everything additional is done through plugins and extensions.
The Goal
The goal of this series of posts is to document my current practices as well as invite helpful suggestions and insights. I definitely am not a plugin expert, and this series of posts around WordPress plugins is just as much for my own benefit as anyone else’s, since I expect it to be a learning process.
The Pitfall
I don’t assume that my methods are the “absolute right way” or the “absolute best way”. Development is much like politics sometimes, it seems. Everyone has an opinion, and too often things are subjective, with opinions based on reasons specific to each person. This can often make clear and concise debates-and-reasoning personal and hard to constructively have on the internet.
To debate development preferences and goals takes a certain amount of humility on all sides. To be able to agree to disagree and be open to learning, not just attempting to “win debates”, is the only way these conversations can happen and actually improve people’s’ knowledge and skills.
Side tangent over. Back to the main point.
The History
For a long time I’ve primarily worked with clients that have such specific designs and features that it has been hard for me to enter the plugin world, even though I’ve understood and conceptually created many “plugins” within themes, or developer plugins in more of a framework or foundational sense.
Though this has been wonderful experience, I recently have been working to expand my abilities to be able to help more than one client in any given situation. Enter WordPress plugins.
Although they take a little bit more forethought and insight, due to the fact that more than one primary user will be using the end result, I’ve begun the pursuit of flexing my development muscles to become more familiar with the plugin development world, and have found it quite enjoyable and helpful.
The Project
I recently had a client request a feature that would allow them to manipulate and disable email notifications when resetting passwords from the admin area of WordPress. Although I could have utilized a couple core filters and made changes directly in the theme, I decided to go a little overboard by creating a solution through developing a plugin utilizing:
- OOP
- WP Settings API
- Custom WP Settings API field wrapper
- Autoloading
- Name-spacing
- Custom JS and CSS
and doing the due diligence of adding a license, changelog, and readme.
I used many other resources and fantastic tutorials and reverse engineered several other plugins or file structures.
With a (hopefully) solid v1.0, I’m feeling good that I can continue to add to this plugin incrementally, as well as maybe benefit others through making it readily available. Although I understood some of these things conceptually, I haven’t always integrated them into my development flow, so this has been a helpful learning experience for me.
The Plan
I plan to go through and talk about the things I learned through the process, and hopefully either explain what I’ve learned, or reference where I learned lots of helpful skills, including:
- Learning From Other People
- Conceptual Plugin Development
- Object Oriented Programming
- Name-spacing
- Autoloading
- Plugin File Structure
- The WP Settings API
- Version Control
as well as things that I hope to add to the project:
- Proper Comments
- Updating through WordPress via version control
- Unit Tests
- Additional Feature Development
If you’re interested in checking out the plugin as is, feel free to check it out on my Github.