On December 11, 2012, WordPress Version 3.5, named for jazz drimmer Elvin Jones, 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.5.
For Version 3.5, the database version (db_version in wp_options) changed to 22441, and the Trac revision was r23171.
Highlights
- New Media Manager
- Beautiful interface: A streamlined, all-new experience
- Create galleries faster with drag-and-drop reordering, inline caption editing, and simplified controls
- Insert multiple images at once with Shift/Ctrl+click
- New Default Theme – Twenty Twelve
- Simple, flexible, elegant
- Mobile-first, responsive design
- Gorgeous Open Sans typeface
- Uses the latest Theme Features
- Admin Enhancements
- New Welcome Screen
- Retina-Ready (HiDPI) Admin
- Hide Link Manager for new installs
- Better accessibility for screenreaders, touch devices, and keyboard users
- More polish on admin screens, including a new color picker
- For Developers
- WP_Comment_Query and WP_User_Query accept now meta queries just like WP_Query
- Meta queries now support querying for objects without a particular meta key
- Post objects are now instances of a WP_Post class, which improves performance and caching
- Multisite’s switch_to_blog() is now significantly faster and more reliable
- WordPress has added the Underscore and Backbone JavaScript libraries
- TinyMCE, jQuery, jQuery UI, and SimplePie have all been updated to the latest versions
- Image Editing API for cropping, scaling, etc., that uses ImageMagick as well as GD
- XML-RPC: Now always enabled and supports fetching users, managing post revisions, searching
- New “show_admin_column” parameter for register_taxonomy() allows automatic creation of taxonomy columns on associated post-types.
What’s New
Dashboard
- Switch to prompt text in QuickPress to accommodate longer translated input labels
- Button styles updated throughout Dashboard to more modern, rectangular shape
- Help Text improvements throughout
Posts
- Rename the “HTML” editor tab to “Text”
- Prevent child categories from being visually promoted to the top level after Quick Edit
Media
- Add oEmbed suport for SoundCloud.com, SlideShare.net, and Instagram.com
- New Media Manager: Insert multiple galleries per post and independently order images
Accessibility
- Add visible focus within admin screens for better accessibility.
- Add “Skip to content” link to all screens in the admin.
- Add “Skip to toolbar” accessibility shortcut in the admin.
- Add ability to log out of user account without mouse input.
- Add “tab out” of the plugins and themes editors textareas.
Links
- Link Manager is hidden for new installs and for any existing installs that have no links (all sites with existing links are left as is). This can be restored with Link Manager Plugin
- Display links in widget if no link categories
Appearance
- Widgets menu is hidden if your theme hasn’t defined any sidebars
- Improve display of available custom headers with jQuery Masonry
Plugins
- Plugins favorited on WordPress.org can be viewed per user and directly installed from within the Dashboard. (Marking plugins as favorite on WordPress.Org)
Users
- Display name defaults to first name and last name for new users
- Force the user to explicitly choose between content deletion and reassignment when deleting users
Settings
- Remove Settings Privacy Screen and relocate Search Engine Visibility option to Settings Reading Screen
- Remove oEmbed options from the Settings Media Screen. Width adheres to theme’s content width, height is 1.5 times width
- Enable XML-RPC by default, remove Writing Settings option
- Remove AtomPub from core, can be re-enabled with a plugin
- Hide charset option in Settings Reading Screen in new installs, default to UTF-8
Multisite
- Multisite installs now work with WordPress in a subdirectory
- Turn off ms-files.php by default
- File quotas disabled by default on new installs
Under The Hood
The following feature changes improve the quality of WordPress for everyone, but are likely to be more important to core, plugin, and theme developers.
General
- Bump default memory limit from 32MB to 40MB
- Add easier expression of time constants, for example DAY_IN_SECONDS vs 86400
- Add flexible-header to allowed theme tags
- Add ‘publish_post‘ meta capability
- Add ‘term_taxonomy_id‘ field handling to WP_Tax_Query::transform_query(), resulting in fewer database queries
- Add two hooks to Post Editing screen, ‘edit_form_after_title‘ and ‘edit_form_after_editor‘ [more info]
- Allow ordering posts by IDs passed to ‘post__in‘
- Check a post type’s ‘show_in_admin_bar‘ property for ‘View’ and ‘Edit’ object Toolbar links
Bug Fixes
- Incorrect URL for second page of search results
- Re-enable redirect_canonical for IIS
- Handle https for all oEmbed providers
- Fix featured image overflowing its meta box in certain situations
- Fix issue where $format and $link arguments were not being preserved in previous|next_post_link filters
- Fix issue with sideloaded images not making it into the correct upload directories
- Fix multiple captioned image insertion problems in post editor
Multisite
- Multisite: Allow home page of sub-directory sites to resolve regardless of capitalization
- Multisite: Introduce get_space_used() and upload_is_user_over_quota() for more gauging more accurate quotas
- Multisite: Make it easy to replace or augment the over-quota message
Classes
- Fix tax query returning all results when empty
- Add get() and set() methods to WP_User_Query for modifying query variables the way you might with WP_Query
Functions
- Allow count_many_users_posts() to count only public posts
- Add ‘order‘ to wp_get_archives()
- Allow passing stdClass and WP_User to wp_insert_user() and wp_update_user()
- Fix issue where get_blog_id_from_url() did not always return an int
- Fix the matching in is_email_address_unsafe(), which was too aggressive
- Give System temporary directories preference in get_temp_dir() for better Windows compatibility
- Hide UI for attachment taxonomies if ‘show_ui‘ is ‘false‘ for that taxonomy
- Introduce get_edit_user_link() for more direct user-edit links
- Introduce wp_cache_switch_to_blog() and WP_Object_Cache::switch_to_blog() to more efficiently switch the cache to a new blog id
- Introduce clean_blog_cache()
- Introduce wp_checkdate()
- Introduce WP_Image_Editor class, abstracting GD from core, and introducing Imagick support [more info]
- Introduce wp_prepare_attachment_for_js()
- Introduce wp_send_json()
- Introduce wp_send_json_success()
- Introduce wp_send_json_error()
- Introduce is_ms_switched()
- Introduce wp_get_mime_types()
- Introduce wp_oembed_remove_provider()
- Introduce wp_clean_themes_cache()
- Introduce set_url_scheme()
- Make get_home_path() work in more cases by being case insensitive and sanitzing Windows paths
- Make sure attachment_fields_to_edit() returns term slugs not term names
- No markup is output if wp_nav_menu() has no menu items
- Prevent child pages and child categories from being Settings Media Screen, assume they are set to default values
- Return WP_Error object if the database insert in wp_set_object_terms() fails
- Simplify protocol stripping in add_query_arg() by avoiding a regular expression
- Soft-deprecated CUSTOM_TAGS in favor of wp_kses_allowed_html(), adds support for rel attributes
- supports => false can be passed to register_post_type() to disable default title and editor
- Trim incoming searches on the users list table
- Welcome Panel and accompanying screen option removable via the welcome_panel hook
- When reassigning posts and links during user deletion, clear the post and link caches
- WP_Tax_Query::transform_query() is now public
- XML-RPC: Add the ‘home‘ option to wp.getOptons
- XML-RPC: Don’t use switch_to_blog() in wp.getUsersBlogs, improves performance and memory footprint
Filters
- Add cron_request for filtering the cron_url in wp_remote_post()
- Add login_body_class filter to login_header()
- Add media_view_strings and media_view_settings filters. Use media_view_strings to filter ‘Insert into post’ button text
- Add post_type_labels_{$post_type} to filter get_post_type_labels()
- Add restrict_manage_comments hook to comments list table for better filtering capability
- Add validate_password_reset filter, making it possible for plugins to enforce password rules
- Add domain_exists filter for domain_exists()
- Add wp_get_update_data filter making it easier for plugins to modify update count
- Add wp_image_editors filter to allow adding to or modifying order of WP_Image_Editor engines
- XML-RPC: Add xmlrpc_login_error filter to customize the IXR_Error returned when login() fails
Scripts, External Libraries
- Update to Jcrop 0.9.10
- Update to jQuery 1.8.3
- Update to jQuery Color 2.1.0
- Update to jQuery UI 1.9.2
- Update to SimplePie 1.3.1
- Update to TinyMCE 3.5.8
- Add jQuery Masonry for better custom header listings
- Farbtastic color picker replaced with Iris color picker [more info]
- Switch to .min for compressed JS and CSS files, e.g. .js becomes .min.js, .dev.js becomes .js
- Allow protocol-relative URLs when registering/enqueueing scripts and styles
- Prototype and Script.aculo.us local libraries unbundled from core, latest versions enqueued via ajax.googleapis.com
Deprecated
- Deprecate sticky_class() in favor of post_class()
- Deprecate wp_cache_reset()
- Deprecate wp_create_thumbnail()
- Deprecate image_save_pre filter, which filters a GD Resource, for image_editor_save_pre, which filters a WP_Image_Editor object
- Deprecate wp_save_image_file filter, which filters a GD Resource, for wp_save_image_editor_file, which filters a WP_Image_Editor object
- Deprecate image_edit_before_change filter, which filters a GD Resource, for image_edit_before_change, which filters a WP_Image_Editor object
- Deprecate jpeg_quality filter for wp_editor_set_quality, or WP_Image_Editor::set_quality() on an individual image, which sets compression quality for any supported format
- Deprecate wp_load_image() in favor of wp_get_image_editor()
- Deprecate image_resize in favor of WP_Image_Editor::resize()
- Deprecate gd_edit_image_support() in favor of wp_image_editor_supports()