Louis Gia Nguyen

Stay Hungry, stay foolish

What’s New in WordPress 3.4

on June 14, 2012

With WordPress 3.4 set to arrive this week, it’s a great time to familiarize ourselves with the new features and additions. The new version of WordPress brings many improvements, including custom backgrounds and headers, a live theme-customizer, revamped XML-RPC, better support for internationalization, and many bug-fixes and enhancements. Let’s dive in and see what WordPress 3.4 has in store!


(Smashing’s side note: Have you already bought the brand new Smashing Book #3? The book introduces new practical techniques and a whole new mindset for progressive Web design. Get your book today!)

Custom Headers And Background

When WordPress added featured images as a core feature in 2.9, a new function was added — add_theme_support. It was (and is) obvious that this is a precursor of things to come: the standardization of theme features. Since its introduction,add_theme_support handles post-formats, automatic feed-links, and now in version 3.4, custom backgrounds and headers will be added to the list.


To use this feature, just call the add_theme_support() function with ‘custom-background’ as the first argument, and a list of default options as the second. Here is an example showing the basic syntax:

1 $args = array(
2     'default-image'          => get_template_directory_uri() .'/images/bg-default.png',
3     'default-color'          => '#fafafa',
4     'wp-head-callback'       => '',
5     'admin-head-callback'    => '',
6     'admin-preview-callback' => ''
7 );
9 add_theme_support( 'custom-background', $args )

Once the code is in place, you’ll see the changes take effect in the WordPress Admin:

The new custom background facility in WordPress 3.4
The new custom background facility in WordPress 3.4


Adding the custom-header options work in much the same way. In addition to the new way of defining them, you can now make them flexible in height or width, which is a great asset to theme designers.

01 $args = array(
02     'flex-height'            => true,
03     'height'                 => 200,
04     'flex-width'             => true,
05     'width'                  => 950,
06     'default-image'          => get_template_directory_uri() .'/images/headers/header-default.jpg',
07     'random-default'         => false,
08     'default-text-color'     => '',
09     'header-text'            => true,
10     'uploads'                => true,
11     'wp-head-callback'       => '',
12     'admin-head-callback'    => '',
13     'admin-preview-callback' => '',
14 );
15 add_theme_support( 'custom-header', $args );

Once you add this code the relevant controls will show up in the Appearance tab and you will be able to set up your custom header and background-image.

The width and height is now 'suggested'
The width and height is now ‘suggested’ (displayed in bold text)

Thanks to Chip Bennett and Amy Hendrix for their excellent posts on this topic.

Live Theme Customizer

I think one of the best features in recent times is the Live Previews or “The Customizer”. As someone who sells themes on Theme Forest, I welcome this addition because the more I can use default WordPress options, the less support I need to provide. The best way to familiarize yourself with this feature is to watch the following great overview from Otto. I also recommend his article onleveraging the theme customizer in your own themes.

We’ll be taking an in-depth look at this awesome functionality here on Smashing Magazine, but for this article, the live theme-preview feature is too complex to showcase concisely. If you’d like to get started, do read Otto’s article — it has everything you need to get things set up. Here’s the nutshell version for a quick preview.

The preview facility works in an object oriented fashion. To use it you will need to cover the following steps:

  1. Add the customizer (hook it to ‘customize_register’)
  2. Add an area of customization — a section (using add_section())
  3. Add a setting you want to be able to control (using add_setting())
  4. Add the control which is used to modify your setting (usingadd_control())
  5. Customize the preview functionality to work in real-time

The live preview is brand-spankin’ new, but it’s already a very powerful tool. It will no doubt receive numerous updates and additions, so theme developers will finally have a common and also flexible way of letting users customize their themes.

XML-RPC Revamped

XML-RPC is a specification and a set of tools that allow software running on different platforms to make procedural calls over the Internet. In essence, it allows communication between WordPress and other software. The most apparent use of XML-RPC is the remote blogging services that are offered by apps like Windows Live Writer and mobile apps.

WordPress 3.4 comes with a number of XML-RPC bug-fixes as well as some heavily requested features like support for post thumbnails, custom post types and taxonomies.

Internationalization Changes

Back in the second half of December last year, WP Polyglots (the translation team) announced that they will be pouring a lot of work into the 3.4 release and beyond. As a result there a numerous upgrades in the internationalization functionality of WordPress:

  • Comma-localization (for languages like Chinese and Arabic which do not use the standard comma)
  • Some fields are now forced to be LTR (like password and login names)
  • Translatable spell-checker language
  • Single quotes, apostrophes and primes can be localized
  • Translatable time-zone string
  • Simplification of:
    • Feed-language specification
    • Start of the week
    • RTL language designation
    • Default secret-key text
    • Placeholder text of database constants
    • setup-config.php file translation
    • WP_I18N_* hardcoded translations
  • Translations are now split over three POT files — wordpress.pot,wordpress-admin.pot, and wordpress-admin-network.pot
  • Default WordPress links can be translated
  • Dashboard widgets can be translated

Beginnings Of A New API

While not advertised in the change-logs, Andrew Nacin has been working on anew API which will replace the get_themes() functionality.

For now you won’t notice much, with the main difference being that you can place template files in sub-directories. Under the hood, the new class will bring significant speed increases while searching for themes by reducing the filesystem operations to a bare minimum.

As you can see on the main Trac Ticket (scroll down a bit in the comments), there has been a lot of work done but the class is only scratching the surface of what we will be able to do later on. Flexible theme-management with better performance will help developers and users out a great deal — I can’t wait to see where this goes!

Bugs and Enhancements

With a total of 401 bugs fixed, 116 enhancements added, 3 requested features built and 52 tasks completed (at the time of writing) there is a lot more to this update than just the main features above. The WordPress 3.4 Track Milestonepage has all the links and info you need to take a look at all that’s been done, and here’s a quick overview.

  • HTML Support in image captions #18311
  • Twenty Ten and Twenty Eleven themes updated to support new features#20448
  • Theme installer supports child themes #13774
  • WP_Query core performance upgrade #18536
  • Clicking on an empty space in the toolbar will scroll the page to the top#18758
  • Incorrectly displayed author meta fields fixed #20285
  • Failed cURL redirect fixed #20434
  • Spam comments are now excluded from the dashboard #14222
  • Theme editor support for special theme name characters #16507
  • Retina display icons added #20293
  • Already installed themes excluded from theme search #20618
  • Args added to the recent post and comments widget #16159
  • New comments can be added from the editor #15527

Updates Of External Libraries

It’s always worth checking out the external library update for a milestone. This version brings quite a lot, to name just the most important ones:

  • PHPMailer updated to 5.2.1 #19887
  • TinyMCE updated to 3.4.8 #19969
  • jQuery updated to 1.7.2 #20339
  • jQuery UI updated to 1.8.20 #20559
  • SimplePie updated to 1.2.1 #18309
  • hoverIntent updated to r6 #19311

Want To Chip In?

If you’d like to participate there are still a few days left and you can always help out after 3.4 as well. If you have the coding chops take a look at the open ticketsfor the next major release.

If you’re not a coder, not to worry! Just using and testing the features can be invaluable as well! You can download WordPress 3.4 RC2 or you can install theBeta Tester Plugin to grab all the latest nightlies and be on the bleeding edge!



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: