I was just wanting to gauge some general feedback on how developers use WordPress as a CMS. I’ve started having a few client requests for websites built on WordPress. Most of the time, they’re pretty simple and the core WordPress functionality works fine.
Sometimes though there will be the need for custom functionality, for which I generally browse the thousands of plugins available and use one which suits. However as I build more sites I’m finding that I’m never 100% satisfied with how the plugins work (they either do too much or too little)
Do you guys write custom plugins for WordPress sites you build for clients (even if similar ones already exist)? How to you reach a decision when it comes to custom vs existing?
I’m writing far more custom code lately (plugins and theme functions, really all the same) because when you start using wordpress as a full-fledged CMS, you’re dealing with bleeding-edge functions that have only barely been discovered by many (or are still waiting to be stumbled upon in the source itself). So there aren’t many plugins out there that handle these newest functions.
Also, the very nature of using wordpress as a CMS implies a certain specialization and customization for your client; thus even when I’ve found plugins that handle certain CMS functions, I almost always find I need a more specific solution. Plugins have to be written to be flexibile for all sorts of utilizations, whereas your custom code (which can be based on an existing plugin) can forgo all sorts of unnecessary input forms and settings panels which plugins require to know what you, individually, want as a result. Eliminating those (and hard-coding certain functionality for your client’s specific scenario) also reduces the amount of input UI and settings that someone may accidentally touch later…
Hi @pingu:
Great question!
I build custom CMSes for clients, I don’t set up blogs for clients so I find that for the types of clients I service that I’m using almost exclusively custom plugins. My clients typically want things exactly like they want them and I find very few off-the-shelf plugins will meet their needs.
But it’s not that I think the concept of plugins is at fault. On the contrary I think it’s possible for plugins to exist so that most of the time I would be able to use off-the-shelf plugins it’s just that most plugins available today seem to be aimed at the blogging end-user and not architected with the professional developer in mind who uses WordPress as a platform for delivering solutions to clients.
What I’ve found working with my clients is a set of use-case patterns for plugins that I think would address at least 50% of the need for custom code, maybe more. After investing almost a year’s time on these plugins I’ve decided to release them as a product as some point in the not too distant future.
In the mean time, however, I’ll need to find some people who can tell me what they main needs are in exchange for the ability to use the tools I’m developing. If you have interest you can find my email address on my profile page; just shoot me an email and let me know what areas you are seeing the most in.
This is a very good question. There are a few general off the shelf plugins that I use regularly that solve basic issues like performance / caching, SEO, and forms (Gravity Forms).
For almost everything else its completely custom. Most of the custom work involves creating a way for the client to add specifically defined content types to their site.
For instance a client might request a way to post job openings. This requires a custom post type with custom meta boxes for stuff like job title, salary, benefits, education requirements, job description etc. Then an online application form would have to be created with an apply now button embedded or hooked into the single-job.php template.
Another example is white labeling or customizing the dashboard with a custom login screen using the clients logo and removing some of the WordPress branding along with some of the dashboard widgets. Some projects even require creating custom dashboard widgets.
There really aren’t many off the shelf plugins that can satisfy the needs of a fully fledged custom CMS.
I love that there’s such a huge library of 3rd party WP plugins, and I use them often for personal sites and pro-bono work. But I rarely use plugins from the repository for professional development jobs.
Generally, I find that clients have no emotional attachment to WordPress–they just want a CMS. So they tend to be less forgiving of things like donate buttons and brand-named plugin functionality. In fact, it makes them nervous. They just want to see a button labeled “Contact Form”, not “CformsII” or whatever. Plus, enterprise clients have legal departments that are sometimes worried about licensing and ownership of code and all that, and they don’t want to have to clear licenses and terms of use for a dozen 3rd party plugins.
So for the most part, I work from a library of basic, white-label plugins I’ve developed, and customize them for each client. That way, I know all the code inside and out, and can make customizations very easily and cleanly. And I know there isn’t a bunch of junk in there that was designed to accommodate edge cases–just what’s needed for the job at hand.
However, I definitely LEARN a lot from 3rd party plugins. Often I’ll crack open a plugin to see how it works, and then create my own version of it based on what I learned. Then when the need for that functionality arises again, I have something to work with that I built myself, that’s free of clutter and attributions, and that is practically invisible to the client.
I have yet to write a custom plug-in for a client but I certainly would if they were paying for it:)
I just recently dove into the more CMS “like” features of 3.0 with a fully customized medium sized site. Initially I was a bit worried if it was going to actually work out since it required so many custom elements and none of them had to do with actual blogging.
I came very close to going with a more sturdy CMS, but I took the risk and it has payed off. Most everything I needed was fairly easy to accomplish by simple making custom templates ( theme), in fact it was downright easy, and I was surprised by how flexible it is, it’s not just a blogging platform anymore.
With that being said there are definitely some caveats that can be worked on, I still sometimes find myself saying ..if only it had feature x like…does.
On a side note I have come to rely much less on plug-ins in favor or writing custom functions and code, In fact unless it is something specific, unique, or very well done I rarely use them at all.