On April 16, 2014, WordPress Version 3.9, named for jazz musician Jimmy Smith, was released to the public. For more information on this enhancement and bug-fix release, read the WordPress Blog, and see the Changelog for 3.9.
For Version 3.9, the database version (db_version in wp_options) changed to 27916, and the Trac revision was 28154.
Highlights
- A smoother media editing experience
- Improved visual editing – speed, accessibility, and mobile support
- Edit images easily – quicker access to crop and rotation tools, scale images directly in the editor
- Drag and drop your images right onto the editor
- Image gallery previews right in the editor
- Showcase music and clips with simple audio and video playlists
- Live widget and header image previews in the Customizer
- Stunning new theme browser
- For Developers
- Themes can now use HTML5 markup for captions and galleries
- Inline code documentation for action and filter hooks, and media manager and customizer APIs
- External libraries have been updated
- Improved database layer
- New utility functions
What’s New
General
- The “update” message has been restored to the dashboard
Posts
- Add “Return to post editor” link from Revisions screen
- A “View Post” link will now show for any post an author can read
- Distraction Free Writing mode is now responsive to any size device
Media
- Edit images from the Add Media modal
- Improvements to the “Attach Media” pop-up interface
- Better support for auto-playing videos
- Drag and Drop files into the editor
- Full-screen Drag and Drop zone in Distraction Free Writing
- oEmbed support added for imgur and meetup.com
Comments
- Small improvements to comment administration screens, link colors, language tweaks
Appearance
- Widget Customizer management
- Upload header images with cropping in the Customizer
- Improved theme install workflow
Users
- Admin auto-complete improvements
- Make sure the “Send this password to the new user by email” toggle option value is remembered
Accessibility
- Improved focus styles for form elements throughout the admin
- Keyboard accessibility added for theme install screen and theme action buttons
Install Process
- Make it easier to customize the install process
- Passwords with apostrophes are no longer allowed on installation
Multisite
- Add autocomplete for the admin email account to the “new site” form
Under The Hood
General
- Add ability to output galleries as HTML5
- Introduce doing_filter() and doing_action() to identify hooks in progress
- Introduce .dashicons-before class to make it easier to use a Dashicon before an element
- Add ability to symlink plugins
- The core colors.css file was merged into wp-admin.css, resulting in 1,065 fewer lines of admin CSS
- Dashicons updated to latest. Adds line break, paragraph, code, and bbPress.
- Add a TTL to core update checks to allow narrowing of the 12-hour update window
- The ‘role’ attribute is now allowed in kses for all elements
- Rewrite endpoints can now specify a query variable name
JavaScript
- Autosave JS has been refactored to use the Heartbeat API
- Heartbeat: Hooks will now always receive unslashed data
- Options passed to Backbone.View’s constructor are no longer attached automatically. wp.Backbone.View now handles this
- Big improvements to documentation of Backbone media-views
- Updated media-views and wp.Backbone.View for Backbone 1.1
- Masonry has a new script handle, ‘masonry’, and no longer depends on jQuery
Bug Fixes
- wp_auth_check now runs properly on every Heartbeat tick
- Post/page items are now removed from nav menus when the post/page is deleted
- Ensure the $path is trailing-slashed in domain_exists()
- Fix bulk activation of network-only plugins
- Texturize: Massive performance improvements (~600% faster); better handling of braces, nbsp, double, and weird spaces
Multisite
- Introduce get_network_by_path()
- Introduce wp_get_network()
- Introduce Function_Reference/get_site_by_path|get_site_by_path()
- Incremental improvements and bug fixes with the multisite load process
- Introduce an ms_site_not_found filter to replace NOBLOGREDIRECT
Classes
What’s New
- Introduce WP_Customize_Widgets
- Introduce WP_Customize_Manager->$widgets
- Introduce WP_Upgrader_Skin::decrement_update_count()
- Introduce Bulk_Upgrader_Skin::decrement_update_count()
- Introduce wpdb::$reconnect_retries
- Introduce wpdb::$incompatible_modes
- Introduce wpdb::$use_mysqli
- Introduce wpdb::set_sql_mode()
- Introduce wpdb::check_connection()
Functions
What’s New
- Introduce wp_normalize_path|wp_normalize_path()
- Introduce has_image_size()
- Introduce remove_image_size()
- Introduce wp_playlist_shortcode()
- Introduce wp_maybe_generate_attachment_metadata()
- Introduce _count_posts_cache_key()
- Introduce get_the_permalink()
- Introduce wp_validate_logged_in_cookie()
Deprecated
- _relocate_children()
- default_topic_count_text()
- get_current_site_name()
- format_to_post()
- wpmu_current_site()
Actions & Filters
New Actions
- Introduce resetpass_form
- Introduce wp_install
- Introduce wp_upgrade
- Introduce wp_playlist_scripts
- Introduce dynamic_sidebar_before
- Introduce dynamic_sidebar_after
New Filters
- Introduce get_adjacent_post_query_args
- Introduce post_playlist
- Introduce wp_insert_attachment_data
- Introduce incompatible_sql_modes
- Introduce theme_page_templates
- Introduce pre_get_network_by_path
- Introduce network_by_path_segments_count
- Introduce site_by_path_segments_count
- Introduce pre_get_site_by_path
- Introduce pre_wp_nav_menu
- Introduce pre_set_theme_mod_$name
- Introduce determine_current_user
- Introduce playlist_styles
- Introduce dynamic_sidebar_has_widgets
- Introduce is_active_sidebar
- Introduce ms_site_not_found
- Introduce pre_update_option
Deprecated
- format_to_post
External Libraries
- Update to TinyMCE 4.0
- Update to Masonry 3.0
- Update to Backbone 1.1.2
- Update to Underscore 1.6
- Update to PHPMailer 5.2.7
- Update to Plupload 2.1.1
- Update to jQuery 1.11.0
- Update to jQuery UI 1.10.4
- Update to MediaElement 2.14
Miscellaneous
See also: other WordPress Versions.