Summary of changes in WordPress 3.4

in Upgrade
October 1st, 2013

In this post we’ll summarize the changes relevant to our environment introduced in WordPress 3.4. For a brief introduction to these summaries, view the change summary post for WordPress 3.2.

The Grant Green release of WordPress brings a slew of theme and library updates, the biggest among them being the Theme customizer API. When used, it provides users an easy way to change visual aspects of a theme without diving into any code. Other nice user facing additions include HTML support in image captions, Twitter data via oEmbed, dragging on mobile devices [ via the jQuery UI Touch Punch plugin ] and improvements to Custom Headers.

This release also introduces a few database changes, none of which appear to have an impact on us but are listed below because database schema changes are scary. Other new additions are a WP_Theme class and add/remove/reset/get methods for the Custom_Image_Header class. WordPress will now also use a randomly generated database secret key if one is not set in wp-config. Of particular note is that “The secret key in the database is randomly generated and will be appended to the secret key that is in wp-config.php file in some instances.”

One final update of note is that WordPress no longer uses the is_iphone global to determine if the visitor is using a mobile device. Instead we now have the less biased and more inclusive wp_is_mobile() function.


  • Don’t allow empty database prefix for multisite
  • 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.
  • Repurpose wp_die() for ajax responses
  • Update add_permastruct() to allow more control over WP_Rewrite::generate_rewrite_rules()
  • Introduce ‘relative’ scheme to return only the paths for home_url, site, admin, network_, and get_ variants
  • 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
  • Move Options, Settings, and Transient functions from wp-includes/functions.php to wp-includes/option.php
  • 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
  • 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 get_theme_data() in favor of wp_get_theme()
  • Remove show_last_update, include_last_update_time, and show_date code parameters from wp_list_categories(), wp_dropdown_categories()

New features

  • HTML support has been added to image caption field
  • Create WP_Customize_Control to separate the process of rendering a control from fetching, previewing, and saving its value. See also Otto’s post on extending this class
  • 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 )
  • 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 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_User::exists()
  • 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)
  • Refactor WPDB::get_caller() into wp_debug_backtrace_summary() and improve the functionality to provide enhanced context and a standardised default pretty format
  • Add a filter to wp_terms_checklist() that wraps the function’s arguments; mainly designed to allow checked_ontop to be turned off

Version 3.4.1 and Version 3.4.2 were also reviewed and mostly contained a bug fixes and security updates. Of note is that 3.4.1 better handles loading Javascript incorrectly and “Allows for a technique commonly used by plugins to detect a network-wide activation.” Of note in 3.4.2. are “Fixes an issue where a theme may not preview correctly, or its screenshot may not be displayed” and “Prevents improperly sized images from being uploaded as headers from the customizer”.


Post Your Comment