What’s New in WordPress 3.5: The Developer’s Perspective

What's New in WordPress 3.5: The Developer's Perspective

The final version of WordPress 3.5 is coming closer – the first release candidate has already been presented to the public. It means that we should have our hands dirty with testing. Today we are going to see what new things are under the hood of new WordPress release and what it means for developers.

What's New in WordPress 3.5: The Developer's Perspective

What’s New in WordPress 3.5

New Default Theme

The upcoming release is going to be packed with a new default theme – Twenty Twelve. The theme’s code and design were completely re-worked since the Twenty Eleven, that makes it truly clean and simple to use. It’s responsive out of the box, has a clean typographic approach, supports post formats and customisation options via Theme Customiser introduced in 3.4 version.

Twenty-Twelve Theme

Actually, you can get more information about it’s features on the official theme page at WordPress. The theme is also available for download from the WordPress repository, so you can start using it right now (that, I suppose, would be a pleasure).

Media Management Improvements

In this release the core team unites their forces to refresh the outdated media management functionality. First of all there is a new in-post media management interface. It is clear, intuitive and easy to use. The search for images, it’s selection and customisation are performed easily inside the single modal.

Users can select one or more images to embed into posts, one by one or in bulk. The gallery management is also slick and intuitive with drag-and-drop functionality. The following PressThis video episode is dedicated to all these new things, so that you can see them in action.

But what does it all mean for developers? It’s worth paying attention to following aspects.

Introduction of Backbone Library

The new interface is built upon the Backbone JS library which is now bundled with the core. If you are not familiar with Backbone, probably, the time has come to start. It could be easily predicted, that the library will get further usage in WordPress core.

By by incorporating it into their own plugins (or other projects) developers could build interfaces that behave like native ones. Backbone brings the MVC approach to UI building.

You can extend any component of it to create custom dialogues. A good example of such a dialogue is already presented in the core – Featured Image selection metabox. It creates a UI, that relies on defined models and views, but attaches your own events to them, allowing you to select a featured image instead of inserting it into the editor. You can see how it’s done directly in the source code -wp-admin/includes/meta-boxes.php.

Gallery Management

The native WordPress gallery finally gets a renewed concept – it does not rely on images “attached” to a post any more. Instead, the new interface allows you to select any set of images from the media library (or upload them immediately), organise them through a simple drag-and-drop process and insert into post using a familiar ‘gallery’ shortcode.

Gallery UI

If you do not need some sophisticated gallery functionality for your project, you can consider giving a native gallery a second chance. If you are not satisfied with native markup, provided by the core, – you can simply deregister the default shortcode and register again with your own custom screen function.

Edit Attachment Page

Edit Attachment Page

The media library itself also gets some refinements. The most important thing is that the attachment edit page now relies on the same code as any other post type’s page. That in particular means that you can easily add custom metaboxes to it as you normally do for other post types.

Other changes are related to the image edit dialogue – all image manipulations are now abstracted through the introduction of WP_Image_Editor class and handled through ImageMagic library, if your server supports it.

There is no UI (yet) for configuring the options available in ImageMagick, by default WordPress is using it to perform basic editing manipulations (resize, crop etc.) This is a welcome move because ImageMagick does a better job than GD of resizing images without losing quality and it will make it easier for plugin developers to extend. Actually you can take a closer look at WP_Image_Editor_Imagick class in the source code wp-includes/class-wp-image-editor-imagick.php to see for yourself how it’s implemented and could be extended.

Admin UI Changes

The core team continues to reorganise admin for unification and simplification of UI. There are some new things introduced like the ability to install the plugins marked as favourites in the wordpress.org repository, a new welcome screen, retina-ready graphics in admin and a refreshed look of UI elements (like buttons, panels etc)

Admin UI

But apart from these shiny toys there are a bunch of changes that could affect your project’s code.

Link Manager Hidden

The link manager has been removed from the admin UI. The appropriate links table is still present in the DB and link management functions are available, but the admin dialogue is hidden. This is default behaviour for the fresh 3.5 install, but for upgrades that have some links to display it will still be shown.

If you’d like to preserve it on a constant basis – there is a simple plugin.

Settings Changes

There are changes in the settings pages and corresponding options. In particular, the security page has been removed and the search engine privacy option has been shifted to Reading Settings. On the Reading page itself the charset option is hidden for new installs (assuming UTF-8 by default) and for upgrades that have already been set to UTF-8 (see reasoning in following ticket).

The Media Settings also have some changes: there is no way to specify the upload folder through the options dialogue (see the ticket for details). If you have to specify a custom upload folder location you should use UPLOADS constant in config file.

oEmbeds settings are also gone from the screen – oEmbeds are available by default. If you’d like to removed it, some custom filtering should be performed (detailed instructions). The width for an embed will be inherited from the theme or the content frame and the height will be set automatically to 1.5 times the total content width or 1000px whichever is smaller.

Speaking about oEmbed – there are additional content providers that are supported by default. In particular, the embeds from Instagram, Soundcloud and Slideshare are supported out of the box (you don’t need any plugins for that).

The Writing Settings page has lost the “size of post box” option – the editor now will depend on how you resize it and the value will be saved in cookies. At the same time the “remote publishing” option also has gone – XML-RPC is enabled by default and to disable it you have use xmlrpc_enabled filter hook (detailed instructions).

UI Elements Improvements

TinyMCE has been updated to the 3.5.7 version that includes tons of improvements such as support for HTML5 tags or performance enhancements. But what’s the most interesting thing is the introduction of the API for views which you can use to offer previews and interaction of elements from the visual editor.

For example, the embedded media or gallery are presented by corresponding views in the visual editor mode with controls.

Editor Views

The native theme’s customiser introduced in the 3.4 version has further improvements with a new color picker UI.

Color Picker UI

Now it’s easier to display taxonomy columns in edit posts tables (see the following ticket for details). It could be achieved by supplying show_admin_column => true parameter to register_taxonomy() function on taxonomy registration. If you are looking for a way to alter it’s default behaviour there is manage_taxonomies_for_{$post_type}_columns filter hook.

Various Changes in APIs and Functions

Some of the essential WordPress APIs have been improved in the 3.5 version. Thus, the queries for comments and users now support the meta_query syntax the same way as WP_Query does. For example, to query users by some meta (‘nickname’ for example) you should write:

$args = array(
        'meta_query' => array(
                array(
                          'key' => 'nickname',
                          'value' => 'editor'
                )
        )
);
$user_query = new WP_User_Query($args);

//loop trough results
if(!empty($user_query->results)){ foreach ($user_query->results as $user){
        
        printf("<p>We have found user: %s</p>", $user->data->display_name);
}}

On the whole, it’s a great movement toward the unification of query APIs in the core.

Another notable improvement is support of post__in value for orderby parameter of WP_Query. It looks small, but in reality this small improvement gives you a lot of flexibility in displaying queried items. If previously, the only option for custom ordering was the menu_order parameter, that preserved it’s value in any queried context, then now things become more flexible.

You simply have to submit IDs of posts in the desired order as ‘post__in’ query argument and make ‘orderby’ parameter equal to post__in. Voilà! You have a completely custom order for a given query. The approach allows, for example, to have a manually ordered gallery embedded through shortcode: gallery ids="5,25,18".

WordPress 3.5 introduces the WP_Post class that dramatically improves performance by loading selected post’s properties on demand. Unfortunately, it could not be extended (as many plugin developers probably expected), but… things may change in future.

It’s recommended to take notice of the fact that WordPress’s default memory consumption limit has been increased to 40MB. It has been done to prevent fatal errors in some cases in the dashboard when the memory consumption is very close to the limit. Developers promise that this would not take as “a licensee to further increase the side of the WordPress codebase”.

It is also worth mentioning that a lot of bundles external libraries were updated to the new version, in particular – SimplePie 1.3.1, jQuery 1.8.2., jQuery UI 1.9.1, already mentioned TinyMCE updated up to 3.5.7 and new JS library: Backbone 0.9.2 and Underscore 1.3.3 are now bundled with the core.

Conclusion

There are also plenty of different changes related to performance, security and bagfixes, so that it’s highly recomended to install the new version right now to test for possible incompatibility with your themes, plugins or other projects. If you find other changes and features, that were missing in our overview, please share them with us in the comments.

Do you like the new release? What is your favourite feature? Are you going to upgrade immediately? Let us know in the comments.

Anna Ladoshkina is a developer with a primarily statistical and analytical background so she is interested first of all in approaches and techniques that allow her to implement this knowledge in her web projects.

Comments

  1. / Reply

    I’m very optimistic about the changes in 3.5, but I’ll be waiting to update my bigger sites until I’m sure my theme and plugins are ready for it. I’m especially excited about the improved image handling; dealing with the media gallery has always seemed clunky to me. Interested to see if it rolls out on time as well!

    • Aamir,
    • November 27, 2012
    / Reply

    And what about pagination? Did they add the rel=”next” and rel=”prev” tags on archives and remove them from single page??

    In fact I am expecting such thing.

    1. / Reply

      Aamir, actually, I’m not sure about this changes. But anyway you can always filter the output markup to make it suitable for your installation

  2. / Reply

    Thanks for the link to my Backbone.js tutorials website and I’m quite excited to see the library making it’s way into WordPress.

    I also work on another service which WordPress users should find very handy for speeding up their websites called http://cdnjs.com. We simply host Javascript libraries(backbone.js included) and other highly used assets on a content distribution network.

    1. / Reply

      CDNJS is awesome! We submitted a pull request to update Masonry so we could link it in our enqueue instead of shipping it with the project a few weeks ago. Helps keep the project weight down considerably. Plus, it’s nice that there’s a hosted solution for less-mainstream libraries.

    2. / Reply

      Thank you, Thomas for your comment and for all that great work you’ve made with backbone tutorials.
      And your another mentioned project sounds very interesting – thank you for pointing out, I’ll take a look.

  3. / Reply

    It’s a small thing, but jQuery Masonry is also being bundled in Core and is in use in the Custom Headers page to make it just a bit prettier.

    1. / Reply

      I think in the end they actually went with a CSS solution instead and ultimately removed Masonry.

      1. / Reply

        Nope – it’s in there http://codex.wordpress.org/Version_3.5

    2. / Reply

      Oh! jQuery Mansory?! – Thank you, Doug, for mention it… that’s welcome change also

  4. / Reply

    Oh… I hope nothing breaks or else another update round for my themes…

    • Paul,
    • November 28, 2012
    / Reply

    The gallery looks much better. Look forward to playing around with it.

  5. / Reply

    I think it’s worth mentioning that the color picker is using a completely different library, formerly Farbtastic, now Iris, only because many plugins and themes integrated Farbtastic after 3.4 dropped. If those devs were linking to the Farbtastic library shipped with core, they may need to update to using Iris.

    1. / Reply

      @Drew Jaynes
      Good point about Farbtastic, thank you…
      As far as I can see it’s a part of movement to make themes rely more on built-in customizer… if theme used it to tweak colors instead of own UI – there would not be any problem. There are details http://make.wordpress.org/core/2012/11/30/new-color-picker-in-wp-3-5/

  6. / Reply

    Oh is it out already? Me and my team here at work are rather reluctant to update just yet.. I hope the new version will work well. In fact I even plan to update my personal site with it so I’d be able to test it guilt-free :)

    • Matt,
    • November 30, 2012
    / Reply

    You may wish to make this more clear? The Media Library has largely remained unchanged but the “Add Media” Modal Dialog however has been completely redesigned.

      • Matt,
      • December 1, 2012
      / Reply

      With the new updates to the TinyMCE editor, has any attention to how WP adds extra tags when wrap shortcodes across lines?

Leave a Reply

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

Deals