WordPress.org

Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

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.

Highlights

  • 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
  • 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

General

  • 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 http://www.gnu.org/licenses/gpl-2.0.txt

Dashboard

  • 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

Posts

  • 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'

Media

  • HTML support has been added to image caption field
  • Add Twitter.com as an oEmbed providers

Links

  • Default Links are now available for translation

Comments

  • Remove "Approve" bulk action when viewing spam comments as it isn't shown in the row actions

Appearance

  • 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

Plugins

  • 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

Tools

Users

  • 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

Settings

  • 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

Multisite

  • 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 [caption ...]<a><img /></a> caption text + html[/caption]; 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 Options, Settings, 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
See also: other WordPress Versions.