WP Super Cache 0.9.9.8

January 7th, 2011

WP Super Cache is a full page caching plugin for WordPress that makes your website run much faster!

Version 0.9.9.8 has been released and has a number of bug fixes and changes including:

  1. CDN updates: it can be switched off. Multiple CNAMEs can be used for serving static content to improve performance.
  2. Uninstall process improved. Files that the plugin creates are removed, and the wp-config.php and .htaccess files are fixed. If the plugin can’t do any of these steps it will display a message explaining what to do.
  3. Cached dynamic pages can now be stored in Supercache files and compressed. No need to use legacy caching any more.
  4. 1and1 Webhosting fix. They use “/kunden/” in some of their paths but not others.
  5. I removed the “log by email” functionality as it caused problems for users who were inundated by email.
  6. Many more minor fixes and changes.

The old uninstall process has been completely revamped. Now all you need to do is deactivate it on the plugins page. It will then remove wp-cache-config.php and advanced-cache.php. It will also remove the extra code it added to wp-config.php and the .htaccess file. On the off chance it can’t remove those files it will print a helpful message asking you to fix the problem. Unfortunately this class of plugin (full page caching plugins) are by design more complicated than regular plugins and are more invasive.

Got a problem with the plugin? Use the support forum please. Support queries posted here may be ignored or deleted.

Related Posts



cSprites for PHP 5.3.1/2

January 4th, 2011

Joost posted a great article on reducing http requests on WordPress sites recently and one comment caught my attention. Nabil mentioned cSprites. It’s a WordPress plugin that merges the images in your posts into one file and uses CSS to position the single merged file in place of the original images. Here’s a good post explaining how this technique works.

Unfortunately it hasn’t been updated in over a year, and the current version doesn’t work if you have PHP 5.3.2 (and probably 5.3.1) as it trips over this PHP bug. The fix is simple, get rid of call_user_func_array() and call the functions directly.

I had it installed here and it worked well enough but not perfectly. Here’s the post I made on the plugin’s support forum if anyone’s interested.

I don’t think the author will update the plugin again and in fact he’s looking for someone else to take over. Anyone?

The plugin has been running on my photoblog for the last hour ago and I haven’t noticed any problems yet. As a bonus, it also stops people right clicking and stealing saving my photos for their own use. I’ve since removed it as visitors were only seeing blank images. Oh well.

So, want to give a “fixed version” a go? Grab csprites-for-wordpress.zip and install it in the usual way. Support queries should be directed towards the plugin support forum. ;)

Oh yeah, there’s also the SpriteMe bookmarklet if you don’t want to go fiddling with WordPress plugins!

Related Posts

  • No related posts



My company, Crowd Favorite, is looking for the right person to join our team as a technical project manager (some shops call this position a “producer”). It’s a pretty interesting and challenging role, and an opportunity to work with a great team, the latest web technologies and a range of very interesting clients (startups to Fortune 500).

You will be charged with the success of interesting and challenging projects, while keeping our clients happy and engaged. Existing experience with WordPress will definitely be helpful as well. Day to day activities include:

  • building a collaborative working relationship with our clients
  • championing our clients’ best interests
  • championing our clients’ users’ best interests
  • a willingness to work with client requests, balanced with an understanding of how these requests will impact timeline and budget, and the ability to communicate these things in a collaborative way
  • simultaneously managing several 2-5 person teams with overlapping schedules and resources
  • identifying and managing and/or escalating issues that arise within projects (scheduling, quality, client pivot requests, etc.)
  • coordinating with our team to make sure the project is on track and is striving to meet the client’s overall goals
  • running internal meetings and meetings with clients, taking minutes, tracking next steps, clarifying requirements, documentation, etc.
  • receiving technical information from our development team, understanding it, and being able to deliver it in layman’s terms (when needed) to a client
  • tracking project and budget status (with the ability to identify early if we’re going off track)
  • identifying client requests that are outside the current project scope vs. those that are within the spirit of the project parameters
  • holding everyone accountable to agreed upon deadlines
  • the ability to take the temperature of the room and speak to people accordingly
  • understanding the full lifecycle of a project
  • understanding the importance of delivering both good and bad news, and a willingness to do so

If you are organized, self-motivated, love to help create brilliant things for the web, and want to work with a great team in beautiful Denver, CO – I want to hear from you.



I need your help. Go grab the development version of WP Super Cache off the download page and give it a whirl. I’m working on making the uninstall process less painful than it is in the current release.

I added an action on the deactivate hook for the plugin so when you deactivate it on the Plugins page it deletes the files the plugin created and removes the WP_CACHE definition from wp-config.php. It doesn’t yet remove the mod_rewrite rules from the .htaccess file though. Sometimes people put the WordPress rules in the same block of that file so removing the rules would stop the site serving requests! I will of course gladly accept code patches to do that job.

No more messing with uninstall.php now, just deactivate on your plugins page.

Besides that, the CDN page has an on/off switch and can use multiple hostnames now. The cache can be cleared when caching is disabled and dynamic pages can be served by using PHP mode rather than the slower “legacy mode”.

There are also numerous bug fixes so if you have a development site and a few minutes to spare why not give this a go? Please?

Related Posts



Dougal has a good post about using post formats (new in WordPress 3.1) in themes. His technique is pretty clean, but I much prefer letting Carrington handle the conditional code.

We landed support for post formats in Carrington Core over a month ago. To support a custom post format, all you have to do is create a new template in the /content and/or /excerpt directory:

  • /content/format-image.php
  • /content/format-aside.php
  • /content/format-video.php
  • /content/format-gallery.php
  • etc.

and it will be automatically used when needed.

One of the main benefits of the Carrington Core platform is that you can build themes without having to write logic in PHP. It makes creating advanced WordPress themes more accessible to designers who are still getting their feet wet on the development side.

Curious? Check out the documentation (each Carrington theme also includes a README file in each directory that explains what file names are supported there) and feel free to contribute to it.



Smarter Post Formats?

December 10th, 2010

One of the new features in the upcoming WordPress 3.1 release is the introduction of “Post Formats”. The intent of this feature is that you can select the Format for a post, and themes can give different formats specific display styling. If you are familiar with Tumblr, then you might already have an idea of how that works. There is a specific set of formats available: Standard, Aside, Link, Status, Quote, Gallery, Chat, Image, Video, and Audio. The heart of this is in some new functions, has_post_format() and get_post_format(), which tell us which format is set for the current post (normally while in the loop).

There have been a few articles posted already with examples of how to add support for this in your theme. And they all made me think, “Really? That’s how they want to do it?” Because I thought that it would work a little differently…

The examples I’ve seen all follow this basic format (pseudo-code):

while ( the_loop() ):
  1.     if ( has_post_format( 'gallery' ) ) :
  2.         // big block of HTML to format a gallery post
  3.     elseif ( has_post_format( 'video' ) ) :
  4.         // big block of similar HTML to format a video post
  5.     elseif ( has_post_format( 'image' ) ) :
  6.         // big block of similar HTML to format an image post
  7.     elseif ( has_post_format( 'aside' ) ) :
  8.         // big block of similar HTML to format an aside
  9.     else :
  10.         // big block of similar HTML to format other posts
  11.     endif;
  12. endwhile;

Those ‘big blocks of similar HTML’ inside if/elseif blocks bother me. When you are trying to edit a section of code like this, it can be very easy to lose your place. When I first heard about post formats, I thought we were talking about a new set of files in the template hierarchy. I figured that we would be breaking out the code for each format into their own files.

You see, we also recently got this nifty new function in WordPress 3.0 called get_template_part(). The TwentyTen theme uses this function to import different loop code depending on whether the visitor is currently viewing the homepage, a post, a page, or an attachment. The get_template_part() function helps your theme conditionally pull in variant blocks of code pretty easily. Being able to break these pieces out makes the theme easier to maintain, because you don’t have multiple subtly-different chunks of code embedded into multiple larger template files, with conditional if/elseif blocks to manage them.

For example, in TwentyTen’s index.php, there is a call like this:

get_template_part( 'loop', 'index' );

Which means: Look for a file named ‘loop-index.php’ in the current theme; If you don’t find it, look for ‘loop.php’; If this is a child theme, and you don’t see either of those templates, look for them in the parent theme. Each of the major templates (‘archive.php’, ‘author.php’, ‘category.php’, etc) makes a call similar to this, looking for a loop template specific to the appropriate view.

And I thought that a marriage of get_template_part() and get_post_format() was pretty obvious. You break your formats out into separate template files, and use get_template_part() to decide which template to load. So when I wanted to quickly hack up a temporary theme for the WordPreh site (which you should tell all your friends about), I put my idea to the test. I tore the guts out of the loop files, and created a set of format template files. My loop simplifies from the huge if/elseif block above down to this:

while ( the_loop() ):
  1.     get_template_part( 'format', get_post_format() );
  2. endwhile;

get_template_part() plus get_post_format() equals teh awesome!

So, when I’m displaying my list of posts, if the current post has post format ‘Link’, then we look for a file named ‘format-link.php’. If the current post has format ‘Aside’, we look for ‘format-aside.php’, if it’s a Quote, ‘format-quote.php’, regular posts look for ‘format-standard.php’, and failing all else, we use plain old ‘format.php’.

In the case of WordPreh.com, most of our posts use the ‘Link’ format, which is formatted radically differently from normal, beause I want the headline to link directly to the site URL in question (mostly Twitter statuses, sometimes blog posts) instead of the local permalink. So my ‘format-link.php’ template is quite different from most of the other ‘format-*.php’ templates.

The advantage in breaking these formats out into separate templates is that it lets me focus on just the block of code that I’m concerned with. I don’t have to hunt though 200 lines of loop code to find the right bit amonsgt a lot of similar looking bits. I only have to examine the 35 or so lines that affect the formatting for the particular view I’m concerned with. The disadvantage is that I have more loop and format files in my theme to keep track of, but I think it’s a pretty good trade-off.

So what do you theme developers think? Is this a step forward?

Related posts:

  1. del.icio.us daily blog post fixer plugin
  2. Post Meta
  3. Post thumbnails changes



Watching people respond to my recent post reminded me of a scene in When Harry Met Sally (it’s about 51:50 in – watch on Netflix).

To steal and paraphrase (badly): “If you asked me what my motivation was and I said ‘I’m not making any money’, that would mean my motivation is money. Just because I answer a question about how much money I see as a direct result of releasing free plugins doesn’t mean that my motivation is money.”

In the prior post I was answering the questions posed to me. The questions were about my motivation and were also explicitly about monetary benefits. I answered both, but certainly didn’t make them causal.

When I talked about the donations I received, I was trying to illustrate that money is not motivation for this type of Open Source contribution. If you’re getting a couple hundred bucks a month or 5 bucks a month, that amount isn’t that significant to most developers. I wasn’t even referring to the most recent design changes of the plugins pages on WordPress.org, though people falsely assumed I was and chimed in accordingly.

A number of people focused on this line from my prior post:

I actually feel strongly that the current situation is unsustainable. Unless the WordPress community at large starts to better recognize and reward the developers that create the tools that they use and rely on, the developers won’t/can’t continue to provide as they have.

and misinterpreted it. People again focused on money or the need to thank developers, but that’s not at all what I’m talking about.

I want the community to simply have a better understanding and respect for developer’s time. That can be many things. It is the attitude with which someone approaches a developer, it is having understanding if a developer is too busy to help, it is the community finding a other ways to get support (and support each other) rather than relying on the developer.

If you re-read my answers I think I actually make it fairly clear: my motivation for releasing free GPL plugins and themes is not money. I see things that can be improved and want to make them better. Because WordPress (and b2 before it) is Open Source, I have an opportunity to do this. My motivation to contribute to Open Source is driven by three factors:

  1. Self-interest. Most of the things I’ve written and released germinated as things I had a need for or interest in.
  2. Intellectual curiosity and satisfaction. I like tackling and solving problems.
  3. Philanthropy. My Open Source work provides me with a feeling of pride and satisfaction that I create things that help others.

That is my reward and motivation. Based on my conversations with other Open Source developers, I believe these are pretty common factors.

I don’t want or need gratitude. I want an understanding that using something I created does not give you a right to my time.

I want to not be personally lambasted if I don’t have time to update the plugin when there is a bug or something in WP changes and the plugin I wrote breaks. Expressing frustration is fine, speculating on or assigning motivation is not.

I want to be given the benefit of the doubt when something outside of my control, that I’ve spoken out about, happens (and not be accused of breaking it on purpose to drive revenue to WordPress HelpCenter).

I want to not read about me “not caring about my users” when other commitments and priorities have to come before my free contributions to the community.

I don’t think these are unreasonable requests. And I don’t think I’m alone.

Joost says don’t release plugins if you can’t support them. I find that statement to be naive. It is very difficult to predict the future. I would not have accurately predicted that WordPress would graduate from a technical community to a mainstream community and that WordPress would power 10% of the world’s websites today. 4 years ago as an independent developer I would not have predicted that I’d have a team of 15, a baby and more responsibilities and draws on my time than I could have imagined at the time.

I’d like to reiterate the statement I used to close my previous post:

There are lots of smart people with good ideas trying to do the right thing, I’m optimistic that solutions can be found. I’ll certainly continue to support that effort however I can.

This isn’t a situation without solutions, but it’s not going to happen overnight either – and it’s going to need to be led by the community.


I would like to emphasize that the issues discussed above are all related to free plugins and themes. As the WordPress community has transitioned from a majority of technical users to a majority of mainstream users I believe that it has also transitioned to being better served by commercial products and support.

WordPress users today expect things to work, they expect packaging and documentation, they expect support. These are all very reasonable things to expect from a commercial product.

We provide great support for customers of our commercial WordPress products directly through our support forums and via the documentation we write and maintain. This is part of our agreement with our customers; this support is part of what they are paying for.

We have our forums configured so that every post in a forum for one of our commercial products results in a task assigned to me personally. I then triage the posts and handle them myself or assign them out within our team. It helps me keep a good view on exactly what the needs of our customers are and helps identify holes and areas of improvement in both our products and support offerings.



Open Source Motivations

December 1st, 2010

David Hobson recently contacted me as he is doing research info business/financial models and motivation for Open Source projects. He sent me some questions that I answered; we thought that the answers might be interesting to the general community as well. David indicated it will be a little while before he finishes his research and encouraged me to go ahead and post the replies I’d sent him. I will, of course, post a link to his work when it is available.

Here are his questions and my replies.

What has been the motivation to churn out GPL plugins as well as support them? Branding is a benefit, both publicity and example of quality. However, I’m sure that doesn’t compare to the cost they require and you have plenty of branding and publicity already.

That is a complicated question, and one whose answer has changed over time.

When I first started contributing to the b2 community, it was a simple matter of publishing code I had written for my own blog/site. There was very little additional effort involved, the community was relatively small and technical, and I had the time to do it.

WordPress was created as a fork of b2 and it included some of the features I’d written for b2. Over time I ported the rest of them to WordPress, and began writing WordPress features as well.

When I created and ran the first design competition for WordPress it was because I believed that people’s vision of what could be done was too small. I saw the ability to do more and wanted to encourage people to push the limits on design. The results were excellent, hundreds of great designs were created and made available to the community.

WordPress evolved to support official plugins and themes and the community enjoyed explosive growth. I continued to create functionality that I thought was useful for WordPress and release it as plugins. This required more effort than it used to, because the WordPress community was becoming more mainstream and to be generally useful the plugins needed to be more polished, more forgiving of user error and required creating much more documentation.

Around this same time I was making the transition from an independent developer to a consulting and development shop that focused largely on WordPress development. I was hiring my first employees, getting a business off the ground, doing things like finding office space, worrying about making payroll, selling, etc. – my free time largely went away, and my ability to put out free plugins and themes went with it.

Now we have a team of about 15 people and my obligations to my team are greater than ever. I’ve also been blessed with a wonderful 18 month old daughter. She is a priority for me, the time spent with her and my family largely replaces time I previously used to contribute code back to the WordPress community.

Do you see indirect financial benefits in any other way, shape, or form?

I used to get about $100-200/month in the way of donations through my website. Unfortunately due to changes in the way plugins are presented on WordPress.org that has dried up to about $5/month.

I made it a priority to update all of our publicly released plugins this summer and hired an intern at Crowd Favorite to make this happen1. WordPress best practices evolve with each release, and plugins written properly just a few short years ago are badly outdated as a result. We’ve invested a significant about of money in this effort, and I honestly don’t expect to receive anything back from it.

Do the thanks and appreciation go anywhere near compensating the constant e-mail asking for support? What inspires your desire to give without return?

I actually feel strongly that the current situation is unsustainable. Unless the WordPress community at large starts to better recognize and reward the developers that create the tools that they use and rely on, the developers won’t/can’t continue to provide as they have.

In talking with other plugin developers, it seems fairly universal that the reward for a successful plugin is a deluge of support email that includes the worst kind of sense of entitlement, rudeness and ignorance. The community as a whole seems to expect to be able to pay nothing, yet received expert and individual help and support for free.

One of my goals with WordPress HelpCenter was to try to affect change in this area. My belief was that we could work with plugin developers to have them send support requests to WPHC, have WPHC provide commercial support services, and give a revenue stream back to the plugin developers. While WPHC has been successful overall, it has utterly failed in this effort. What we found was that regardless of the actual issue, users experiencing trouble with a plugin blame the plugin. They assume it’s a coding problem (even though it isn’t in most cases), expect free support and are so rude that we’ve lost people from our team as a result; ultimately having to refocus our efforts away from this type of support. One of my WPHC devs told me that he was amazed I kept my plugins freely available, that he would have killed them off long ago if he had experienced the type of feedback he was seeing now that I was forwarding my support requests to WPHC. I think this was a reasonable response, and that makes me sad.

I’m not sure what the solution to this is (my idea certainly didn’t get legs), but I know that I am very rarely willing to make the extra effort (and make no mistake, the process of packaging, documenting, writing extra code to make something as forgiving as possible to different environments and user error is typically more work than writing the code in the first place) to publicly release free plugins anymore.

I still see the WordPress community as a group that has wonderful potential and many bright spots. It’s for this reason that I am happy we are able to work within it. I really enjoy helping to push WordPress to become something more than it was before – for example via our Carrington Core platform and Carrington Build. We are also working on a new WordPress product that should really help WordPress adoption in environments where more sophisticated staging and deployment requirements are enforced.

I hope that the WordPress community and ecosystem is able to find a way to better support the contributions of individual developers as it continues to evolve. There are lots of smart people with good ideas trying to do the right thing, I’m optimistic that solutions can be found. I’ll certainly continue to support that effort however I can.

  1. Most of the work is done, we’re in the proces of final code review and polish. [back]



Congratulations to Michael Kuhlmann on the release of the Hope child theme for Carrington Business.

Hope Child Theme for Carrington Business

This commercial WordPress theme is a little different than most:

By purchasing the Hope child theme for the Carrington Business theme framework, you’re actively helping communities in developing countries by supplying them with the basic necessities we take for granted everyday — clean water, food, an education. All proceeds (100%) from this theme will go directly to World Vision.

What a wonderful idea, thanks Michael!



WP Super Cache 0.9.9.7

November 23rd, 2010

WP Super Cache is a full page caching plugin for WordPress that makes your website run much faster!

I’ve just released a new version and the biggest change in this one is the addition of Content Delivery Network (CDN) support thanks to Mark Kubacki who allowed me to integrate his OSSDL CDN Off Linker plugin. (Please go visit his blog and say thank you if you use this feature!)

The CDN support simply rewrites images, CSS and Javascript files so they point at a different hostname. That hostname can be another virtual host on your own server (aka “Poor Man’s CDN”) pointing at your WordPress install or a fully fledged CDN. If your CDN supports “origin pull” then all the files on your server will be copied there as they are requested by visitors. Otherwise you’ll have to transfer the files over manually.

Apart from that, bugs have been fixed, a few features have been tweaked including the uninstall script which has been streamlined somewhat.

I also added links (on the “Easy” settngs page) to some plugins and tools you may find useful in making your site run faster.

Problems? Go to the forum and someone may already have had that problem and solved it. If not, post there and you’ll get a reply.

Related Posts