Version 3.4

On June 13, 2012, WordPress Version 3.4, named for guitarist Grant Green, 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.4.

For Version 3.4, the database version (db_version in wp_options) changed to 20596, and the Trac revision was 21076.


  • Enhanced theme control
    • Customize theme options before activating a new theme using Theme Customizer
    • Use Theme Previewer to customize current theme without changing the front-end design
  • Custom Headers
  • Media improvements
    • Support HTML in image captions
  • Under the Hood improvements
    • Improvements in WordPress internationalization and localization (more info)
    • Different split in translation POT files for faster translations
    • Codex XML-RPC information update accessed via XML-RPC_WordPress_API
    • WP_Query improvements

User Features


  • Properly reflect the language on RSS feeds
  • Add support for DFW for all instances of the editor
  • Update license.txt to include ‘How to Apply These Terms to Your New Programs’ at the request of the FSF


  • Dashboard Widgets are available for translation
  • Help Tabs improvements
  • Remove Recently Updated from Plugins widget
  • Add a link to the Customizer from the Admin Bar appearance menu
  • Improve the Recent Comments dashboard widget performance on sites with large amounts of comments


  • Add new comment from post edit screen
  • Display menu_order value in Quick Edit for non-hierarchical post types
  • Change ‘Post Format’ bulk/quick edit label to ‘Format’


  • HTML support has been added to image caption field
  • Add as an oEmbed providers
  • Default Links are now available for translation


  • Remove “Approve” bulk action when viewing spam comments as it isn’t shown in the row actions


  • Update the Theme Customizer in Twenty Ten and Twenty Eleven themes
  • Faster theme searching
  • Post formats should show_in_nav_menus when the current theme supports them
  • Infinite scroll for themes.php and theme-install.php. Bump per page limit for themes.php to 999
  • Add Sort by, and Number of Links to show, to the Links widget
  • Introduce new registration methods for custom headers and custom backgrounds
  • Default to keyword searches for the theme installer
  • Contextual help updates
  • Update install screens to use the new stars


  • Clean up the Plugin installer screenshots page; adds CSS resize support to the images to prevent them requiring scrolling and falling below the FYI box
  • Default to keyword searches for the plugin installer
  • Update install screens to use the new stars



  • After adding a user, take them back to users.php with an ‘Edit user’ link in the message
  • Correct how “Display name publicly as” works when other name fields change


  • Update color scheme definition for gray admin theme
  • Use blue arrows for blue admin’s screen options and help tabs; adjust baseline to be more compatible with Firefox
  • Timezone and start of week can now be specify through translated strings (rather than PHP)

Install Process

  • Don’t allow empty database prefix for multisite
  • Issue an error during the WordPress install process if wp-config.php is configured with an empty database table prefix, which is not supported
  • Remove references to specific search engines


  • Better checking for values for multisite upload limit
  • Only allow _multisite_ super admins to demote themselves on a site
  • Create a network/about.php page and leverage it, to prevent the dashboard from switching to the blog admin
  • Add an “Edit Site” submenu to the admin bar site menu when a super admin visits a blog dashboard
  • Autocomplete for add-user screens
  • Do not save the last visited tab on the multisite Network Themes page and Site Themes tab
  • Make ‘Network Activate’ a bulk action on network/plugins.php
  • Increase default upload space for sites on a network from 10M to 100M
  • Clean up plugins.php with regards to recently edited files, deactivations, and the network admin

Development, Themes, Plugins

  • Add a filter to wp_terms_checklist() that wraps the function’s arguments; mainly designed to allow checked_ontop to be turned off
  • Add WP_Screen methods get_help_tabs()get_help_tab( $id )get_help_sidebar(). Store help tabs by tab ID, not numeric key; allows proper removal with remove_help_tab( $id )
  • Add ‘ep_mask’ as an argument to the ‘rewrite’ array for register_post_type() and register_taxonomy(); keeps ‘permalink_epmask’ compatible as an argument for post type registrations; fixes endpoints for category and tag pages
  • Add jQuery UI Touch Punch plugin to handle dragging on mobile devices
  • Add post ID argument to _wp_post_thumbnail_html() rather than relying on a global; post the ID from wp_ajax_set_post_thumbnail()
  • Add ‘search_columns’ arg to WP_User_Query to allow for explicit column choices; without it columns will be detected based on the search term
  • Add the editor ID and the post type (when available) as classes to the TinyMCE’s body
  • Add $id parameter to get_the_tag_list() for consistency with get_the_(category|term)_list().
  • Allow get_post_meta() to be called with only a post ID, as get_metadata() handles this
  • Allow counting by characters in lieu of a word count, for East Asian languages
  • Allow toolbar submenus to expand to the width of the parent item
  • Allow translators to specify a default timezone string OR GMT offset. Stop doing date(‘Z’)/3600 math for default ‘gmt_offset’
  • AtomServer class moved to wp-includes/class-wp-atom-server.php
  • Change the image caption shortcode format to <a><img /></a> caption text + html; that way HTML tags in captions are better supported and the shortcode wouldn’t break when using the wrong quotes
  • Check the return of wp_insert_term() for WP_Error or array; prevents fatal errors and failure to add categories when adding terms via ajax
  • Cleanup and better document create_initial_taxonomies()
  • Clear strict notices for the walkers
  • Compress CSS/JS using the latest version of YUI Compressor
  • Create WP_Customize_Control to separate the process of rendering a control from fetching, previewing, and saving its value
  • Database schema change: Change ‘post_content_filtered’ to longtext in ‘wp_posts’ table
  • Database schema change: Drop ‘comment_approved’ index from ‘wp_comments’ table
  • Database schema change: Remove ‘blog_id’ column from ‘wp_options’ table
  • Define WPINC in wp-load when not set in wp-config.php
  • Deprecate add_custom_background() in favor of add_theme_support( ‘custom-background’ )
  • Deprecate add_custom_image_header() in favor of add_theme_support( ‘custom-header’ )
  • Deprecate display_theme()
  • Deprecate get_theme_data() in favor of wp_get_theme()
  • Do not block file mod/edit caps when DISALLOW_UNFILTERED_HTML is set; There are separate constants (DISALLOW_FILE_EDIT and DISALLOW_FILE_MODS for those)
  • Fix the return value of get_theme_root() when the theme root is outside of WP_CONTENT_DIR, thus making it absolute rather than the typical relative theme root; make get_theme_root_uri() tolerate an absolute path for a theme root; it will now make an attempt to find a corresponding URL for absolute paths as well.
  • Fixed “https” detection in feed generator
  • Formatting and i18n cleanup of repair.php
  • Hash post password in cookies
  • Improve adding more css classes to the editor body, add “rtl”, “ie7”, “ie8”, “ie9” so they can be targeted in editor-style.css
  • Improve efficiency of make_clickable()
  • Improve wp-app.php; put the atom server class in class-wp-atom-server.php; remove log_api calls; update the query filter; replace exit calls with wp_die() for unit test compat; add override handler for wp_die(); allow plugins to replace the atom class
  • In case of 404, redirect /login, /dashboard, /admin to corresponding WordPress equivalents
  • Introduce $wpdb->delete()
  • Introduce set_header_image()remove_header_image()reset_header_image() and get_header_image_data()Custom_Image_Header class methods.
  • Introduce WP_Theme class, wp_get_themes(), and wp_get_theme() to replace get_themes()get_theme()get_theme_data()current_theme_info(), and others
  • Introduce __return_null()
  • Introduce display_header_text()
  • Introduce get_page_template_slug( $id = null ) to return a page’s template (like “showcase.php”); returns false if post ID is not a page, and an empty string for the default page template; use the function across core
  • Introduce sanitize_trackback_urls(); don’t ping bad urls, or save them to the DB
  • Introduce term_is_ancestor_of()
  • Introduce term_is_ancestor_of(); finish taxonomy support for wp_insert_category()
  • Introduce wp_is_mobile() and use it instead of $is_iphone global
  • Introduce wp_load_translations_early() which can be used before the locale is properly loaded in order to translate early error strings; internationalize setup-config.php — translators no longer have a reason to modify this file
  • Introduce ‘relative’ scheme to return only the paths for home_url, site, admin, network_, and get_ variants
  • Introduce WP_Theme->exists() to check if the queried theme actually exist; WP_Theme->exists() is a subset of errors(); a theme with errors may still exist, but a theme that does not exist has an error of theme_not_found; wp_get_theme() now returns false if the theme does not exist; improve scandir() and get_files() logic
  • Introduce WP_User::exists()
  • Lose EOF ?>; clean up EOF newline
  • Make get_post_custom() a wrapper of get_post_meta() so that it works when cache addition is suspended and to simplify it
  • Merge Press This inline styles into wp-admin.css
  • Move OptionsSettings, and Transient functions from wp-includes/functions.php to wp-includes/option.php
  • New ‘wp_die_app_handler’ context in wp_die() for APP requests; introduces _scalar_wp_die_handler() as a generic handler that wraps die(), for use by plugins; move deprecated function to the end of the wp-app.php file (same as xmlrpc.php)
  • Provide a DB fallback for keys in wp_salt(); fall back when any secret is used more than once; change how we detect a localized ‘put your unique phrase here’–eliminate $wp_default_secret_key and introduce $wp_secret_key_default to be added during the localized build process, not by translators
  • Redirect bare category URLs for permalink structures starting with %category%
  • Reduce references to the $wp_rewrite global because it’s no longer used or a wrapper function can be used instead
  • Refactor WPDB::get_caller() into wp_debug_backtrace_summary() and improve the functionality to provide enhanced context and a standardised default pretty format
  • Remove show_last_update, include_last_update_time, and show_date code parameters from wp_list_categories()wp_dropdown_categories()
  • Replace background image with CSS3 gradient in wp_die()
  • Repurpose wp_die() for ajax responses
  • Rewrite search_theme_directories() — better performance and allow for caching
  • Set post password cookies via an action in wp-login.php; retire wp-pass.php (one less root file); obey login ssl preferences for post password form submission
  • Split the main WP_Query posts query into two queries to avoid temp tables; leverage cache to avoid second query in persistent cache environments
  • TinyMCE: move the WordPress plugins styles to the theme’s stylesheet
  • Update add_permastruct() to allow more control over WP_Rewrite::generate_rewrite_rules()
  • Update switch_theme() to use wp_get_theme()
  • Update hierarchy for all hierarchical post types when deleting a parent post, not just for pages
  • Update hoverIntent to r6
  • Update jQuery imgAreaSelect plugin to 0.9.8
  • Update jQuery UI to 1.8.20
  • Update PHPDocs for wp_salt()register_taxonomy_for_object_type()wp_set_comment_status(), WP_Rewrite, rewrite endpoints, WP_Locale, wp_mime_type_icon(), mysql2date, get_taxonomy_labels(), WP_User::, register_post_status()register_post_type()
  • Update PHPMailer to 5.2.1
  • Update Plupload to 1.5.4
  • Update SimplePie to 1.2.1
  • Update swfobject
  • Update TinyMCE to 3.4.9
  • Use get_taxonomies() instead of get_object_taxonomies() in the tag cloud widget
  • Use microtime() for cron locks
  • Use version_compare() when checking installed themes in the theme installer
  • When WordPress is in a subdirectory (home URL != site URL), let home/wp-admin and home/wp-login.php redirect to their proper locations
  • WordPress auto-detect RTL for the following locales: ar, ckb, fa_IR, he_IL, ug_CN, dv, fa_AF, ha, ps, uz_UZ, yi
  • WP_HTTP improvements
  • XML-RPC: Add support for Feature Images to the new wp.xxxPost apis
  • XML-RPC: Expose image_default_link_type, image_default_size, and image_default_align options
  • XML-RPC: Expose the post modified date (in blog TZ and GMT)
  • XML-RPC: Initial implementation of Taxonomy and Term APIs; implements wp.newTerm, wp.editTerm, wp.deleteTerm, wp.getTerm, wp.getTerms, wp.getTaxonomy and wp.getTaxonomies
  • XML-RPC: Introduce a date generation helper method to improve the dates returned over XMLRPC when we have a 0 date stored for drafts; improves the ability of clients to work with the new wp Post APIs
  • XML-RPC: Introduce new create,read,update and delete XMLRPC APIs for Posts, Pages and all Custom Post Types; introduces: wp.newPost, wp.editPost, wp.deletePost, wp.getPost, and wp.getPosts

First published

Last updated