Featured Stories

New Responsive WooCommerce theme Sooperstore released

Ok it's pretty embarrassing how long it's been since I posted a blog update here. My last update was early July saying that a new theme was on the way "within a week" if I recall correctly. Well fast forward a week or 8 and I'm happy to announce that Sooperstore has finally been released! We actually released another theme in...

Continue Reading

5 Stunning Responsive WordPress themes

While responsive web design is a relatively new phenomenon, the WordPress theme development ecosystem has exploded with a plethora of stunning responsive WordPress themes over the past few months. It's one of the things that I really love about the WordPress community - the speed at which theme developers themselves are so responsive :)...

Continue Reading

High Performance WordPress – Part 4

Alrighty folks, if you’ve been following along with the High Performance WordPress post series you will by now have experienced the awesomeness of a WordPress website running on nginx. If you’ve not been following along what are you waiting for? Go check out the following posts first: Part 1 - VPS Setup Part 2 -...

Continue Reading

High Performance WordPress Part 3

Hey folks I’m back with Part Three of the High Performance WordPress guide. If you’ve not done so already, be sure to check out Parts One and Part Two which will take you from a position of having no server to a fully configured VPS machine running the kickass nginx web server and mysql - or a LEMP environment as those in...

Continue Reading

Well Hello There!

Hey there thanks for stopping by! ThemesForge is all about WordPress Themes. We don’t make ’em - but we pretty much live ’em, breath ’em, review ’em, rant about ’em and hope to keep you the you the discerning reader fully up to date about what is going on in the WordPress themes ecosystem.

Latest ThemesForge News

Must read WordPress theme development tips from Carl Hancock

19 May 2011 comment icon0 | Categories: tips

Envato Founder Collis Ta’eed posted an excellent response to that other recent post over on WPCandy.

I think Collis and the Envato team are a really smart bunch and clearly understand the concerns expressed by the theme development community recently with regard to themeforest. What’s more they’re not just listening – they’re acting on it and responding with new initiatives like Envato Elite. I’m waiting for Collis to call any day now to tell me he’ll be flying me down to Melbourne 🙂

In his post, Collis referred to a tweet from Carl Hancock (developer of one of the best WordPress plugins around – Gravity Forms) and how Carl would going to invoice Envato every time he had to fix a bug with a Theme Forest theme (that was most likely being falsely reported as a Gravity Forms bug I’m guessing).

Carl – I hear ya.

There is nothing worse than having to crack open someone else’s WordPress theme to find a big steaming pile to poo staring back at you. And let’s be honest here – there are lots of crap themes floating around on the web. This is not just an themeforest issue. It’s a community wide problem. It’s also not limited to themes – plugins tend to be big offenders in this respect too.

With this in mind, Carl shared some really valuable tips for anyone developing WordPress themes in the comments of the Collis post and Carl kindly agreed for me to repost them here for you guys to benefit from. Any theme or plugin not following these principles will bite you in the ass at some point or another – believe you me.

So bookmark these tip folks or print them out and stick them to your forehead – whatever you need to do to make sure you obey ok!

Carl’s Pro Theme Development tips (so he doesn’t have to fix your themes in the future!)

ThemeForest accounts for no less than 85% of support issues we encounter caused by poorly developed themes.

I know Envato is taking steps to improve the quality of the code found in their themes. Requiring theme developers to properly enqueue their Javascript and CSS is one of the ways they are doing this, which is great. Here are two more things that would go a long way to limiting conflicts caused by ThemeForest themes.

ONLY ENQUEUE SCRIPTS WHEN NECESSARY, DON’T OUTPUT THEM IN THE ADMIN

By default when you enqueue Javascript using the WordPress enqueue function in your themes functions.php file, it’s going to be output on every single page. This includes the admin. Everywhere. This is bad. Very bad. Scripts and CSS should only be enqueued when it’s absolutely necessary.

Ideally these scripts would only be output when necessary, such as specific to a theme page template for instance. But at the very least the enqueue function call needs to be wrapped in an If statement to make sure it is NOT output within the admin.

If you need to output scripts in the Admin because your theme has theme option pages, then learn how to enqueue the scripts so they are only output on your theme option pages. You shouldn’t be outputting scripts on every Admin page. This is how conflicts are born.

If you are using Gravity Forms and you can login to your WordPress Dashboard, navigate to the Gravity Forms form editor, view source and you see scripts and CSS being output by the theme? It’s probably not following best practices when it comes to enqueuing scripts and CSS.

BE SPECIFIC WITH YOUR CSS TARGETING

Many themes include their own built in simple contact form. They style these forms using CSS. The problem is the CSS isn’t specific enough and it globally applies styles to Form elements such as Inputs, Labels, etc. Why is this a problem? Because they aren’t specific enough. They target ALL Labels, ALL Inputs, etc. They don’t wrap the Form in a container and then target only the Labels and Inputs in that container.

This means that when you globally target Inputs, Labels, etc. you better be sure the styles you are applying are generic enough that they aren’t going to cause problems with Plugins that may output form elements. The main content container is also not specific enough, because plugins such as Gravity Forms output code in the main content container.

So if you are targeting an element such as Labels and using CSS to float the Label, you may have just defined your styles in such a global way that it causes problems with Labels used in plugins like Gravity Forms… causing display issues for your users in the process. CSS Inheritance is both a blessing and a curse.

These are probably 2 of the most common problems found in themes that cause plugin conflicts.

Configuring nginx, php5-fpm and user permissions

15 May 2011 comment icon31 | Categories: performance

“Nobody can hurt me without my permission.” Gandhi*
*(and anyone who has ever used Linux)
I recently moved the blog over to a pretty cool new server config, the same kind that some of the really big boys like Mashable, WordPress.com, WPengine and PHPFog use. What started off as a simple exercise to tune up my existing hosting environment to cope with the increased traffic we’re getting lately turned into a full month long exploration of how to tune the hell out of a VPS for optimal performance for extremely high load and in particular extremely high load with WordPress. (Sidenote: I find it hard not to fall down the rabbit hole once I start digging into anything I’m not currently necessarily very skilled in – a month later I know a lot of VPS tuning kung fu 🙂

Anyway, even though it’s not directly related to WordPress themes, I’ll be writing a detailed blog post series on my experiences tuning this VPS and WordPress over the next couple of weeks. It might not be directly theme related, but it is definitely indirectly related and we’ll show in future a blog post that your theme choice and theme development practices can have a massive impact on your websites performance. So fuck it I AM on topic.

Anyway one of the final pieces of my VPS config puzzle was figuring out the best way to configure Nginx and PHP-fpm to play nice with multiple websites requiring individual user accounts on the same VPS. On your average shared host, most hosts are running some variant of cPanel/WHM or Plesk. These configs generally have php running under Apache with suEXEC and/or suPHP which allow php to execute under individual user accounts rather than a system user like www-data, php or httpd. This has many benefits from the host’s perspective as it allows for more finely grained control over individual system processes. More importantly, it is a much more secure setup. It’s also one of those rare occasions where security and usability don’t conflict! Why? One of the biggest pain in the asses for people running WordPress under a system account like www-data is that you inevitably end up with one or all of the following predicaments:

  • You need to enter ftp account details during the plugin install process which is a pain and may not be an option if your host has disabled ftp in favour of ssh/scp access.
  • WordPress automatic updates are a major pain in the ass as it involves setting world writeable permissions to the entire root of your WordPress website – NOT a nice option.
  • Image uploads, permalink structure changes and any other WordPress function that requires writing to the disk become a nuisance as it generally means having to go into the shell and setting world writeable permissions on specific files and folders which is not only a pain but is also insecure.

Common but insecure and messy nginx/php-fpm configurations.

While those of your running suPHP don’t have to suffer from these problems, those of us who have moved over to nginx and PHP-FPM don’t have an equivalent to suPHP and so are left searching for an alternative configuration. There are many posts floating around the web suggesting numerous variations on the same theme:

  • Chown your webroot to the system user www-data. Add <myuser> to the same group as the user which executes your php scripts e.g. www-data. This setup makes the problems above go away but is inherently insecure. Basically avoid this if you can. Should a hacker be able to upload a php script they will be able to do all sorts of nasty things. Additionally, you will probably have problems transferring files via ftp/scp under the <myuser> account without further messy permissions configuration.
  • Chown your webroot to <myuser> and add www-data to the same group as <myuser>. In this scenario <myuser> remains the owner of the files which can solve the ftp/scp permissions issues but basically leave you open to the same security problems highlighted above. Don’t do this either.

A better more secure and usable nginx/php-fpm configuration.

While php-fpm doesn’t have an equivalent to suPHP, the good news is that it doesn’t need one. The process manager configuration options included with php-fpm are immense and very flexible. Is was during my research of these that I stumbled upon a few posts which provided the basis for the following configuration. The good news is that once this is in place you will have all the benefits of suPHP in that you’re scripts will run under a user account of your choice and you won’t need to set permissions on individual files/directories AND you won’t have any ftp/scp transfer issues.

So let’s crack on with the setup:

Step 1: Create user account

Create a new user account. I’m on Ubuntu so I’ll use the following command:

/usr/sbin/adduser myusernamehere

Step 2: Create www directory

As part of the user creation process on Ubuntu a home directory will be created. I suggest you create a “www” directory under that account. You will be configuring your virtual hosts to sit in that location rather than your typical /var/www/ or /srv/www location. This will allow you to setup individual accounts for different users and different websites who will then be only able to access their own accounts. Perfecto.

Step 3: Create website directory structure

Right next step should be to create your virtual host. First, create a few subdirectories under www as follows:

mkdir www.mywebsite.com
cd www.mywebsite.com
mkdir logs
mkdir public_html

Step 4: Create your nginx vhost

Next, you’ll need to create your nginx conf file for www.mywebsite.com. I’m not going to cover nginx vhost configurations in this post (that will be part of the main post series) but for anyone who knows how nginx/php-fpm works the main difference here is that we are going to pass php requests to a separate process pool than what you might be used to. php-fpm is very flexible in how it handles php process pools. We are going to setup a separate process pool just for www.mywebsite.com in Step 5. For now, amend your vhosts file php block as follows:

# Pass PHP scripts on to PHP-FPM
location ~* \.php$ {
try_files       $uri /index.php;
fastcgi_index   index.php;
fastcgi_pass    127.0.0.1:9001;
include         fastcgi_params;
fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

Spot the difference? We are now telling nginx to pass php requests to php-fpm on port 9001 instead of 9000.

Step 5: Configure php pool

On Ubuntu 10.10 php5-fpm creates a series of handy configuration files that makes is real simple to create a separate php process pool for individual user accounts. I set one up as follows:

cp /etc/php5/fpm/pool.d/www.conf mywebsite.conf

Crack open mywebsite.conf and edit some key variables as follows:

; Start a new pool named 'myuser'.
[myuser]
listen = 127.0.0.1:9001
user = myuser
group = myusergroup

You should also configure your child processes accordingly. I keep mine dynamic and keep  a small number of children for each pool rather than having a large number of children in a main default process pool. I generally work off a base of 5 children per website but you will need to setup your config based on your specific environment.

Restart nginx and php-fpm and you should be up and running!

/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart

That’s it!

I’ve been testing this config for a few days and everything is working swimmingly well.

I’d love to hear anybody’s feedback and comments with regard to their experiences with this config.

Stay tuned for more VPS tutorials in the near future.

Say hello to theme.it

10 May 2011 comment icon1 | Categories: theme news

I was delighted to hear today that Jason Schuller (of Press75, themegarden) is in the process of launching theme.it – a new site for all things WordPress theme related including tutorials, articles & videos. Jason has gathered a crack team of contributors for theme.it including Lisa Sabin-Wilson, Mike McAlister, Orman Clark to name but a few. This is a really strong team of people coming together to share what will no doubt be incredibly interesting insights into their experiences in building cool stuff for WordPress. In fact, they’re straight of the gates with a great post from Sawyer Hollenshead about lessons learned in getting involved in the commercial theme building business. Some great advice in that post from Sawyer for those looking to get started developing WordPress themes.

I wish theme.it the very best of luck and am sure it will be a rip roaring success given all those involved.

Moving servers

08 May 2011 comment icon0 | Categories: systems

Hi all,

We’re tinkering with our plumbing at the moment and moving to a brand spanking new server to speed things up a little bit so apologies if you noticed some downtime the past hour. We’re all done now so everything should be nice and stable now.

Ed

Great new Bug tracking theme from WooThemes – FaultPress

07 May 2011 comment icon2 | Categories: theme news

WooThemes have launched a cracking new WordPress theme this week called FaultPress. FaultPress is a highly advanced WordPress theme that transforms WordPress from a publishing platform into a full featured trouble ticketing system. This certainly isn’t a new concept. We’ve seen the Quality Control theme late last year, but what is interesting about FaultPress is the skill and attention to detail in it’s execution.

Some key highlights:

  • HTML5/CSS3 – A lot of work has gone into creating a wonderful looking UI for FaultPress
  • Responsive Web Design – This is a biggy. I’ve played around with FaultPress on both the iPad and iPhone and the responsive design execution is wonderful. We’ve not seen a lot of WordPress themes yet that have tackled responsive web design but hopeful WooThemes have got the ball rolling and we’ll see a lot more of this kind of stuff in 2011.

FaultPress continues the trend of the best theme shops building highly sophisticated WordPress themes that shouldn’t really be called themes at all. These ‘themes’ are more like fully fledged plugins or apps built on top of the WordPress theme framework. WordPress is becoming more and more of a framework for building applications on top of which is really cool and I hope that we see lots more of this in the future.

New WordPress Theme Twenty Eleven – First Look

05 May 2011 comment icon15 | Categories: theme news

So it looks like the Theme Wranglers over at Automattic are getting close to completing the first version of the new Twenty Eleven WordPress theme which is based on the excellent Duster theme created by Automattic and recently released in the theme repository in April.

The team are working hard to ship V1.0 of Twenty Eleven with the next version of WordPress, 3.2.

I was up for a bit of semi productive procrastination this evening so I checked out the latest development version of WordPress from the trunk and took Twenty Eleven for a spin.

Here’s the initial scoop.

Twenty Eleven Unboxing

The first thing I noticed after firing up Twenty Eleven and dropping in a couple of hundred blog posts using the fantastic Dummy Content plugin was that the header image is really big. Too big in fact. There is an ongoing discussion about this on the WordPress development blog. In my humble opinion it should be reduced in size. While the dev team point out that it is easily resized (and this is indeed true – take a peek in functions.php and look for the HEADER_IMAGE_HEIGHT value to change the default height.) there is an awful lot to be said for good defaults. The reality of the situation is that most newbies won’t resize the header image – at least not initially. I predict a LOT of forum posts on said height reduction if this stays as is right now. Here’s a screen grab of just how big that bad boy is on my 15in Mac Book Pro screen.

Note, you can’t even see the first blog post!

Compare this with Twenty Ten on the same instance of WordPress.

Lots more real estate on show by default there. In my view, the default header image height in Twenty Ten is perfect. As Goldilocks once said, not too big, not too small.

UPDATE: 12 May 2011: The default height was bugging Dalton Rooney too. So much so in fact Dalton just pushed out a really handy little plugin in record time to allow users to change the banner dimensions from within the Appearance menu. Great little addition Dalton. Works perfectly.

Let’s leave aside the default header image height and delve a little deeper.

HTML 5 Goodness is everywhere

Twenty Eleven is written with HTML5 which is great news for Theme Developers who will undoubtedly spin off many child themes and different instances of Twenty Eleven as happened with Twenty Ten after it was released in erm 2010.

Theme Coding Standards

You would expect no less than first class coding standards from Automattic and with Twenty Eleven expectations are met and exceeded. The theme is heavily commented throughout which should make customisation a breeze for those who choose to get their hands dirty. I think this is one of the big reasons that so many people chose to adopt Twenty Ten as a proxy theme framework.

Showcase Template

Twenty Eleven comes with a Showcase page template which is a nice addition and allows you to quickly add a nice content slider to your website. Make any page use the Showcase page template and then make that your showcase page your homepage via the Readings Settings in WordPress and BAM! you’ve got a nice showcase page template which also allows for widgets to then be added to the left hand side of your main post. Additionally the next 9 posts are displayed in summary format below the first main post which gives the Showcase template a more interesting template that your conventional blog homepage. Nice.

 

 

Here’s an example of the Showcase template in action.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Damn header is still too big even with a 100px. height on the header image 🙂

Post Formats

Post Formats are fully integrated into Twenty Eleven. The presentation of same is a little flat at the moment and I think that Automattic could spend a bit more time to refine this to make sure users know how good they can be.

Colour Schemes

The theme comes with 2 Color Schemes – Light and Dark. Light is the default but I adore the dark version! Dark themes are tough to pull off but Twenty Eleven looks fantastic gone dark.

Typography

I love the attention to detail paid with regard to typography with this team and there improvements all over the place on Twenty Ten.

Theme Size/Speed

Given the simplicity and lack of imagery used within Twenty Eleven, it’s super fast to load and quite small in filesize (my instance above is under 200kb on initial load.

There’s lot more to Twenty Eleven and I’m sure there will be more changes to follow before this thing actually drops.

Looking forward to playing more with Twenty Eleven in the near future.

Genesis Framework powers over 200,000 websites

04 May 2011 comment icon0 | Categories: theme news

In amongst the comments in the Hypercritical Analysis of WordPress themes post over on WPCandy came an interesting stat from Brian Gardner of StudioPress.

Rough numbers indicate that a 1/4 million sites are running Genesis. I’d say that’s a stable environment to build for.

That’s a huge number in my opinion – especially as the framework has not been around as long as some of it’s competitors. We’ve made no secret of our love for the Genesis framework and it would seem that we’re not alone by those numbers 🙂

Go check it out today.

An Analysis of WordPress theme pricing

04 May 2011 comment icon0 | Categories: theme news

Some great stuff from WPCandy this week that has prompted us to publish a highly irregular post 🙂

First of all go read the excellent Hypercritical Analysis of $35 WordPress themes.

Theme developer Mike McAlister takes us through his thoughts on why he think commercial WordPress themes are priced too low.

Mike makes the very interesting and valid point that while themes have advanced significantly over the past few years that prices have largely remained static and are not a fair reflection of the value provided by some commercial themes.

As someone who builds WordPress themes for a living I can sympathise with Mike and know exactly where he is coming from. While I build WordPress themes for a living I don’t currently sell them either here or via any of the big theme marketplaces. Why? Simply put, I choose not to compete on price. Yes price is important – it always is. But marketplaces like themesforest are like reverse auctions for me – it’s a race to the bottom.

If you consider that theme prices have not significantly increased over the past few years but the quality of the top themes in the marketplace (not the majority but the best developers) has increased dramatically, I would argue that real prices have actually fallen significantly (to borrow the macroeconomic notion of real interest rates). I’m staying well away from it.

There has been a massive reaction to the post and I encourage any buyer or seller of WordPress themes to go read the post now.

 

Run your own stackoverflow clone with WordPress plugin

26 April 2011 comment icon0 | Categories: plugins

When stackoverflow launched a few years ago I instantly fell in love with it. Seemingly everyone else did too and it has now become the defacto place for developers to go to get answers to some of the most obscure problems and challenges we all face on a daily basis. I’ve yet to come across a problem that I couldn’t get some really useful help from some of the smartest people on the planet over there.

Ever wanted to run a stackoverflow type of website for yourself? Well now you can. WPMU just launched their new Q&A plugin called Q&A (funnily enough!) The plugin costs $99 but believe me – this is a minute fraction of what you would pay to have a stackoverflow.com clone coded from scratch. I’ve not had the chance to take the plugin for a spin yet but from what I’ve seen thus far it looks great.

One thing I’d say is that the default look and feel is very very similar to stackoverflow which is probably a bad thing and might piss off the folks over there a bit. A bit more work to make the plugin look a bit more unique might be a good idea for future releases not least to keep stackoverflow happy but also to show users how the plugin can be customised to their unique needs.

Genesis Framework V1.6 Released

26 April 2011 comment icon0 | Categories: theme news

We’ve not posted a lot this month while we play around with some exciting new developments here at themesforge (more on that later this week) but we’ve popped up for air to let you know that Genesis 1.6 has officially been released. We’re big fans of the Genesis WordPress theme framework and it’s our framework of choice for WordPress themes these days.

Genesis 1.6 brings with it some nice new features:

  • Much easier Footer widget implementation – for ages we’ve been doing this the longer way via functions.php – now it’s down to 1 line of code which is super news
  • Custom Header Image – this is an interesting one. It will make child theme customisation much easier for some folks – those who tend not to use custom header images probably won’t find much value in it.
  • 100% Custom Menu Support – Genesis 1.6 finally sees the removal of the older Page/Category menu options that were common in WordPress pre 3.0. Be careful with this one as there is an upgrade process to follow to ensure your menus are upgraded to the new custom menu options.

Gary Jones has posted the full 1.6 Changelog over on his blog. The full 1.6 announcement is over on the StudioPress blog.

Dog