Title: Version 4.9
Published: October 12, 2018

---

# Version 4.9

## In this article

 * [Highlights](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#highlights)
    - [Customizer Workflow Improved](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#customizer-workflow-improved)
    - [Coding Enhancements](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#coding-enhancements)
    - [Even More Widget Updates](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#even-more-widget-updates)
    - [Site Building Improvements](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#site-building-improvements)
    - [Developer Happiness](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#developer-happiness)
    - [The Finer Points](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#the-finer-points)
 * [What’s New](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#whats-new)
    - [General](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#general)
    - [Posts](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#posts)
    - [Media](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#media)
    - [Comments](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#comments)
    - [Appearance](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#appearance)
    - [Users](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#users)
    - [Install Process](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#install-process)
    - [Multisite](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#multisite)
    - [Accessibility](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#accessibility)
 * [Under The Hood](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#under-the-hood)
    - [General](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#general-2)
    - [Images](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#images)
    - [Embeds](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#embeds)
    - [Script Loader](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#script-loader)
    - [JavaScript](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#javascript)
    - [Bug Fixes](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#bug-fixes)
    - [Multisite](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#multisite-2)
    - [Rest API](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#rest-api)
    - [Classes](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#classes)
    - [Functions](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#functions)
    - [Actions & Filters](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#actions-filters)
    - [External Libraries](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#external-libraries)
    - [Miscellaneous](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#miscellaneous)

[ Back to top](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#wp--skip-link--target)

On November 15, 2017, WordPress Version 4.9, named for jazz musician Billy Tipton,
was released to the public. WordPress 4.9 will smooth your design workflow and keep
you safe from coding errors. For more information on this enhancement and bug-fix
release, read the [WordPress Blog](https://wordpress.org/news/2017/11/tipton/), 
and see the [Changelog for 4.9](https://codex.wordpress.org/Changelog/4.9).

For [Version 4.9](https://wordpress.org/support/wordpress-version/version-4-9/?output_format=md),
the database version (**db_version** in **wp_options**) remained at 38590, and the
[Trac](https://core.trac.wordpress.org) revision was 42195.

 * [View Closed Tickets](https://trac.wordpress.org/query?status=closed&milestone=4.9)

## 󠀁[Highlights](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#highlights)󠁿

Welcome to an improved Customizer workflow with design drafts, locking, scheduling,
and preview links. What’s more, code syntax highlighting and error checking will
make for a clean and smooth site building experience. Finally, if all that wasn’t
pretty great, we’ve got a great new Gallery widget and improvements to theme browsing
and switching.

### 󠀁[Customizer Workflow Improved](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#customizer-workflow-improved)󠁿

**Draft and Schedule Site Design Customizations**

Yes, you read that right. Just like you can draft and revise posts and schedule 
them to go live on the date and time you choose, you can now tinker with your site’s
design and schedule those design changes to go live as you please.

[[

**Collaborate with Design Preview Links**

Need to get some feedback on proposed site design changes? WordPress 4.9 gives you
a preview link you can send to your team and customers so that you can collect and
integrate feedback before you schedule the changes to go live. Can we say collaboration
++?

**Design Locking To Guard Your Changes**

Ever encounter a scenario where two designers walk into a project and designer A
overrides designer B’s beautiful changes? WordPress 4.9’s design lock feature (similar
to post locking) secures your draft design so that no one can make changes to it
or erase all your hard work.

**A Prompt to Protect Your Work**

Were you lured away from your desk before you saved your new draft design? Fear 
not, when you return, WordPress 4.9 will politely ask whether or not you’d like 
to save your unsaved changes.

[[

### 󠀁[Coding Enhancements](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#coding-enhancements)󠁿

**Syntax Highlighting and Error Checking? Yes, Please!**

You’ve got a display problem but can’t quite figure out exactly what went wrong 
in the CSS you lovingly wrote. With syntax highlighting and error checking for CSS
editing and the Custom HTML widget introduced in WordPress 4.8.1, you’ll pinpoint
coding errors quickly. Practically guaranteed to help you scan code more easily 
and suss out and fix code errors quickly.

**Sandbox for Safety**

The dreaded white screen. You’ll avoid it when working on themes and plugin code
because WordPress 4.9 will warn you about saving an error. You’ll sleep better at
night.

**Warning, Potential Danger Ahead!**

When you edit themes and plugins directly, WordPress 4.9 will politely warn you 
that this is a dangerous practice. It will recommend that you backup your files 
before saving, so they don’t get overwritten by the next update. Take the safe route:
your future self will thank you. Your team and customers will thank you.

### 󠀁[Even More Widget Updates](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#even-more-widget-updates)󠁿

**The New Gallery Widget**

An incremental improvement to the media changes hatched in WordPress 4.8, you can
now add a gallery via widget. Yes!

[[

**Press a Button, Add Media**

Want to add media to your text widget? Embed images, video, and audio directly into
the widget along with your text, with our simple but useful Add Media button. Woo!

[[

**Shortcodes in Text Widget**

One very longstanding request—for over 8 years is finally implemented in WordPress
[Version 4.9](https://wordpress.org/support/wordpress-version/version-4-9/?output_format=md).
It is no longer required to have plugins and themes do `add_filter( 'widget_text','
do_shortcode' )`.

### 󠀁[Site Building Improvements](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#site-building-improvements)󠁿

**More Reliable Theme Switching**

When you switch themes, widgets sometimes think they can just up and move location.
Improvements in WordPress 4.9 offer more persistent menu and widget placement when
you decide it’s time for a new theme. Additionally, you can preview installed themes
or download, install, and preview new themes right. Nothing says handy like being
able to preview before you deploy.

[[

**Better Menu Instructions = Less Confusion**

Were you confused by the steps to create a new menu? Perhaps no longer! We’ve ironed
out the UX for a smoother menu creation process. Newly updated copy will guide you.

[[

### 󠀁[Developer Happiness](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#developer-happiness)󠁿

**Customizer JS API Improvements**

We’ve made numerous improvements to the Customizer JS API in WordPress 4.9, eliminating
many pain points and making it just as easy to work with as the PHP API. There are
also new base control templates, a date/time control, and section/panel/global notifications
to name a few. [Check out the full list.](https://make.wordpress.org/core/2017/11/01/improvements-to-the-customize-js-api-in-4-9/)

**MediaElement.js upgraded to 4.2.6**

WordPress 4.9 includes an [upgraded version of MediaElement.js](https://make.wordpress.org/core/2017/11/01/improvements-to-the-customize-js-api-in-4-9/),
which removes dependencies on jQuery, improves accessibility, modernizes the UI,
and fixes many bugs.

**CodeMirror available for use in your themes and plugins**

We’ve introduced a [new code editing library, CodeMirror](https://make.wordpress.org/core/2017/10/22/code-editing-improvements-in-wordpress-4-9/),
for use within core. Use it to improve any code writing or editing experiences within
your plugins, like CSS or JavaScript include fields.

**Improvements to Roles and Capabilities**

[New capabilities](https://make.wordpress.org/core/2017/10/15/improvements-for-roles-and-capabilities-in-4-9/)
have been introduced that allow granular management of plugins and translation files.
In addition, the site switching process in multisite has been fine-tuned to [update the available roles and capabilities](https://make.wordpress.org/core/2017/10/15/improvements-for-roles-and-capabilities-in-4-9/)
in a more reliable and coherent way.

### 󠀁[The Finer Points](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#the-finer-points)󠁿

**Singular capabilities for activating and deactivating individual plugins**

The singular `activate_plugin` and `deactivate_plugin` capabilities are used along
with the corresponding plugin name when determining whether or not a user can activate
or deactivate an individual plugin.

**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.

**Addition of dirty state for widgets on the Administration Screen**

indicating when a widget has been successfully saved and showing an “Are you sure?”
dialog when attempting to leave without saving changes.

## 󠀁[What’s New](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#whats-new)󠁿

### 󠀁[General](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#general)󠁿

 * Drafting ([#39896](https://core.trac.wordpress.org/ticket/39896)) and scheduling(
   [#28721](https://core.trac.wordpress.org/ticket/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.
 * 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](https://core.trac.wordpress.org/ticket/39896))
 * Addition of autosave revisions in the Customizer ([#39275](https://core.trac.wordpress.org/ticket/39275))
 * A brand new theme browsing experience in the Customizer ([#37661](https://core.trac.wordpress.org/ticket/37661))
 * Improve the flow for creating new menus in the Customizer ([#40104](https://core.trac.wordpress.org/ticket/40104))
 * Educated guess mapping of nav menus and widgets when switching themes ([#39692](https://core.trac.wordpress.org/ticket/39692))
 * Plugins: Introduce singular capabilities for activating and deactivating individual
   plugins ([#38652](https://core.trac.wordpress.org/ticket/38652))
 * Sandbox PHP file edits in both plugins and themes ([#21622](https://core.trac.wordpress.org/ticket/21622))

### 󠀁[Posts](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#posts)󠁿

### 󠀁[Media](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#media)󠁿

 * Support for videos from providers other than YouTube and Vimeo in the Video widget(
   [#42039](https://core.trac.wordpress.org/ticket/42039))
 * Media: Upgrade MediaElement.js to 4.2.5-74e01a40 ([#39686](https://core.trac.wordpress.org/ticket/39686))
 * Media: Use max-width for default captions ([#33981](https://core.trac.wordpress.org/ticket/33981))
 * Media: Reduce duplicated custom header crops in the Customizer ([#21819](https://core.trac.wordpress.org/ticket/21819))
 * Media: Store video creation date in meta ([#35218](https://core.trac.wordpress.org/ticket/35218))

### 󠀁[Comments](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#comments)󠁿

### 󠀁[Appearance](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#appearance)󠁿

 * Gallery widget ([#41914](https://core.trac.wordpress.org/ticket/41914)), following
   the media and image widgets introduced in [Version 4.8](https://codex.wordpress.org/Version_4.8)
 * Support for shortcodes in Text widgets ([#10457](https://core.trac.wordpress.org/ticket/10457))
 * Support for adding media to Text widgets ([#40854](https://core.trac.wordpress.org/ticket/40854))
 * Addition of dirty state for widgets on the [Administration Screen](https://codex.wordpress.org/Administration_Screens),
   indicating when a widget has been successfully saved and showing an “Are you 
   sure?” dialog when attempting to leave without saving changes ([#23120](https://core.trac.wordpress.org/ticket/23120),
   [#41610](https://core.trac.wordpress.org/ticket/41610))

### 󠀁[Users](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#users)󠁿

 * Role/Capability: Introduce capabilities dedicated to installing and updating 
   language files ([#39677](https://core.trac.wordpress.org/ticket/39677))
 * Users: Require a confirmation link in an email to be clicked when a user attempts
   to change their email address ([#16470](https://core.trac.wordpress.org/ticket/16470))

### 󠀁[Install Process](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#install-process)󠁿

### 󠀁[Multisite](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#multisite)󠁿

### 󠀁[Accessibility](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#accessibility)󠁿

## 󠀁[Under The Hood](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#under-the-hood)󠁿

### 󠀁[General](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#general-2)󠁿

 * CodeMirror editor added to theme/plugin editor, Custom CSS in Customizer, and
   Custom HTML widgets ([#12423](https://core.trac.wordpress.org/ticket/12423))
 * Introduction of an extensible code editor control for adding instances of CodeMirror
   to the Customizer ([#41897](https://core.trac.wordpress.org/ticket/41897))
 * Addition of global notifications area ([#35210](https://core.trac.wordpress.org/ticket/35210)),
   panel and section notifications ([#38794](https://core.trac.wordpress.org/ticket/38794)),
   and a notification overlay that takes over the entire screen in the Customizer(
   [#37727](https://core.trac.wordpress.org/ticket/37727)).
 * A date/time control in the Customizer ([#42022](https://core.trac.wordpress.org/ticket/42022))
 * Introduction of control templates for base controls ([#30738](https://core.trac.wordpress.org/ticket/30738))
 * Use WP_Term_Query when transforming tax queries ([#37038](https://core.trac.wordpress.org/ticket/37038))
 * Database: Add support for MySQL servers connecting to IPv6 hosts ([#41722](https://core.trac.wordpress.org/ticket/41722))
 * Emoji: Bring Twemoji compatibility to PHP ([#35293](https://core.trac.wordpress.org/ticket/35293))
 * Introducing search by amount of comments in WP_Query ([#28399](https://core.trac.wordpress.org/ticket/28399))

### 󠀁[Images](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#images)󠁿

### 󠀁[Embeds](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#embeds)󠁿

 * Support for adding oEmbeds outside post content, including Text widgets ([#34115](https://core.trac.wordpress.org/ticket/34115))

### 󠀁[Script Loader](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#script-loader)󠁿

### 󠀁[JavaScript](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#javascript)󠁿

 * Improve usability of Customize JS API ([#42083](https://core.trac.wordpress.org/ticket/42083),
   [#37964](https://core.trac.wordpress.org/ticket/37964), [#36167](https://core.trac.wordpress.org/ticket/36167))

### 󠀁[Bug Fixes](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#bug-fixes)󠁿

### 󠀁[Multisite](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#multisite-2)󠁿

 * Multisite: Introduce get_site_by() ([#40180](https://core.trac.wordpress.org/ticket/40180))
 * Multisite: Improve get_blog_details() by using get_site_by() ([#40228](https://core.trac.wordpress.org/ticket/40228))
 * Multisite: Improve initializing available roles when switch sites ([#38645](https://core.trac.wordpress.org/ticket/38645))
 * Multisite: Initialize a user’s roles correctly when setting them up for a different
   site ([#36961](https://core.trac.wordpress.org/ticket/36961))

### 󠀁[Rest API](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#rest-api)󠁿

 * REST API: Support registering complex data structures for settings and meta
 * REST API: Support for objects in schema validation and sanitization ([#38583](https://core.trac.wordpress.org/ticket/38583))

### 󠀁[Classes](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#classes)󠁿

#### 󠀁[What’s New](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#whats-new-2)󠁿

 * I18N: Introduce the Plural_Forms class ([#41562](https://core.trac.wordpress.org/ticket/41562))

#### 󠀁[Deprecated](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#deprecated)󠁿

### 󠀁[Functions](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#functions)󠁿

#### 󠀁[What’s New](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#whats-new-3)󠁿

#### 󠀁[Deprecated](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#deprecated-2)󠁿

### 󠀁[Actions & Filters](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#actions-filters)󠁿

#### 󠀁[New Action Hooks](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#new-action-hooks)󠁿

#### 󠀁[New Filter Hooks](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#new-filter-hooks)󠁿

#### 󠀁[Modified Filter Hooks](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#modified-filter-hooks)󠁿

#### 󠀁[Deprecated](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#deprecated-3)󠁿

### 󠀁[External Libraries](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#external-libraries)󠁿

 * Remove SWFUpload ([#41752](https://core.trac.wordpress.org/ticket/41752)).

### 󠀁[Miscellaneous](https://wordpress.org/documentation/wordpress-version/version-4-9/?output_format=md#miscellaneous)󠁿

 * Core and the unit test suite is fully compatible with the upcoming release of
   PHP 7.2

See also: other [WordPress Versions](https://codex.wordpress.org/WordPress_Versions)

First published

October 12, 2018

Last updated