Thanks to the hard working developers at Automattic, and the many contributors to the WordPress plugin repository, the API’s, plugins, and development capabilities available to WordPress theme developers and website managers is tremendous.
Most of the work I do is customized theme and plugin development, and I take content management very seriously. Project after project I have recognized patterns in the tools, techniques and plugins I use time after time. I’ve crafted a list of resources and guidelines I typically follow during the course of a professional quality WordPress project.
Custom Post Types & Taxonomies
Modern WordPress theme developers understand the importance of clearly organized data, and how it must extend beyond Posts and Pages.
Custom Post Types
The custom post types feature in WordPress makes this possible, allowing you to define your own additional “types” of content. I’ve used custom post types to handle all kinds of content types including:
- Team profiles
- Landing pages
WordPress’ custom taxonomies make it possible to organize large amounts of content in a logical, well-organized way. Working with custom taxonomies is greatly improved in WordPress 3.3. I commonly use custom taxonomies to compliment custom post types. For example:
- Team profiles post type with a taxonomy for office location
- Products post type with a taxonomy for product type, price range, color, etc.
- Careers post type with a taxonomy for location
It’s usually best to separate your post type and taxonomy definitions from your theme using a functionality plugin. When a client changes a theme in the future their data structure will be preserved.
Custom Meta Boxes
When you start to use WordPress as a CMS you begin to realize that one WYSIWYG area isn’t going to cut it. At that point you may start to explore the option of custom fields. They’re great, and they work well for handling small changes. But what happens when you need to have multiple WYSIWYG areas, or upload files, or manage content using other form fields like checkboxes, radio toggle’s or text inputs.
The WPAlchemy MetaBox Class is a well-built, publicly hosted GitHub PHP class was created by Dimas Begunoff and can be used to create advanced WordPress meta boxes quickly. It is the tool I use to create meta boxes for my projects to quickly build custom meta boxes.
Now you may ask why I wouldn’t advocate building custom meta boxes from scratch. I do, if your meta boxes are simple and only need simple form fields. If you want to include advanced features in your meta boxes such as:
- TinyMCE editors (WYSIWYG)
- Media library uploads and attachments
- Duplicate/repeating fields or field groups
- Display conditions to control when and where a meta box displays
The WPAlchemy MetaBox class is, in my option, your best option. It’s well developed and maintained, and is plugin independent so it can easily be used in a custom theme.
If you feel that you aren’t technical enough to work with a PHP class, or build your own boxes from scratch, then I would suggest checking out the following plugins:
Both of these provide ways to quickly and easily build meta boxes that improve WordPress’ CMS capabilities.
Automated SEO Management
WordPress SEO by Yoast is the most complete SEO plugin available in the plugin repository. It makes setting up a ton of SEO optimizations a breeze including:
- Title tag automation throughout your site
- Metadata management on individual page/post/post-types
- Keyword suggestion and SERP snippet preview
- Automatic XML sitemap generation
- Google webmaster tools integration
- Bing webmaster tools integration
- Alexa tools integration
Open Graph Protocol configraution
- Robots.txt management
- RSS customization
Yoast is a well known SEO consultant. He has included many of optimizations he recommends, along with explanations for each accross 10 different configuration pages available in the plugin.
I use his plugin on every site I setup, it’s the best way to get a project setup for high ranking search engine results.
Social Media Widgets
Social media widgets make it easy for visitors to share your content on their social network of choice. There are many plugins out there for this functionality, but I recommend the Socialize plugin created by Jon Bishop. It provides an easy way to selectively add actionable social bookmarks to your posts content or below the post in a ‘Call To Action’ box. Jon has been supporting it since 2009, still going strong.
If you’re managing a higher volume website and speed optimization is a primary goal then I suggest looking into an asynchronous AJAX approach to loading social sharing widgets.
Optimize for Speed
There are many things you can do to [improve the speed of your WordPress website], but the top option is to install and configure the W3 Total Cache plugin created by Frederick Townes.
W3 Total Cache improves the user experience of your site by improving your server performance, caching every aspect of your site, reducing the download times and providing transparent content delivery network (CDN) integration. It is trusted by major websites including:
Managing Forms & User Submissions
Contact forms are a common pattern across the web, and fully developing a great form solution can take time. The best option for managing forms in WordPress is Gravity Forms. Building simple and complex forms is a piece of cake with this easy to use form editor.
All submissions are stored under a new Forms menu in WordPress. Email notifications to administrators, and even the form submitter, can easily be setup and configured right within WordPress.
Backing up your themes, plugins, uploads and database offsite should be a top priority for every WordPress configuration. Backup Buddy makes this really easy, I highly recommend it. Using Backup Buddy you can save a backup for a single or multisite WordPress install, including the themes, plugins, uploads and database.
You have the option to backup to your server, Amazon S3, Rackspace Cloud, Dropbox, FTP, or e-mail. Quickly and easily restore your site on the same server or migrate to a new server with a different domain and database. The process is easy, fast, and reliable.
I use a free Dropbox account with 2GB of space setup with a scheduled backup daily, that will only store 5 backups. This is key as it helps me stay within the boundaries of the free Dropbox account.
Anything I missed?
I’m sure there’s a lot, so let me know if you think I forgot to mention anything in this post.