WordPress 4.6, “Pepper”, has been released. It’s named, as always, after a famous jazz musician, and this release is named after Park Frederick "Pepper" Adams III, a baritone saxophonist and jazz composer.
The Release Lead for WordPress 4.6 was Dominik Schilling, known often as Ocean90, and the Deputy Release Lead was Garth Mortensen. There were 272 total contributors to this release. According to Aaron Jorbin, 85 of these contributors were first timers, so congratulations to all new WordPress contributors!
For this release, we did a special episode of the Post Status Draft podcast, which you can find on iTunes, Google Play, Stitcher, and via RSS for your favorite podcatcher. Post Status Draft is hosted by Joe Hoyle — the CTO of Human Made — and me, Brian Krogsgard.
In this episode, Joe and I discuss WordPress 4.6 and deep dive on a few of its features.
Overall, this was a planned iterative release from the beginning, with a goal to fix as many longstanding bugs as possible, and to refine existing features, rather than to focus on a lot of brand new features.
Folks have been clamoring for a release like this for a long time, and in most respects 4.6 delivered. According to Trac, 489 tickets were closed, across 53 components, during the 4.6 milestone. Also, it shipped exactly on time.
This was the second release where "shiny updates" features were a focus. To see some under the hood considerations for developers, there's more information on that from Pascal Birchler.
By the way, the declaration of fonts has a good bit of science behind it, and may be useful for those of you who wish to do something similar for your site body copy. Marcin Wichary has a really interesting post describing Medium's process for the switch.
And if you're curious, the new declaration is this:
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
href
is properly formatted. So, it will catch if you accidentally type something like htp://w.org
or http:/w.org
and outline it in read for you to fix.If you copy and past a URL into the link editor, but don't include http://
at all (I do this a bunch), it auto detects and inserts it for you.
So I typed the first sentence below, saved a draft, then typed the second paragraph:
What if I start typing and save a draft?Then start typing some more, because that's what bloggers do. And I chill here for a few seconds, then stupidly just reload this page?
And just like that, the content is back, because it was saved in the browser's local storage. Pretty cool.
register_meta()
function allows developers to tell WordPress more about what specific meta data is designed to do. In WordPress 4.6, the arguments for this function have changed, enabling more information to be communicated in the third parameter, which is now an array.The show_in_rest
key, an experimental key (until the API endpoint goes in), finally solves the issue for the REST API for knowing when to include meta data in the API's default responses. It's one step of a few that need to be made to better support meta for the API, but it's a good step forward.
For plugin developers not using register_meta()
, be sure to learn more about it and the advantages, as there are quite a few. Jeremy Felt describes how to use register_meta
on Make Core.
load_plugin_textdomain()
and load_theme_textdomain()
no longer need to be used.Commercial plugin authors will still largely follow the same internationalization procedures they always have.
In a related note, and quite impressively, WordPress 4.6 shipped 100% translated in 50+ languages.
Resource Hints is a rather new W3C specification that “defines thedns-prefetch
,preconnect
,prefetch
, andprerender
relationships of the HTML Link Element ()”. These can be used to assist the browser in the decision process of which origins it should connect to, and which resources it should fetch and preprocess to improve page performance.In 4.6, WordPress adds an API to register and use resource hints. The relevant ticket is #34292.
Developers can use the
wp_resource_hints
filter to add custom domains and URLs fordns-prefetch
,preconnect
,prefetch
orprerender
. One needs to be careful to not add too many resource hints as they could quite easily negatively impact performance, especially on mobile.
WP_Site_Query
and WP_Network_Query
, and goes over a few new functions and filters.There is now a persistent comment cache, allowing more performant comment loading functionality.
The WordPress HTTP API now uses the Requests library, as Ryan McCue describes.
Aaron Jorbin describes some of the lower level WordPress loading priorities and defaults that have changed. He also describes how WP CLI and core have reconciled their differences in wp-settings.php
, which makes backward compatability for WP CLI possible now.
Boone Gorges describes the introduction of WP_Term_Query
. He’s the term whisperer. As Joe and I discuss in the podcast, these sorts of changes make for better consistency in WordPress, and provide an improved developer experience.
Also check out the official 4.6 Codex page that has a lot of handy information and links to source Trac tickets. You can see all closed tickets from 4.6 on the Trac milestone. View all new functions, classes, methods, and hooks on the official Developer Reference. And learn more about some of what I discuss above, and other items, on the ever-helpful field guide.
For the record, WordPress 4.5 was downloaded more than 45 million times. You can track 4.6 downloads on the page dedicated to the task.
Thank you to everyone who contributed to WordPress 4.6! I hope you have a 🍺 or 🍻 to celebrate if that's your kind of thing, or otherwise 🎉 your efforts.