WordPress 4.9 Beta 1


WordPress 4.9 Beta 1 is now available!

This software is still in development, so we don’t recommend you run it on a production site. Consider setting up a test site just to play with the new version. To test WordPress 4.9, try the WordPress Beta Tester plugin (you’ll want “bleeding edge nightlies”). Or you can download the beta here (zip).

WordPress 4.9 is slated for release on November 14, but we need your help to get there. We’ve been working on making it even easier to customize your site. Here are some of the bigger items to test and help us find as many bugs as possible in the coming weeks:

  • Drafting (#39896) and scheduling (#28721) of changes in the Customizer. Once you save or schedule a changeset, when any user comes into the Customizer the pending changes will be autoloaded. A button is provided to discard changes to restore the Customizer to the last published state. (This is a new “linear” mode for changesets, as opposed to “branching” mode which can be enabled by filter so that every time  user opens the Customizer a new blank changeset will be started.)
  • Addition of a frontend preview link to the Customizer to allow changes to be browsed on the frontend, even without a user being logged in (#39896).
  • Addition of autosave revisions in the Customizer (#39275).
  • A brand new theme browsing experience in the Customizer (#37661).
  • Gallery widget (#41914), following the media and image widgets introduced in 4.8.
  • Support for shortcodes in Text widgets (#10457).
  • Support for adding media to Text widgets (#40854).
  • Support for adding oEmbeds outside post content, including Text widgets (#34115).
  • Support for videos from providers other than YouTube and Vimeo in the Video widget (#42039)
  • Improve the flow for creating new menus in the Customizer (#40104).
  • Educated guess mapping of nav menus and widgets when switching themes (#39692).
  • Plugins: Introduce singular capabilities for activating and deactivating individual plugins (#38652).
  • Sandbox PHP file edits in both plugins and themes, without auto-deactivation when an error occurs; a PHP edit that introduces a fatal error is rolled back with an opportunity then for the user to fix the error and attempt to re-save. (#21622).
  • Addition of dirty state for widgets on the admin screen, indicating when a widget has been successfully saved and showing an “Are you sure?” dialog when attempting to leave without saving changes. (#23120, #41610)

As always, there have been exciting changes for developers to explore as well, such as:

  • CodeMirror editor added to theme/plugin editor, Custom CSS in Customizer, and Custom HTML widgets. Integration includes support for linters to catch errors before you attempt to save. Includes new APIs for plugins to instantiate editors. (#12423)
  • Introduction of an extensible code editor control for adding instances of CodeMirror to the Customizer. (#41897)
  • Addition of global notifications area (#35210), panel and section notifications (#38794), and a notification overlay that takes over the entire screen in the Customizer (#37727).
  • A date/time control in the Customizer (#42022).
  • Improve usability of Customize JS API (#42083, #37964, #36167).
  • Introduction of control templates for base controls (#30738).
  • Use WP_Term_Query when transforming tax queries (#37038).
  • Database: Add support for MySQL servers connecting to IPv6 hosts (#41722).
  • Emoji: Bring Twemoji compatibility to PHP (#35293). Test for any weirdness with emoji in RSS feeds or emails.
  • I18N: Introduce the Plural_Forms class (#41562).
  • Media: Upgrade MediaElement.js to 4.2.5-74e01a40 (#39686).
  • Media: Use max-width for default captions (#33981). We will want to make sure this doesn’t cause unexpected visual regressions in existing themes, default themes were all fine in testing.
  • Media: Reduce duplicated custom header crops in the Customizer (#21819).
  • Media: Store video creation date in meta (#35218). Please help test different kinds of videos.
  • Multisite: Introduce get_site_by() (#40180).
  • Multisite: Improve get_blog_details() by using get_site_by() (#40228).
  • Multisite: Improve initializing available roles when switch sites (#38645).
  • Multisite: Initialize a user’s roles correctly when setting them up for a different site (#36961).
  • REST API: Support registering complex data structures for settings and meta
  • REST API: Support for objects in schema validation and sanitization (#38583)
  • Role/Capability: Introduce capabilities dedicated to installing and updating language files (#39677).
  • Remove SWFUpload (#41752).
  • Users: Require a confirmation link in an email to be clicked when a user attempts to change their email address (#16470).
  • Core and the unit test suite is fully compatible with the upcoming release of PHP 7.2

If you want a more in-depth view of what major changes have made it into 4.9, check out posts tagged with 4.9 on the main development blog, or look at a list of everything that’s changed. There will be more developer notes to come, so keep an eye out for those as well.

Do you speak a language other than English? Help us translate WordPress into more than 100 languages!

If you think you’ve found a bug, you can post to the Alpha/Beta area in the support forums. We’d love to hear from you! If you’re comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

Happy testing!

Without your testing,
we might hurt the internet.
Please help us find bugs.🐛


Get the Latest Updates

WP Briefing — The WordPress Podcast

Learn about where WordPress is going and how you can get involved.