Now you can stop emailing me! Check out Quality Control on AppThemes.
Author Archives: Spencer
WPBundle and WordPress: The Setup
Featured
Managing the WPBundle WordPress install is perhaps one of the most interesting, and fun things I get to do. It’s by far the most in-depth WordPress site I’ve managed, featuring a plethora of different pages, modules, and sections.
The main install is a single non-networked install of the latest nightly build. I know you’re not supposed to use nightly’s on a production site, but I like to live on the edge. It has a decent amount of Plugins installed that make the site tick:
- Akismet
- bbPress
- Contact Form 7
- DBC Backup
- JetPack
- Really Simple Captcha (For Contact Form 7)
- Secure WordPress
- Syntax Highlighter Evolved
- W3 Total Cache
Aksimet is pretty obvious. Used to help stop spam. Probably should have been proactive and installed it on our demo server as some of our demo installs currently have about 30,000 pending SPAM comments.
The bbPress Plugin is used to manage our support forums. It’s running one of the very early releases, that has been stripped down quite a bit as it is. Considering bbPress still hasn’t even officially released an alpha version of the Plugin, you can imagine how basic it is. However, I like that about it, and it certainly gets the job done. I created my own little “Support Plugin” that allows topics to be marked as resolved when an answer has been given. It was one of the most popular plugins for the stand-alone version of bbPress, but wasn’t up to par with the Plugin version. Perhaps when a stable version is released, I’ll extract my code and see about releasing it
Contact Form 7 is used to accept showcase submissions, and general contact inquiries. Really Simple Captcha helps secure those and fend off some of the SPAM.
DBC Backup uses WP Cron to schedule daily backups of the site’s database. It makes it easier to not worry about upgrading to nightly builds when you have the past 30 days of database information safely backed up.
JetPack is one of my favorites. All of the modules it provides are great. It makes it super easy to track site stats, as well as brings things like easy post/page sharing.
Secure WordPress is just another precautionary Plugin used to block out people form trying to log in too many times.
Finally, W3 Total Cache helps the site run at optimal speed, all of the time. One of those Plugins that you just install and forget about, yet it makes a massive difference.
The actual theme that powers the main site is decently complex as well. It features two custom post types, and a few custom taxonomies that make it easy to manage the contents in the bundle, as well as the showcase. When a new item is added, it is automatically filed away and displayed where it needs to be around the site.
Using the WordPress Media Gallery, we can upload screenshots that are displayed via a rotator when viewing a single item.
Purchases are managed through Quixly. When a new item is created, a custom meta box lets us simply paste the Quixly URL, which lets users purchase the item. When someone makes a purchase, a quick little snippet of code using wp_insert_user allows me to automatically register users, giving them access to the bbPress support forum.
The demo site is a little simpler. It’s a separate Network Install of WordPress that has about 60 separate sites. A separate install is used for each of one the parent and child themes. This is necessary because our child themes are not always simple variations, but can call for different types of content all together. By using separate installs, we are free to showcase this. At first I was worried about managing all of them as separate sites inside the network, but WordPress makes it easy. Network updating WordPress, as well as plugins makes managing 60 sites no different than 1. The only thing I would do differently, as I mentioned above, is take more precautions on the comments.
That’s about it. I’m sure it pales in comparison to some of the other WordPress powered sites out there, but I certainly feel like I’m utilizing a lot of WordPress’s potential through the site. If you have any questions or comments, I’d love to hear what you think.
Twenty Eleven and Organization
Aside
To stay up-to-date with the times, I’m switching over to Twenty Eleven. I was a huge fan of Duster when it was released for WordPress.com, and was happy to see it become the default. Interesting to see how they’ve embraced including extra theme options, and even better to see how they’ve been implemented. Hopefully this new standard set by the default theme will shift people away from creating overly-complex custom option pages. Time will tell.
I’ve also taken this time to do a little re-organizing of my blog. I’ve tried going back through most of my posts assigning them to the proper post formats. Still need to redo the categorizing, but that might need to wait until another day.
SyndText Update
Aside
Just redesigned and rewrote SyndText in about 12 hours. I coded it this time using the awesome Dingo Framework, which I’ve grown to love. I recently used it to recode ScreenSnapr as well.
On Quality Control
A much needed update for Quality Control:
For the past month or so I’ve been negotiating a deal with AppThemes, a Premium WordPress Theme Marketplace, to transfer development of the Quality Control theme. Because of this, I will no longer be offering support, and the publicly available versions have been taken down.
AppThemes plans on expanding on the functionality, and providing the theme with much of the functionality I was not able to implement due to it just being a side project. They expect to re-release it in April.
On another note, I should have a new design for the site coming soon… maybe…
On another note, I’m now looking for other WordPress themes I can make. Gimme some unique ideas!
Back to 2010
Aside
Going back to the default 2010 theme. The darkness was getting a little heavy on the previous theme. Plus 2010 is incredibly flexible.
Quality Control 0.2
Wow. Just when I thought it couldn’t get any cooler. (Not to toot my own horn).
The next version of Quality Control (currently awaiting review) takes things to the next level. In reality there are very few new “features” for the average user. However, things have been cleaned up, and made ridiculously easy to use.
I’ve set it up now so each “module” of Quality Control is loaded through add_theme_support. This way, child themes can effortlessly remove built in features like milestones, categories, tags, assignment, and notifications. Not only is it easy to remove features, but it’s almost just as easy to add them. A new class has been introduced that handles creating new taxonomies automatically. It will automatically add it to the navigation, ticket meta, admin backend, ticket listing columns, save the information when publishing tickets, and add the fields to the form. It’s awesome. Here is how it is used:
In functions.php of your child theme add:
add_action( 'after_setup_theme', 'quality_child_test', 11 );
function quality_child_test() {
add_theme_support( 'ticket-priority' );
require_if_theme_supports( 'ticket-priority', locate_core_file( 'inc/modules/priorities.php' ) );
}
Then create a file in /inc/moddules/ called priorities.php (this is in the child theme directory)
<?php
/**
* @package Quality_Control
* @subpackage Ticket Taxonomies
* @since Quality Control 0.2
*/
if ( ! class_exists( 'quality_ticket_priority' ) ) :
/**
* Create the status taxonomy. Nothing custom here.
*
* @since Quality Control 0.2
*/
class quality_ticket_priority extends quality_create_taxonomy
{
/**
* Just create the name, slug, and labels. The rest is
* done automagically.
*
* @since Quality Control 0.2
*/
function quality_ticket_priority() {
parent::quality_create_taxonomy(
'ticket_priority',
'priority',
array(
'name' => __( 'Priorities', 'quality' ),
'singular_name' => __( 'Priority', 'quality' ),
'search_items' => __( 'Search Priorities', 'quality' ),
'popular_items' => __( 'Popular Priorities', 'quality' ),
'all_items' => __( 'All Priorities', 'quality' ),
'update_item' => __( 'Update Priority', 'quality' ),
'add_new_item' => __( 'Add New Priority', 'quality' ),
'new_item_name' => __( 'New Priority Name', 'quality' ),
'edit_item' => __( 'Edit Priority', 'quality' )
)
);
$this->actions();
}
}
endif;
$ticket_priority = new quality_ticket_priority;
This will automatically add a new taxonomy called “Priority”. Amazing.
Free Time
Aside
Once I finish the homework I have, and the coding I need to do I’ll have some free time. In that free time I plan on coding more.
Quality Control 0.1.5
Quality Control 0.1.5 brings a few changes to the table. From the changelog (which isn’t really that specific)
- Created a ticket form template tag.
- Added the ability to assign users to tickets.
- Added permission options to setings.
- Other optimizations/code fixes.
- State permalinks aren’t hard coded in loop.php and single.php
The one I am most happy about is merging all the front-end ticket submission form code into one function. I’ve set this up in an almost identical manner as the comment_form function found in WordPress. You can filter the array of inputs, making it much easier (and possible) for Child Themes to exclude certain fields without having to edit the theme directly.
A basic permission system has also been put in place. It allows you to assign one or more users to a specific ticket. Then you are able to decide how those tickets act/appear to users who are not assigned (hide the ticket, read only, or readable and writable.)
Along with multiple other bug fixes/optimizations, I fixed some hard-coded permalinks that where causing some trouble.
With each iteration, the customizability through Child Themes improves. Hopefully it will eventually get to a point where no theme files ever need to be edited. But that might be an unrealistic goal.
Get Quality Control
Old Code
Aside
Looking back on the first theme I coded for WPBundle (which was in November), I start to wonder if I was in my right mind. Some of the way I did things was just crazy! Or maybe I’ve just learned a lot in 10 months.


