WordPress 2.8: What’s new

After six months in preparation, the first beta version of WordPress 2.8 was released on 16 May 2009. Following WordPress 2.7, which focused mainly on the UI, WordPress 2.8 brings changes that are more evenly distributed across all areas. There are big improvements in the user interface, but there is a much larger amount of not immediately obvious improvements in two main areas:

  • Extensibility
  • Optimization/Performance

Also, many bug fixes and enhancements, big and small: This version saw more tickets opened and, most importantly, closed than any other version of WordPress before. The closed tickets are almost 800 at this moment. — All in all, WordPress 2.8 is a better tool than WordPress 2.7.


In general, backward compatibility seems good. With two exceptions (one theme that broke itself and another that broke WordPress) all themes I’ve tried work well. Same with plugins: A few have problems but most work well. If it is any indication, of the plugins used in op111.net only one explicitly supports WP 2.8 at this moment; yet, all work without problems. (op111.net has been running on development snapshots of v. 2.8 since March.)

On to what’s new, in alphabetical order…

Accessibility improvements

WordPress 2.8 brings several improvements, big and small, to accessibility. A lot of work went into two areas in particular:

  1. Adding labels and alternative text to input elements that did not have them.
  2. Making the functionality of the new Widgets UI (more on that later) fully available without JavaScript.

Authentication: more pluggable

The authentication mechanism is now improved, so that authentication methods like OpenID and authorization methods like OAuth can cooperate easier with it (without replacing it and then having to deal with other issues). Read more:

Improvements in this area also pave the way for OAuth support in the core (which will probably come in ver. 2.9).

Columnification and pagination in Screen Options

Screen Options has two new options, depending on the type of screen:

  1. Number of columns
  2. Number of items per page

WordPress 2.8, Option to select number of columns in Dashboard WordPress 2.8, Option to select number of columns in the Edit Post screen WordPress 2.8, Option to select number of displayed items in Edit Pages

Items per page is the one I’ve found more useful, but I can imagine columnification would be very useful too in some situations, e.g. on a netbook with an 800×480 display.

CSS: new dynamic classes with body_class()

Dynamic CSS classes were first brought to WordPress by the innovative Sandbox of Scott Wallick and Andy Skelton, offering a simple way to modify to any extend the appearance of a WordPress site by CSS alone. They offer possibilities that would otherwise require JavaScript or PHP.

WordPress 2.7 added dynamic CSS classes for the post div(ision). Version 2.8 adds dynamic classes for the body element too. Both implementations were based on Sandbox.

For theme authors. To add this to a theme, simply open the body element like so:

<body <?php if (function_exists('body_class')) { body_class(); } ?>>

More on the body_class() function:

Feed links for everything

WordPress 2.8 automatically adds feed links specific to the page viewed. For example, when you view the archive of the category Cooking, it adds a feed link for that category. When you view the archive for author Cyrus, it adds a feed link for that author, etc.:

Automatic autodiscoverable feed links in WordPress 2.8

For theme authors. The two main feed links—all posts and all comments—are not added automatically. To let WP add them too, put the automatic_feed_links() function (defined in general-template.php) in your functions.php.

Note. Extra Feed Links, a plugin by scribu, adds the same functionality to earlier WP versions.

JavaScript at the bottom

JavaScript files properly registered via the appropriate script API can now be placed at the bottom of the page. In most cases this is preferable, because JavaScript blocks parallel downloads (browsers need to evaluate it before proceeding) and can delay the time by which a page is usable and also the time by which the rendering is complete. So, unless a JavaScript file needs to be at the top, it can be moved to the bottom for better performance.

For plugin/theme authors. This is done with a new optional argument in the wp_enqueue_script() function. The argument defaults to “false” (not in the footer). To put a script in the footer, set it to “true”. E.g.:

wp_enqueue_script('script_handle', 'script/url/file.js', '', '', true);


LiveJournal Importer: Redone and improved

Importing a LiveJournal blog into a WordPress 2.8 blog is easier and more complete thanks to the rewritten LiveJournal Importer, which uses the LiveJournal API. Read more:

Minification and concatenation of CSS and JS…

… or, faster admin pages.

Most CSS and JavaScript files in the administration area are now concatenated (chained together into one file) and, depending on the server setup, compressed too. Javascript files are also minified. Using minification, concatenation and compression improves performance in two ways:

  1. The total size of files to get is reduced.
  2. The browser requests fewer files from the server.

This kind of optimization could prove even more beneficial to the frontend (the public part of a website). Of course, things can become more complex there, but the current impementation could serve as a testing ground for applying something similar to the frontend at a later time.

What is minification? Minification is the practice of removing from a file bits useful to humans but unneeded for machine execution, like comments, spaces, line breaks and indentation. On the web it is used mainly for CSS and JS files, to reduce the amount of bytes sent from the server to the browser.

Plugin Installer

The plugin browser/installer was first introduced in the previous version, six months ago. I’m including it here for two reasons:

  1. It seems it’s not very well known yet…
  2. It’s been improved in v. 2.8. In the meantime, the search mechanism of wordpress.org was improved too, and now the whole system works much better.

Here is how to install a plugin in the new way:

Installing a plugin in WordPress 2.8, Step 1 Installing a plugin in WordPress 2.8, Step 2 Installing a plugin in WordPress 2.8, Step 3 Installing a plugin in WordPress 2.8, Step 4 Installing a plugin in WordPress 2.8, Step 5 Installing a plugin in WordPress 2.8, Done!

Plugins management

The plugins manager was retouched, and is still being worked on at this writing. It now offers views/filters by plugin state, which I’ve found to be very convenient:

WordPress 2.8, Plugins management

Pretty permalinks for IIS 7

IIS 7, the current version of the Microsoft web server, recently got an official rewrite module and can now do URL rewriting like Apache does. WordPress 2.8 detects if the server is IIS 7 with the rewrite module and offers the option to use fully pretty permalinks with IIS 7 too — not just the semi-pretty ones with index.php in the middle. Read more:

Proxy support

Easy proxy support (without editing core files) had been missing from WordPress and was a frequent request. Now it is part of the WordPress HTTP API. You enable it by defining a few constants in wp-config.php.

The documentation for this, along with an example, can for now be found in the file wp-includes/http.php (look for the WP_HTTP_Proxy class).

Quotation marks locale-aware

WordPress has a smart typography filter that, among other things, replaces ASCII quotes—"like these"—with proper quotation marks “like these”. Before v. 2.8 this filter only knew about quotation marks as used in American English.

Now translators can specify the appropriate quotation marks for a language, and, if you use a localized version, they will be used instead. For example, «αβγδ» for Greek, „abcd“ for German, and so on and so forth.

Relational navigation links

A relational link in an HTML document points to another document and states its relation with the current document. Examples of such links that are used for navigation are “prev” (previous in a series) and “index” (index for current). Browsers can use them to offer an interface for navigation, much like they do when they show an icon/menu in the URL address bar for the feed links in a document.

WordPress 2.8 generates four types of relational navigation links: home, index, prev, next. If your browser supports such links (not many do, at least natively), you’ll be seeing them more often as WordPress sites upgrade to v. 2.8:

Relational navigation links in WordPress 2.8

An interesting possibility of relational links is that browsers can also use them as hints to prefetch (predownload) a page, cache it, and then serve it from the cache, for better speed. Firefox—the only browser that does link prefetching currentlydoes this with relational links of the type next. (I have not been able to verify if it works in WordPress sites.)

Smilies: Now faster!

Version 2.8 cuts in half the time needed to convert text smilies to image smilies! :-o The faster code is also availabe as a plugin for WordPress 2.7: Faster Smilies

(Of course, you can always turn graphical smilies off in Settings › Writing › Formatting, and WordPress will be even faster!)

Theme Installer

Installing themes in v. 2.8 is as quick and easy as installing plugins is in v. 2.7:

Installing themes in WordPress 2.8, Step 1 Installing themes in WordPress 2.8, Step 2 Installing themes in WordPress 2.8, Step 3 Installing themes in WordPress 2.8, Step 4

Theme/Plugin Editor with highlighting and lookup

I was never fond of this feature of WP: I don’t see any need for it and I also think that it encourages bad habits. But others like it. They’ll be happy to know that the theme/plugin editor is now improved, with syntax highlighting and function lookup:

Theme/Plugin Editor in WordPress 2.8

Note. In Chrome and Safari you’ll see the plain old text area without fancy colours. These two browsers (that share the same rendering engine) are not supported at the moment.

Timezone selection and DST

Settings › General had been displaying for a long time this apologetic message:

Unfortunately, you have to manually update this for Daylight Savings Time. Lame, we know, but will be fixed in the future.

Well, the future is here! :-D Now you only need to enter your location:

WordPress 2.8 adjusts to DST automatically

Note. Automatic DST adjustment uses functions that were introduced in version 5.1.0 of PHP. So, you won’t see it if your server has an older version. (The minimum requirement to use WordPress remains PHP 4.3.)

  • Automatic Timezone is the plugin on which this enchancement was based. It adds the same functionality to WordPress 2.5, 2.6 and 2.7.

Widgets API: new and multiple-instance

Another part rewritten in v. 2.8 is the Widgets API. Writing widgets is now simpler and, importantly, widgets based on the new API are multiple-instance by default, like the Text/HTML widget in previous versions. (Writing multiple-instance widgets was already possible but convoluted.) Read more in this announcement by Ryan Boren:

As a bonus, the new function the_widget() lets you display the output of a widget anywhere in a template.

Widgets management UI: Redone, much improved

This took a lot of work and is, in my estimation, the most important improvement in the user interface of WordPress 2.8.

The new Widgets manager:

  1. Does everything by simple drag ’n’ drop (and is fully functional without JavaScript too).
  2. Has better memory/storage: You can deactivate a widget without losing its configuration, and widgets that are deactivated automatically retain their configurations too.

Also, thanks to the new Widgets API, widgets can now have multiple instances. You can add a widget as many times as you wish.

See the screenshots:

Widgets management in WordPress 2.8, Overview Widgets management in WordPress 2.8, Contextual help Widgets management in WordPress 2.8, Drag ’n’ Drop Widgets management in WordPress 2.8, Inactive Widgets area

That was it!

If you think I left out some important feature, please leave a comment to say so. If you want to try test versions of WordPress 2.8 as they come out, watch the official blog: wordpress.org/development — Usual warnings apply, of course: This is not a final product! Do not install on a live website unless you are prepared to spend time investigating and reporting bugs!

Note. The menu icons on the screenshots are not the default ones. If you like them, you can have them too!

Thanks for reading!



Responses (17)

Pingbacks (8)

  1. […] 2.8 is due any week now, and op111.net has a great rundown of all the new features available in the update. This doesn’t even include the new functionality available to […]

  2. […] out Demetris’s thoughts on the new WordPress 2.8 […]

  3. […] An Intro to WordPress 2.8 […]

  4. […] Der er mange andre og meget væsentlige forbedringer, som man kan læse om i dette indlæg: WordPress 2.8: What’s new – op111.net […]

  5. […] If no serious bugs or issues found in WordPress 2.8 RC1 then we will see WordPress 2.8 final release soon i.e on 10th June. Check out full changelog if you are curios to know what’s new in Wordpress 2.8 then check this visual review of WordPress 2.8. […]

  6. […] which is only two days away. To see the list of changes you can checkout the changelog or read a review of WordPress […]

  7. […] anpassen und gucken, wo ihr JavaScript hinsoll und was es sonst noch so gibt, ist an verschiedenen Stellen im Netz gut […]

  8. […] WordPress 2.8: What’s new – An extensive post on what’s new in WordPress 2.8, mostly from a developer’s point of view. Things like the new body_class function, proxy support, and relational navigation links, among other new features are all covered on this article. […]

Comments (9)

  1. Ozh says:

    *excellent* post, thanks for this :)

  2. demetris says:

    You are welcome, Ozh! Thanks for dropping by!

  3. Magnus Jahrl says:


    I’m building my first theme right now and I look forward to read more fromyou

    Keep up the good work!


  4. Don says:

    Thanks for the Post. Love the imagery, it helped am a non techy so i found it very helpful

  5. One of the better WordPress 2.8 “What’s new” articles I’ve read so far.

    Under the hood, I’m really looking forward to the bundled jQuery 1.3.2, up from 1.2.6.

  6. Nicholas says:

    Congrats on a well written article about WordPress 2.8. A lot of work has been put in this release (I’ve contributed to some tickets :) ) and everybody has something to gain. Keep up the good work!

  7. Bradford says:

    Thanks for this article. I really wish they would have done more to speed up Wordpress. I love it, but it is pretty slow compared to other blog engines. Some of these features look pretty good.

  8. I am having problems with the new jquery 1.3.2 on my WP 2.8 the idtabs are not working, i get the error : exeption thrown and not caught. I have no idea how to fix that :S, so I put the old jquery 1.2.6 with wp 2.8 wil lthat make any problems? Advice me please

  9. demetris says:

    @jeton ramadani: You can try. :-) I did that once with 2.8 (DEregistering jQuery 1.3.2 via the script API, and then registering jQuery 1.2.6) and everything worked OK. But I don’t really know much about jQuery, so I cannot offer any advice.

Write a comment

Your email address will not be published. Required fields are marked *