Version 3.3

You are here:

On December 12, 2011, WordPress Version 3.3, named for Sonny Stitt, was released to the public. For more information on this major release, read the WordPress Blog.

For Version 3.3, the database version (db_version in wp_options) changed to 19470, and the Trac revision was 19592.

  • View Closed Tickets


  • Easier Uploading
    • File Type Detection – A single upload button
    • Drag-and-Drop Media Uploader
  • Dashboard Design
    • New Toolbar in the dashboard, combining the Admin Bar and admin header
    • Responsive design for some screens, including iPad/tablet support
    • Flyout menus, providing single-click access to any screen
  • New User Experience
    • New feature pointers, helping users navigate new features
    • Post-update About screen
    • Dashboard welcome area for new installs
  • Content Tools
    • Better co-editing that releases post locks immediately
    • Don’t lose widgets when switching themes
    • Tumblr Importer
  • Under the Hood improvements
    • Use the postname permalink structure without a performance penalty
    • Improved Editor API
    • is_main_query() function and WP_Query method
    • Remove a number of funky characters from post slugs
    • jQuery 1.7.1 and jQuery UI 1.8.16
    • A new Screen API for adding help documentation and adapting to screen contexts
    • Improved metadata API
  • Performance improvements and hundreds of bug fixes

Top ↑

User Features 


  • Admin doctype changed to HTML5 (#18202)
  • Show Toolbar in backend by default (#17899)
  • Drag and drop multi-file uploading (except older IE)
  • Fix Press This editors
  • Switch admin menus to flyouts from dropdowns
  • WebMatrix support
  • Improve cron locking; avoid multiple cron processes looping over the same events
  • Add pointers feature, and pointer to admin bar
  • Introduce help tabs and WP_Screen
  • Style tweaks to the update nag

Top ↑


  • Ensure text in the dashboard recent comments widget wraps up properly

Top ↑


  • When inserting a Gallery to be ordered by Date/Time use the post_date field for ordering rather than ID
  • Rename ‘Post Tags’ to ‘Tags’
  • Make DFW (Distraction-Free Writing) content width match exactly the reported width from the theme
  • Improve the image drag-resize detection in the visual editor (supported in FF and IE only), remove the size-* class if the image is soft-resized
  • Add TinyMCE command to handle opening of the upload/insert popup, fix the shortcut “Alt+Shift+M”, fix the “image” button in DFW
  • Allow Apostrophes in Post Passwords
  • Add post formats to quick edit and bulk edit
  • Hide post title field in DFW if title is not supported by the current post type or missing
  • Clean up remnants from having negative Post_ID

Top ↑


  • Merge media buttons into one
  • Add the styling for “drop area” to Media->Add New
  • Add support for rar and 7z file uploading

Top ↑

Top ↑


  • Use WP_Editor when editing or replying to comments
  • Use ‘View Post’ instead of ‘#’ for view post links in comment rows

Top ↑


  • Use the Settings fields/sections API in Twenty Eleven
  • Load all Parent theme stylesheets before Child theme stylesheets in the TinyMCE Editor
  • Clean up Plugin/Theme uploads after successfully installing them
  • Improved Theme upload and validation
  • Avoid losing widgets when switching themes
  • Make Distraction Free Writing content width match exactly the reported width from the theme
  • Allow current_theme_supports() to be used to check for specific post formats
  • Improved Menus
  • Contextual help for Twenty Eleven theme options page

Top ↑


  • Improved Plugin upload and validation
  • Stop remembering the last viewed plugins screen; always show all plugins when returning to plugins.php

Top ↑


  • Add the Tumblr importer to the Importers List
  • Add wxr_export_skip_postmeta filter for skipping postmeta in exports

Top ↑


  • Removed user option to disable Toolbar (admin-bar in 3.2) in the Dashboard

Top ↑


  • Add postname to Settings > Permalinks and remove the help text talking about permalink performance; make the slugs (and /archives/ rewrite base) translatable
  • Clarify Settings > Privacy
  • Use title case in Settings > General
  • Disallow indexing wp-admin and wp-includes in robots.txt

Top ↑

Install Process 

Top ↑


  • Allow creating sites with IDN domains
  • Move network/settings.php POST handling out of network/edit.php
  • Dissolve wp-admin/network/edit.php
  • Add ‘Network Enable’ link after installing a theme in the network admin
  • Use update_blog_details() in wpmu_update_blogs_date()
  • Change Network Settings to just Settings
  • Implement bulk update for network/themes.php
  • Fix inviting existing users to a site with email confirmation
  • Check for plugin/theme updates every hour when hitting update-core.php, not just themes.php/plugins.php

Top ↑

Development, Themes, Plugins 

  • Abstract word-trimming from wp_trim_excerpt() into wp_trim_words()
  • Add wp_unique_post_slug filter
  • Add _doing_it_wrong() when a plugin or theme accesses $wp_scripts or $wp_styles too early (also fixes localization)
  • Add a filter to is_multi_author()
  • Add a general filter to wp_unique_post_slug to allow for full customisation of the uniqueness functionality
  • Add filter for the args into wp_dropdown_pages() in the page attributes box; give the list_pages filter the context of the post object
  • Add filter so the users can select custom image sizes added by themes and plugin
  • Add filters for install/upgrade queries, so that unit tests installer can force creating InnoDB tables, so that we can use transactions to revert the database to its initial state after each test
  • Add inflation support for in WP_Http_Encoding::compatible_gzinflate()
  • Add magic get/set/isset methods to WP_User to avoid data duplication; standardize on WP_User::ID
  • Add pre_ent2ncr filter
  • add_site_option should not update existing options, should return a boolean and should only run actions on success
  • Allow get_blog_option(null,…) to hit the cache for the current blog; new return values for add_blog_option, update_blog_option, delete_blog_option; don’t set the cache in those functions if add/update/delete_option failed
  • Allow ‘id’ to work in get_bookmarks(); add link_notes even though such sorting is a bad idea
  • Allow sorting by id in get_bookmarks()
  • Allow the text parameter in wp_trim_excerpt() to be omitted altogether, instead of requiring a blank string
  • Automatically set ‘compare’ => ‘IN’ in WP_Meta_Query::get_sql() when the meta value is an array
  • Change month dropdown display in date pickers to include month number
  • Completely remove wp_add_script_data()
  • Consolidate update count code into wp_get_update_data()
  • Count only published posts when updating term counts; fire term count updates on transition_post_status
  • Deprecate add_contextual_help() for get_current_screen()->add_help_tab()
  • Deprecate favorite_actions(), add_contextual_help(), add_screen_option(), move meta_box_prefs() and get_screen_icon() in WP_Screen
  • Deprecate get_userdatabylogin() and get_user_by_email()
  • Deprecate media_upload_(image|audio|video|file)(), type_url_form_(image|audio|video|file)(); these now wrap wp_media_upload_handler() and wp_media_insert_url_form()
  • Deprecate RSS 0.92 feed and 301 it to the default feed
  • Deprecate screen_options(), screen_layout(), screen_meta()
  • Deprecate wpmu_admin_redirect_add_updated_param() and wpmu_admin_do_redirect()
  • Eliminate verbose rewrite rules for ambiguous rewrite structures, resulting in massive performance gains
  • Fix back compat issues with delete_postmeta and deleted_postmeta actions as these should be passed the meta ID
  • Fix QTags.closeAllTags(), replace ‘tb’ with ‘ed’ in quicktags,js to make it clear it is the editor instance not the toolbar, small comments quick edit fixes
  • Fix typos in documentation
  • Fix wp_update_user() so it doesn’t stomp meta fields
  • Force display_errors to off when WP_DEBUG_DISPLAY == false; technically a backwards incompatible change so if you want the passthrough to php.ini (which false used to provide) then use WP_DEBUG_DISPLAY === null
  • Harden up is_user_logged_in() against empty $current_user instances to prevent PHP Notices on XML-RPC requests
  • Have dbDelta() loop through tables it knows about, rather than loop through a potentially expensive and definitely unnecessary SHOW TABLES
  • Improve _wp_menu_output()
  • Improve the parsing of email addresses in wp_mail to re-support RFC2822 nameless “<address@…>” style
  • Instantiate some MS variables as objects before using them
  • Introduce ->mysql to allow drop-ins to declare themselves as MySQL and therefore allow minimum version checks to still apply
  • Introduce is_main_query() that compares the query object against $wp_the_query
  • Introduce metadata_exists(), WP_User::get_data_by(), WP_User::get(), WP_User::has_prop(). Don’t fill user objects with meta
  • Introduce new hooks, registered_post_type for register_post_type, and registered_taxonomy for register_taxonomy
  • Introduce register_meta(), get_metadata_by_mid(), and *_post_meta capabilities
  • Introduce wp_allowed_protocols() for use in wp_kses() and esc_url()
  • Introduce wp_cache_incr() and wp_cache_decr()
  • Introduce WP_Dependencies::get_data() method, change scripts and styles priority to follow the “natural” order in HTML, i.e. the last one wins
  • Introduce wp_get_db_schema() for retrieving various flavors of db schema; eliminates need to use global; allows multiple calls to wpmu_create_blog()
  • Introduce wp_no_robots() and call it for pages that should never be indexed, regardless of blog privacy settings
  • Introduce wp_suspend_cache_addition() to allow reduced memory usage when cache additions aren’t useful
  • Make check_theme_switched() run an action so plugins and themes authors can avoid losing widgets when switching themes
  • Optimise get_term to not query for term_id = 0 and improve the prepared query to use %d for the term_id
  • Optimize parse_request for the home page
  • Performance improvement for wp_list_pluck()
  • Properly handle display of Order, Template, and Parent page attributes in Quick/Bulk Edit
  • Properly handle nested arrays in wp_list_filter()
  • Recognize urls that start with a question mark as relative urls that do not require a scheme to be prepended
  • Refactor Quicktags
  • Remove return by ref from get_role()
  • Remove support for <link rel=start>, end, up, and index. These rel=”” values have been dropped by the HTML Working Group
  • Remove the old root feed files, but don’t add these files to old_files to leave them on existing installs
  • Require show_ui rather than public for a taxonomy’s parent post type
  • Rework get_hidden_meta_boxes() to leverage a full WP_Screen object; prevents custom post types from having their explicitly supported meta boxes being hidden by default
  • Set up the post global variable in the comment feed loops so that any calls to post related template tags work correctly
  • Store screen help and options as static data against WP_Screen; individual screen objects no longer hold data it can’t re-generate on construction or otherwise fetch; convert_to_screen() now returns a WP_Screen object; various globals are gone; introduces WP_Screen::get_option(); allows for a formal factory to be introduced later
  • Support an array or comma-seperated list of excluded category IDs in get_adjacent_post()
  • Support for using wp_enqueue_script() and wp_enqueue_style() in the HTML body; all scripts and styles are added in the footer
  • Sync pomo library with the current GlotPress version
  • Turn delete_meta() , get_post_meta_by_id(), update_meta(), delete_post_meta_by_key() into wrappers around the Metadata API; add back compat *_postmeta actions to Metadata API
  • Turn is_blog_user() into a convenience wrapper around get_blogs_of_user(); fixes is_blog_user() for blog prefixes that do not contain a blog ID
  • Update blog last_updated time only on publish_post; both private_to_published and publish_phone are overly broad and otherwise redundant
  • Update jQuery to 1.7.1
  • Update jQuery UI to 1.8.16
  • Update Plupload to
  • Update quicktags.js (HTML editor)
  • Update TinyMCE to 3.4.5
  • Use add_option() method, introduce add_option_context() method for adding specific text above the screen options
  • Use get_template_directory() instead of TEMPLATEPATH in Twentys Ten and Eleven
  • Use json_encode() for adding script data (formerly l10n); add the same functionality to WP_Styles for adding inline css after a stylesheet has been outputted
  • Use wp_print_scripts() in install.php
  • Various PHPdoc updates including: for all_items, menu_name, WP_List_Table::views(), cache.php, get_option(), wpdb::prepare(), get_template_part(), esc_url(), get_meta_sql(), WP_Screen, WP_Http_Encoding::compatible_gzinflate(), zeroise(), wp_add_script_before(), wp_editor()
  • WP_Filesystem_*::mkdir() untrailingslash path consistently, don’t waste time attempting to create an “empty” path
Was this article helpful?
Dislike 0
Views: 2