Sayontan Sinha is a technology strategy consultant living in Houston, Texas. Coding is his hobby, as are philately, numismatics, classical music, creative writing and quizzing. He is the author of numerous pieces of WordPress software, including the ultra-popular Suffusion WordPress theme and the versatile Photonic (for Flickr, Picasa, Smugmug and integration) and FontMeister.

Sep 102010

With effect from version 3.7.5 of Suffusion any reference to Blog Features below should be read as Back-end Settings.

Thanks to Suffusion’s fairly complex back-end coding there are a few tips and tricks that will help you as a user use child themes effectively.

When Should I Use Child Themes?

The simplest use case I can think of for using child themes is if you have BuddyPress on a WP-MS (WordPress Multi-Site) configuration, because you will want to use the Suffusion BuddyPress Pack and you would want to prevent its files from getting overwritten every time you upgrade the theme.

Apart from that if you have significant changes that you want to  make to the layout, which cannot be accommodated through CSS alone, using a child theme is a very clean and elegant way to do it.

What Should I Know While Using Child Themes in Suffusion?

In this post I will highlight two tips and tricks regarding child themes in Suffusion.

  1. Import CSS
    As per WordPress guidelines this is the generic header of a child theme’s style.css should look like this:

    Theme Name: Son of Suffusion
    Theme URI: http://your-theme-url
    Description: Child Theme based on Suffusion
    Version: 1.0.0
    Author: Your Name
    Author URI: http://your-url
    Template: suffusion
    @import url("../suffusion/style.css");

    But here is a catch. You are typically going to select a skin for Suffusion. If so, you will have multiple stylesheets included in your page, depending on your skin:

    1. For light themes (if the theme is Gray Shade 1 on a light background): style.css → skins/light-theme-gray-1/skin.css
    2. For dark themes (if the theme is Gray Shade 1 on a dark background): style.css → skins/light-theme-gray-1/skin.css → dark-style.css → skins/dark-theme-gray-1/skin.css
    3. For Minima (and future skins): style.css → skins/minima/skin.css

    Note that this entire stylesheet hierarchy is loaded before your child theme is loaded, because of the complexity of the design. So by including your import statement you are actually re-inserting the base style.css file after all the other stylesheets. That will naturally cause display issues.

    As it turns out, the fix is easy. You have many options, actually:

    1. Go to Blog Features → Child Themes and set it to not inherit any stylesheets. You can then pick and choose your stylesheet declarations in this manner:
      Theme Name: Son of Suffusion
      Theme URI: http://your-theme-url
      Description: Child Theme based on Suffusion
      Version: 1.0.0
      Author: Your Name
      Author URI: http://your-url
      Template: suffusion
      @import url("../suffusion/style.css");
      @import url("../suffusion/skins/minima/skin.css");

      This way you are telling the theme to ignore the skin selection and you are handpicking the skins you want. Note that this method requires some familiarity with the theme’s internals.

    2. The second option works if you are using Suffusion’s internal optimization features from Blog Features → Site Optimization → Use Compression for CSS. You can choose to use either of the methods with GZIP compression. In addition, set the Blog Features → Child Themes to inherit the stylesheets. This method ignores any import statements that you might have in your child theme’s style.css
    3. The third method is even simpler. You can leave your Blog Features → Child Themes to inherit the stylesheets. But simply don’t put any @import statements in your style.css. That’s all. This is best suited if you are using the child theme as a replacement for the Custom Styles option.

  2. BuddyPress tag

    This is a very simple trick for using Suffusion with the Suffusion BuddyPress Pack. I have explained this trick on the BP Pack page too. If you are running WordPress in a multi-site mode and you want to use Suffusion, here is what you will see if you activate Suffusion as your default theme:

    You’ll need to activate a BuddyPress compatible theme to take advantage of all of the features. We’ve bundled a default theme, but you can always install some other compatible themes or upgrade your existing WordPress theme.

    Here is what you do to fix this message:

    1. Create a child theme with the following header:
      Theme Name: Son of Suffusion
      Theme URI: http://your-theme-url
      Description: Child Theme based on Suffusion
      Version: 1.0.0
      Author: Your Name
      Author URI: http://your-url
      Template: suffusion
      Tags: buddypress

      The last line is very important. It tells WP that your theme is BuddyPress-compatible.

    2. Download the files for the Suffusion BuddyPress Pack and put them in your child theme’s folder.
    3. Activate the child theme. The message goes away!!

    I could have added the "buddypress" tag to Suffusion by myself, but that really really slows down the approval of the theme. In fact I had added the tag in a prior version, but disappointed with the delay in it getting approved I separated BP support from the core theme.

  3. Sidebar Management

    This is a very cool trick if you want to create your own templates with different sidebars etc. I introduced this feature in version 3.6.6 after an interesting discussion on the support forum. Note: You don’t need to do all of this if you are adding a regular template that has the same number of sidebars as the rest of your site.

    The core of the requirement is that you might want to create your own templates that have specific arrangements of sidebars and other widget areas. For example you might create a template for a custom post type that uses 1 sidebar while the rest of your site uses 2 sidebars. How would you tell Suffusion that this template has 1 sidebar? Given that all components of Suffusion are fixed-width, you cannot simply avoid calling a sidebar function – that will result in an empty space.

    So how is this to be done? The answer: using filter hooks. I introduced two filter hooks in 3.6.6 – suffusion_filter_template_prefixes and suffusion_filter_template_sidebars. In the functions.php file of your child theme, put in this code:

    add_filter('suffusion_filter_template_prefixes', 'my_custom_template_prefixes');
    function my_custom_template_prefixes($template_prefixes) {
        if (is_array($template_prefixes)) {
            $template_prefixes['my-custom-template-1.php'] = false;
            $template_prefixes['my-custom-template-2.php'] = false;
            // In the above replace my-custom-template-1.php etc with the name of your template file.
            // For every custom template that has specific sidebar requirements create a line such as the above.
        return $template_prefixes;
    add_filter('suffusion_filter_template_sidebars', 'my_custom_template_sidebars');
    function my_custom_template_sidebars($template_sidebars) {
        if (is_array($template_sidebars)) {
            $template_sidebars['my-custom-template-1.php'] = 1;
            $template_sidebars['my-custom-template-2.php'] = 1;
            // In the above replace my-custom-template-1.php etc with the name of your template file and "1" with the number of sidebars you need.
            // For every custom template that has specific sidebar requirements create a line such as the above.
        return $template_sidebars;

    Be careful about not putting any empty spaces or new lines before and after the php tags! Otherwise you will get the notorious white screen of death.

    Once you have this code in place, you can have your custom templates in your theme with their unique sidebar arrangements, and not worry about Suffusion updates overwriting them.

Note that the last feature is not currently available, but it should soon be, based on when the next version is approved.

As I find more use cases of this sort I will post them for your consideration.

Aug 302010

It has been brought to my attention that an old problem with corrupted download files from the WP site has cropped up again. If you are seeing a message saying that the “Theme is broken” or if you get a “white screen of death” upon activating the theme, follow the instructions here.

Version 3.6.5 of Suffusion went live today. Actually first 3.6.4 went live, then some users pointed out a rather serious flaw, then I immediately patched it. The theme approvers, who have really improved their approval process a few notches up approved it rather quickly too. The following are a part of this release:

  1. New Features:
    One of the key focus areas of this release was server load reduction. The overall list of additions is as follows:
    1. There is an option to not include the generated CSS code in your page header. Instead the CSS gets written to a file and that file is linked in the page. This is good news for SEO. The bad news is that it needs some tweaks and some trial and error to get to work properly, like changing of the .htaccess file, or making use of Suffusion’s internal compression techniques etc. You can try enabling the option from Blog Features → Site Optimization → Auto-generate CSS file for customization options.
    2. In addition now all the options can be cached in the database. Earlier I was storing only the saved options in the database and leaving aside the default options. The downside of the older approach was that as my options page got massive, the memory footprint of the front-end pages started increasing. This will reduce memory footprint by at least 2MB – a significant reduction. You can control the settings here: Blog Features → Site Optimization → Cache dynamic options.
    3. Judging by the massive outrage on the support forum due to a change in the featured content behavior, I have added an option to let you include duplicate content from the featured content section on your main page as well. Control the settings from Blog Features → Featured Content.
    4. I have added options to include posts by post id or by tag in the featured content. Control the settings from Blog Features → Featured Content.
    5. I have also enhanced the Search results page to show the search term at the top. Additionally now there is a search form included on the search results page, along with an ability to highlight the matches.
    6. A user on the WP forum pointed out that if your posts were in multiple pages (in an archive view), subsequent pages didn’t show the page number in the title. I have addressed this. The page number is now appended to the title if you are on the second page or higher. Additionally the blog sub-title is a part of the page title on the home page or on the front page.
    7. I have added “nonce” checks to the admin pages to ensure better security.
    8. There is a new Turkish translation, thanks to Metin Selçuk.
  2. Bug Fixes:
    1. If you were using Suffusion’s inbuilt compression techniques, the page would fail XHTML validation. I thought that I had fixed it last time, however that was not the case. It is now truly fixed, I hope!
    2. In case of archive views with no posts (e.g. nothing found in the search results page) there was no content displayed. This has been fixed.
    3. While working at a furious pace to support some of the review criteria at WP I had broken backwards compatibility for menus. If you were on a WP version older than 2.9 you would have seen a fatal error. I have rectified this. Of all the bugs I have had to fix, I am sorry about this one most, because I am normally very good with backwards compatibility.
    4. There was another backwards-compatibility issue, but this time with PHP. There was a call to memory_get_usage, which is not available in really old versions of PHP (< 4.3.2) and is available with partial support in other versions of PHP. I have fixed this too.
    5. I have fixed a bug that was preventing child theme CSS from loading correctly. Note that if you have Suffusion’s GZIP compression disabled, child themes need to have all stylesheets explicitly invoked. In other words, not only the base style.css, but all the skin-specific CSS files have to be added.
    6. There was a bug introduced in the comments section, where a CSS element was being declared twice. I have fixed this issue.
  3. Changes:
    1. Again, there are minor stylesheet tweaks to the Minima skin
    2. As a part of some code housekeeping I have enqueued the stylesheets for the admin pages.
    3. I have also replaced the call to get_bloginfo('name') in the header with get_bloginfo('name', 'display') so that plugins that apply filters to the blog title work in tandem with the theme.
    4. I have restyled the blockquote element so that it looks a bit better.
    5. There are updates to the German (Du and Sie), Norwegian, Swedish, Dutch, Danish, Polish and French translations. Thanks, translators!

On a side note, I have closed the “Feature Requests” section of the support forum. As the theme grows in complexity and popularity, the support forum has been swirling out of control and I had to draw the line somewhere. Since the Feature Requests section saw a lot of traffic and a lot of requests for features that I simply am not in a position to provide, I have closed off that section of the forum.

Aug 102010

After a lot of delays and innumerable back-and-forth exchanges, a version of Suffusion has finally been approved – 3.6.3. This is essentially a combination of a large number of features and fixes, from release 3.5.8 through 3.6.3. If you look at the Change Log.txt file in the theme folder you will get an idea about how big the changes actually are:

  1. Bug Fixes
    There were quite a few bug fixes, actually:
    1. Fixed a bug that was displaying the “Comment form closed” message even if the settings were done to hide them. The slow approvals mean that questions get asked hundreds of times on the forum – this happened to be the top question over the last month.
    2. Fixed a minor problem with the style resets that I introduced in 3.5.6. This particular bug was causing Gallery items to spill over into a new line.
    3. The “Page of Posts” template was showing a NOTICE message with WordPress debugging turned on. I have fixed this.
    4. In my zeal to optimize code I had removed a bit too much in the “Now Reading” library page. The page was throwing up an error – that has now been fixed.
    5. Fixed a bug in the suffusion-tag-cloud short code. This was assigning an incorrect value to the number parameter.
      Note: You can use this short code in a text widget to display a tag cloud. It gives you a lot more control in terms of the number of tags you want to show and the sizes you want to set for each.
    6. Fixed a bug in the Custom Post Types section that was not saving post types with the correct index.
    7. Fixed a bug that was causing single quote characters in the post title to cause invalid markup.
    8. Fixed a bug in the “No Sidebars” template where the maximum width of the image was being set incorrectly.
    9. An incorrect control switch was being used to determine if custom font settings were to be used. This has been fixed.
      Note: If your fonts suddenly seem to have changed, go to Visual Effects → Body Font Settings and select “Custom Styles” for the first option and save.
    10. Fixed a couple of XHTML validation bugs. The first would occur if you have a gradient image selected for the header, and the second would occur if you had opted to use compression (GZip or minification) on the CSS files.
  2. New Features
    There were tons of new features added.
    1. New Widget Areas
      There are nine new widget areas. Technically there are five, but the fifth is a special kind:
      1. Widgets Above Header – This is in response to requests to be able to display ads above the header.
      2. Header Widgets – This, again, is in response to requests to be able to use the blank space near the blog header.
      3. Wide Sidebar (Top) – This is widget area that sits above both your sidebars if your sidebars are on the same side. Otherwise this is not shown. It is as wide as both your sidebars combined.
      4. Wide Sidebar (Bottom) – This is widget area that sits below both your sidebars if your sidebars are on the same side. Otherwise this is not shown. It is as wide as both your sidebars combined.
      5. Ad Hoc Widgets 1 to 5 – This is something new and quite interesting. There are 5 new widget areas called Ad Hoc Widgets 1, … Ad Hoc Widgets 5. You can add any widgets you please there. You can then invoke these widget areas from within your posts or pages, if you want. You have short codes to do this:
        [suffusion-widgets id='3']

        You can use any number from 1 to 5 for the id.

    2. As stated above, the short code to display ad hoc widgets, suffusion-widgets is new.
    3. There is a new page template for logging in, called “Log In”. You can use this template to create a login page for users. Mind you, this doesn’t tie up with the Meta Widget directly. You have to explicitly provide the link to users to log in.
    4. You can now customize the labels on your Comment form. Head over to Blog Features → Comment Settings to do so.
    5. There is a new Polish translation, thanks to Robert Maculewicz!
    6. JavaScript files are now added to the bottom of the page by default. You can change this by going to Blog Features → Site Optimization.
    7. Added capability to display text in multiple columns using short codes [suffusion-multic] and [suffusion-column]
    8. Added translation support for child themes.
    9. Added support for assigning menus to locations in the Appearance → Menus section of the admin panel. This comes with a change of behavior: if you assign a menu to the Top Navigation Bar and the Top Navigation Bar is hidden, it will still show up. Additionally if a menu is not assigned to a navigation bar in the Navigation Bar Setup options, but is assigned through the Menu administration page, the menu will show up.
  3. Modifications
    Some of the existing functionality has changed:
    1. Code Optimization
      This is yet another release where I have reworked the back-end. The impact this time, though, is not severe. I had noticed, as had quite a few users that the options panel had become quite sluggish. Of course, when you are looking at 400+ options loaded from a 6000 line file into JavaScript memory you are bound to have performance impacts. So I did a subtle split of the options menu and prevented it all from adding to the JS footprint. Earlier you had this:
      Previous Look

      Previous Look

      You now have this:
      New Look

      New Look

      I have essentially moved all the horizontal tabs into the side menu. The back-end is now noticeably quicker than what it was in the previous releases.
    2. I made minor CSS changes to the Minima skin. I will continue to tweak the style sheet in minor ways till I am convinced it looks good.
    3. I have switched off the “Comment form closed” message by default. Users who wanted to see the message will need to revisit the settings in Blog Features → Comment Settings.
    4. Code Housekeeping:
      1. Replaced occurrences of include(TEMPLATEPATH . '/searchform.php') with get_search_form(). This is as per the new approval process and it improves child theme support.
      2. Replaced occurrences of file includes with get_template_part(). This is as per the new approval process and it improves child theme support w.e.f. WP 3.0.
      3. Removed support for comments from WP versions older than 2.7. Suffusion anyway has been relying on at least 2.8 for widgets since a long time, so this code was redundant.
      4. Added call to new function comment_form() in comments.php. This is as per the new approval process, though it is quite counter-intuitive. I had to leave the old code in place, because there are still users who use WP 2.9 and for them the new function will not work.
      5. Moved licensing information to style.css file. This doesn’t impact you as an end-user.
      6. Enqueued all JavaScript file inclusions.
    5. Updated Brazilian Portuguese translation, thanks to Alcides Soares!
    6. Changed behavior to exclude posts from the static Featured Content section in the rest of the content on a page.

Hope you like this combined multi-release.

Aug 032010

Suffusion is celebrating its first birthday today! I am glad that I managed to slug it out for a year and come up with a decent theme that people haven’t utterly and totally slammed!

Happy Birthday, Suffusion!

As is the case with most perspectives, I wanted to spend a few paragraphs explaining my plans for the next few months. I have already got the theme where I wanted in terms of most of the key features. Barring a dedicated photo-blog template there are very few noteworthy features lacking in the theme. Mind you, photo-blogging templates have been on my agenda since quite some time, but I had always planned to have those in the 4.x.x releases. Given that I am currently developing 3.6.0, there are still several weeks to go before I get there. Of course, when I had planned to do photo-blogging in 4.x.x I used to often jump releases, like go from 2.6.6 to 3.0.0 (that was actually a milestone release with a magazine template). But since the last few months my release strategy has changed and I have bundled several milestones with minor releases. For example you have had BuddyPress support, lots of new layouts, some new skins, advanced features like custom post types etc. So for all you know, I might actually provide photo-blogging earlier than expected.

To provide you with some insights, I maintain a “parking lot” list of items that I intend to deliver. This list already has more than 40 items with varying levels of complexity, and some of the items are feature requests and some are bugs. Whenever I think of something that would be nice to deliver, I go ahead and add it to the parking lot. Then, after submitting a particular version when I start off with a new version I go through the parking lot and pull out things that I think I can deliver in a particular release. Some of those make it to the next release and some others find their way back to the parking lot. The size of the parking lot has been around 40 for quite a few weeks now, so that means I am adding items at the same rate as implementing them. In general my focus has been to implement bug-fixes first, then tackle feature requests.

So what can you expect from now on? There will be new features delivered – small and big. I will also focus on theme aesthetics a lot more. As a kid I used to be good with art, but after I grew up I don’t do very well with making things look pretty online. So you will have:

  1. Better Typography
    I have been reading up a fair bit on typography the last few weeks. While I fail to spot the nuances of sites with so-called good typography, I do understand that a lot of people have a far more discerning eye. I am planning to overhaul the theme’s typography capabilities in the next few months.
  2. Prettier Designs
    In release 3.5.6 I made a release of a minimalistic skin. I am going to add quite a few others to the mix. Mind you, this is a singularly tough task for me as a developer, not a designer. My guess is that you will see 2-3 new skins come up.
  3. Better Theme Skinning
    A lot of people have complained about the fact that the navigation bar look and feel cannot be customized through options. Methinks thou doth ask too much, because the most extensive tutorial I have written so far deals with precisely the customization of the navigation bar. However, I do have plans to provide skinning capabilities to a handful of other places. It is just that this is an extremely tedious task that doesn’t teach me anything new.
  4. Some Stunning Widget Area Concepts
    Version 3.5.0 had natively tabbed sidebars, 3.5.4 came with 10 widget areas, the unreleased 3.5.8 had 12 and the release you are hopefully going to get, 3.5.9 has 17. I have already increased the number to 19 in 3.6.0 and I can assure you that the final number will be close to 30. I basically intend to provide users with the capability to have a widget area wherever they need one. In addition, just like the tabbed sidebar, you will see a bunch of other effects added to your sidebar rendering. That is all I am going to say at this moment – you will have to wait for the feature to actually see all of this in action.

And yes, I will be focusing on documentation of the theme along with a demo site. I have often started putting these together, but found it too boring a task to continue.

That’s it for now!

Jul 282010

A disclaimer
I would have posted this on WP’s official site if it allowed me to post, but since it doesn’t, I am publishing it on my own blog. This is meant as an appraisal of the new theme approval process on WordPress.

On 9th June 2010 WordPress made an announcement that it was expanding the theme review process. There was a call for volunteers to support theme reviews. This was indeed good news, particularly if you were a theme developer. For a long time Joseph Scott had been the sole approver of themes on WP, and though his work was impeccable and his reviews very good and accurate, if he was traveling or unwell or on holiday theme approvals tended to get delayed. This was by no means a deal-breaker, but having more people looking at themes definitely meant that things would get better.

Soon after the announcement a few things happened that were moves in the right direction:

  1. Quite a few folks signed up in response to Joseph’s post, so there are more volunteers now.
  2. A dedicated Trac project was setup for approvals.
  3. Every time a theme got submitted the corresponding Trac ticket got emailed to the theme author so that he/she could follow what was going on with his theme.
  4. There was much better focus on the quality of code in a theme. Actually the focus was more on writing code that didn’t generate “silent errors” or PHP NOTICE messages, but nonetheless adhering to this is something that keeps down the size of logs on your server.

But that is where the goodness stopped. One of the key things which I had hoped would be addressed, speed of approvals took a nosedive. To cite an example earlier when I submitted a theme version it would take around 1-3 days to get approved. It took 1 day if I submitted it on a weekday and typically 3 days if I submitted it on a Friday. In some cases if it was vacation time then the versions took about a week to 10 days to get approved, but this was more of an exception to the rule. Normally on a day you would see 2-3 versions of different themes getting approved, and on occasion the number of approvals even ran into double digits.

However, with the new experiment somewhere something went wrong. Now you have around 1 theme being approved in 2-3 days, which doesn’t seem right. To drive my point home, version 3.5.7 of Suffusion got approved on 10th July. Today is 28th July and only nine more versions of different themes have been approved (including a version of the WP default theme Twenty Ten). This is a far cry from how things happened earlier. I normally used to wait for about a week before pinging the folks to check the status of a version, so for 3.5.4 I sent out a message asking what was up, and this is what I received:

Thanks for the note.  Unfortunately there is currently a backlog of themes in the review queue.  We are working on it.  Themes are being reviewed in the order in which they were received.  Thank you for your continued patience.

I didn’t know at that time how much the backlog was or how much longer the next version of Suffusion would take for approval. I found out later how you can estimate the potential wait time. The backlog, as I know now, is well over 100 theme versions at present. So somehow adding more people slowed down the process.

The delay also brings in a bunch of associated problems. Currently if you have a theme version in the queue and you submit a new version, the older version gets deleted and the newer version goes to the back of the queue. So as a theme developer:

  1. If I have submitted a bug-fix for the theme 3 weeks back and that hasn’t been approved, how do I ensure that my users get the bug-fix? Distribute it from my site (unapproved)? Doesn’t sound safe.
  2. If I have submitted a version 3 weeks back with some bug-fixes, then I discover some more bugs in the submitted version what do I do with them? If I resubmit a new version I go to the bottom. So I add another month or so to something that has already been in for 3 weeks? Ouch. Incidentally I have had this happen to me quite often, most recently with version 3.5.8 and 3.5.9.
  3. If I choose not to submit the bug-fix for the older version but let the bugs be approved (these are niche bugs that cannot be caught in the approval process, mind you) and then I submit the new version, I am risking users staying with a buggy version for an indeterminate number of extra weeks.

So somehow this review process discourages active theme development, which I feel is counter-productive to the whole experiment.

How can the experiment be improved? I have a few suggestions:

  1. Improve targets. Set a target saying that each approver should aim to disposition a new theme for approval every weekday (or some such figure). If you have 10 approvers, this will take care of tackling 10 themes everyday and bring down the backlog much faster.
    I can almost hear people say, “What does he know?”, or “He is speaking like a consultant”, or “He is oversimplifying”. Well, I have been doing free support for Suffusion since late last September and that is how I keep my backlog down. Every morning I go through all outstanding support requests, take a crack at answering them if they haven’t been answered by someone else, then carry on with my regular job for the rest of the day. If a request comes in during the day, if I am not doing much then I respond to it (or if I think others can respond, I skip it). This has been a largely successful way of staying on top of things. I have responded to more than 3000 posts on my support forum at around 10 posts per day.
  2. Don’t de-prioritize existing themes in the queue upon newer submissions. I love putting out new functionality in the theme, and anyone with any experience whatsoever with Suffusion will agree with me in the fact what I provide is not just cosmetic, but hard features. Sometimes a new version is required to patch a bug. Getting pushed to the back of the queue is very off-putting, because it simply adds so much more in terms of wait time for approvals.
    This simply encourages parallel avenues of theme distribution because developers know that their work will not be approved soon on WP’s official site, so they distribute it from their site. And that is where they can start putting in stuff like tracking code etc into a theme. Mind you, quicker approvals will make this a non-issue, but the current wait of a few weeks is a bit too much.

As a concluding remark, the topic of this post and the issues in the post are not mission-critical and I am sure people have more interesting things to do. However I am sure that the free theme developers would be quite happy with these modifications, particularly since some of them invest a lot of energy in building their themes.

Jul 112010

Earlier today Suffusion obtained its 100th rating on This puts it it rather exclusive company – it is now the 5th theme to obtain this distinction. The four others to have reached this landmark before me are:

  1. Atahualpa – Really the inspiration behind Suffusion and in my opinion the gold-standard of theme customization, Atahualpa is way ahead on all statistical measures on WordPress: most downloads and most ratings. At the time of writing it has been rated a whopping 418 times on WordPress!!
  2. iNove – Another theme that has been around for quite a long time, iNove has been rated 193 times at the time of writing.
  3. Mystique – This is a really popular theme with WP users because of its catchy design. The only theme younger than Suffusion to have been rated more times than it, Mystique has 140 ratings at this point. Its current popularity will probably ensure that it will go over iNove in the near future.
  4. Thematic – It is no surprise that Thematic is the only free theme that has been in the top 15 popular themes since as long as I can remember, and that is very long! No other theme – Atahualpa, Mystique and iNove included has managed this distinction. Thematic is a very clean and well documented theme framework that most people swear by. If you are a theme developer, look at Thematic (and Hybrid) to see how to do it right. At present Thematic has been rated 111 times.

Though unlikely it is possible that I have missed a few here. So if you are aware of any other themes that should be here by all means let me know.

Thank you users, for using Suffusion and voting for it to let people know that you have liked it!

Jul 102010

After the long wait for the previous version, 3.5.7 got approved rather quickly. As stated in my earlier post of today, there was a critical bug in 3.5.6 that had slipped through unnoticed. This is the change summary:

  1. Fixed a critical bug that was causing the “White Screen of Death” issue while posting comments.
  2. Fixed a bug where the “full content” posts feature was not working in the Excerpt, Tile and List layout modes.
  3. Did some minor code cleanup.
Jul 102010

A rather serious bug was brought to my attention a couple of hours back, that would prevent users from posting comments (I had been wondering why I had received no comments yet on my last announcement!). This bug was causing the ill-famed “white screen of death” whenever users tried to post comments. I took quick steps to resolve this and I have provided the patch at two places:

  1. The original post reporting this on support forum.
  2. At the WordPress forum itself.

And for good measure I am reiterating the fix here:

  1. Open the file comments.php.
  2. Look for this block of code near the top:
           global $suffusion_unified_options, $post;
           foreach ($suffusion_unified_options as $id => $value) {
              $$id = $value;
  3. Either delete it or comment it out.
  4. Use this code instead:
           global $options, $suffusion_options, $post;
           foreach ($options as $value) {
              if (isset($value['id']) && isset($value['std'])) {
                 if (!isset($suffusion_options[$value['id']])) {
                    $$value['id'] = $value['std'];
                 else {
                    $$value['id'] = $suffusion_options[$value['id']];
  5. Save and you should be fine.

I have already submitted version 3.5.7 to address this, but given that 3.5.6 took such a long time to get approved I wanted to provide this code to users upfront.

Jul 092010

Finally! Finally a version of Suffusion got approved! This is the longest it has ever taken between two versions to be approved. And also, this is the first time in the last 3  months that I am actually posting the release note after the actual release!

This release is actually quite a big one from several points of view. Firstly it has all the changes that I documented in the release notes for version 3.5.4. This includes key features like CSS compression, some new hooks, flattening of the WP 3.0 menus etc.

In addition here are the changes for this version:

  1. Code Housekeeping
    Normally code housekeeping is a footnote in my release notes. But in this release it does get the spotlight and with good reason.
    1. After some feedback from the reviewers at WP I put in numerous checks at various places in the code that shouldn’t impact you as a user, but they do minimize the volume of your server logs. Mind you, this was a very large-scale effort that completely diverted the focus from my main goal for this release. But I guess it was worth its while.
    2. I have reduced repeating CSS code for two sets of elements: the l3nav … l8nav elements, which you see in the “full-sibling view” in the breadcrumbs for pages, and the navigation menus. Again, these were quite big as changes, because of the large-scale visual impact.
    3. I have modified the framework to handle compression better in case you are using a child theme. Some parameters have been provided in Blog Features → Child Themes to let you control the different stylesheets you want to include in your child theme. You can ignore this if you are broadly staying within the confines of the the theme’s look and feel even in a child theme.
    4. Another thing I did was to move the individual skin files into their own sub-directories. This gave me the advantage of defining custom configurations for each skin.
  2. Bug Fixes
    1. In cases where the number of posts was very high (a few hundreds if not thousands) the magazine template tended to fail. Apparently this was a problem with a standard WP function call, get_posts().  This has now been fixed and in the process the magazine template has been made lighter too.
    2. There was one bug that was showing incorrect WP 3.0 menus in the top navigation bar. This has been addressed.
    3. A very long-standing issue was the fact that TimThumb refused to work on WP-MS / WP-MU. Apparently the “issue” was my own absentmindedness, which resulted in my wrongly assuming that the problem was more complex than it actually was. Anyway, this issue is now fixed. WP-MS users can harness the full power of TimThumb image resizing in their installations.
    4. In cases where the static tabbed sidebar was enabled, the special page layouts like “Singe Left, Single Right sidebars” were going completely haywire. This issue has been addressed.
    5. There was a bug that was causing an inaccurate rendition of the header and the top and main sidebars when all of them were set to have backgrounds as wide as the window but contents aligned to the wrapper. Though this was never reported, it needed fixing for a very important reason (see below)
  3. New Features
    1. After several months Suffusion has a new skin!!! This is truly a different skin in terms of styling, look and feel etc. The skin is called Minima and is currently available on a white base with some black highlights with very very few images. Of course, you can pick and choose whatever you want as your colors. I have changed my personal blog to use the new skin. Check it out. There might be some chinks with specific GUI functionality like widget drag-and-drop on the blog pages, but if you stick to something that doesn’t use fancy features you should be okay. As compared to the standard Suffusion look, there are a few things that will jump right at you in Minima.
    2. One of the things you will see that will jump right out in Minima is a continuous navigation bar, instead of the traditional tabs. Particularly if you are running a news site this kind of a look will serve you well. You can control this setting in Blog Features → Main Navigation Bar Setup and Blog Features → Top Navigation Bar Setup, by having a tabbed vs. continuous look. I am not very happy with the color combinations that I managed to get on the dark themes for the continuous navigation bars, but that is something I will fix in the near future.
    3. I have added a new option to switch rounded corners off across the site. Check out Visual Effects → Theme Skinning for setting this.
  4. Feature Changes
    1. I have made significant typographic enhancements to the theme. I have basically followed best practices and guidelines for this, so if you don’t like the new tweaks to line spacing etc you know whom to blame!
    2. Also in typography I changed the base font size from 0.75em to 12px. Apparently some people were having issues rendering the fonts on their browsers because of different browser setups. All other font sizes are left as percentages.
    3. I have modified the theme option menu to be enabled if the user had the capability to “manage options” rather than “edit themes”. This is of particular impact to folks using WP-MS, where previously only the Super Administrator was able to manage theme settings. Regular Administrators were unable to do so even in themes that they owned.

Now a few lines about what didn’t make it to this release. One feature that I really wanted to put in was a few more sidebars, particularly in the header area etc. But unfortunately due to the extremely high volume of work that I had to do, this got pulled. But I promise it will be there in the next release. That’s about it – I am off to relax after a few very taxing weeks working on the theme.

Jun 222010

I submitted version 3.5.4 on Sunday, before flying out to the UK. I see that WordPress has still not approved it, so I await the release patiently. This was a big release in terms of the number of fixes and enhancements, so without much ado here is the list:

  1. Optimization
    I did some optimization on multiple fronts:
    1. I introduced a new section under Blog Features called Site Optimization. Most optimization activities have been moved or added there.
    2. I have merged the contents of bgiframe.js with suffusion.js. This is to reduce the overall number of HTTP requests
    3. I have merged the contents of dbx.css with style.css, again, to reduce the overall number of HTTP requests.
    4. You now have options to choose GZip and minification at various levels. Mind you, different plugins can achieve this at various levels for you. In general the capability built into the theme is competent, but not all-encompassing. If you are using a plugin and are happy with it, by all means stick with it. But if you are not using a plugin or don’t want to use one or you don’t have , feel free to give this a shot. From what I have found out this does improve performance on Google Page Speed and on Yahoo YSlow. Feel free to disable the optimization if it doesn’t work well for you:
      1. You can GZip and / or minify the theme’s CSS files from the Blog Features → Site Optimization menu
      2. You can GZip the internal WordPress JavaScript files (like JQuery). Note that these files are already minified, so you don’t have to do anything on that front. Also note that the GZip process doesn’t apply to Suffusion’s JS files (like the JQuery Cycle script for featured content). This is due to a shortcoming in tying together WP’s inbuilt function wp_enqueue_script with the GZip capability. Plugins can still do this for you.
      3. You can also GZip your main content, all from the same Site Optimization section.
  2. WP 3.0 Retro-fixes
    WordPress changed a few things between its last RC version and the final release version. I took care of those in this release:
    1. WP renamed the support type for navigation menus from nav-menus to menus. Because of this the navigation menus seemed to not be working in version 3.5.3 with WP 3.0, while they worked for WP 3.0 RC and Beta versions.
    2. WP also renamed the function is_post_type to post_type_exists. This was causing custom taxonomies to not be associated with custom types in version 3.5.3 (again, this was working for the RC and Beta versions). I have addressed this too.
  3. More WP 3.0 Support
    I have added an option to “flatten” the navigation menus of WP 3.0 in the Navigation menus. Using this setting you will no longer see the menu names in the navigation bar. I have also included WP’s standard code to include feed URLs (this is internal and shouldn’t make a difference to you as a user).
  4. New Widget Areas
    I added two new widget areas: Sidebar 1 (Bottom) and Sidebar 2 (Bottom). These are respectively positioned below Sidebar 1 and Sidebar 2 and will be on the same side as the main sidebars. You can style these sidebars individually, so effectively you can have two sets of tabbed sidebars in the same column.
    As an aside the total number of widget areas in Suffusion is currently 10.
  5. New Action Hooks and Filter Hooks
    A lot of new hooks were added, both as action hooks and filter hooks. You can use these hooks to put in some fancy stuff either through the custom PHP method or through the child theme method. Here are the hooks:
    1. Action Hooks
      These have been added with respect to the sidebars. You can use these to put in some custom markup above your sidebars or between the sidebars or below them.
      1. suffusion_before_first_sidebar
      2. suffusion_between_first_sidebars
      3. suffusion_after_first_sidebar
      4. suffusion_before_second_sidebar
      5. suffusion_between_second_sidebars
      6. suffusion_after_second_sidebar
    2. Filter Hooks
      One filter hook has been added:
      1. suffusion_get_post_title_and_link – You can use this hook to append or prefix the post title with some other text. E.g. You can, as one user requested on the forum, have your own image before the post title, or as another user requested, put in a date in the list layout view. Currently the tile layout doesn’t have this hook, but it will have it in version 3.5.5.
  6. Miscellaneous Changes
    I fixed a small bug brought about by my use of the post_class function. This was causing attachment views to show up unstyled. Now they will get the post class. Another bug I fixed was related to the “Page of Posts” template. For some users this seemed to be ignoring the “Display All Posts” I also made minor modifications to the different layout files by adding global variables that indicate what kind of layout you are using – blog, tile or list. Again, this kind of a change doesn’t impact you, but it is useful if you are going to write your own templates. The last change I made was the addition of an option to disable the use of the body_class internal WP function, because apparently PHP 5.2 has some issues with it. Frankly, this wasn’t my problem to solve, but then again, such things have never prevented users from asking me to resolve their issues.

Now for the next release. I can say for sure about two new features in 3.5.5. One is a couple more widget areas (a lot of people have been asking for widget areas in the header). Another is the use of TimThumb with WP-MS, something that has been in my To-do bucket ever since I released BP support for the theme. As for more features, I need to see what I can fit in my timeline.

While it has been humorously suggested that I am a machine, and while a lot of users on the support forums make demands from me seriously assuming I am a machine I have to remind you what I mentioned at the start of the post: I am in London this week, hence my response times and development speed will be off. Also note that I am not in charge of approvals at WP, so please don’t keep posting questions asking when version 3.5.4 will be available – I have no visibility into that.