WordPress.org

Codex

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

Version 2.9

On December 18th, 2009, WordPress Version 2.9, named for Carmen McRae, was released to the public. For more information on this enhancement and bug-fix release, read the Development Blog and see the Changelog for 2.9.

For Version 2.9, the database version (db_version in wp_options) changed to 12329, and the Trac revision was 12455.

Highlights

  • Requires MySQL 4.1.2 or greater (old requirement was MySQL 4.0 or greater).

New Features

User Features

  • Trash status for posts, pages, and comments (includes restore and permanent delete)
  • Add support for 'include' and 'exclude' to [gallery] (Gallery Shortcode)
  • Allow user registration to be enabled by an XMLRPC client
  • Add support for sticky posts to the WXR exporter and importer
  • 'rel=canonical' for singular pages
  • Scroll back to the same location after saving a file in the Plugin and Theme editors
  • Correct comments and remove unnecessary echos from the default themes sidebar template file
  • Enable the APP (Atom) attachment file download to work correctly
  • Support location of category templates based on 'category-slug' as well as 'category-id' (Ticket 10614)
  • Support location of tag templates based on 'tag-id' as well as 'tag-slug' (Ticket 10868)
  • Support location of page templates based on 'page-slug' and 'page-id'
  • Set "Allow my blog to appear in search engines" to checked in installation
  • Don't offer to make a category its own parent
  • Remove Sphere from search list
  • Minify admin CSS
  • Show correct max upload filesize error message
  • Add 'rel' attribute to next/previous post links
  • Make the default and classic themes comment textareas valid XHTML
  • Clean up '.button' and '.button[disabled]' CSS classes, add 'spinner' and 'gray-out' buttons after clicking Publish or Update post
  • Fix race condition with autosave when clicking Publish immediately after entering post title
  • Add Comments for Pages in the WordPress Default theme
  • Define '$content_width' for Kubrick
  • Better feedback on publishing of future posts and pages
  • Display comments in descending date order, consistently
  • Add means of automatically repairing tables
  • Press This bookmarklet fixes
  • Give plugins and themes simple control over the text displayed at the end of an autogenerated Excerpt
  • Don't show "Change Permalinks" button when editing the page set as "Front page"
  • Image editing
  • Retire BunnyTags importer
  • Retire Jerome's keywords importer
  • Explain that the permalink is temporary for autosave generated permalinks
  • Update SimplePie to 1.2
  • Eliminate the redundant and confusing comment threading depth of 1
  • Easier Embeds with oEmbed support (see Ticket #10337) (oEmbed discovery disabled by default, use plugin to enable it)
  • TinyMCE 3.2.7
  • Remove rel='tag' on links in Tag Clouds
  • Add a title to the Home link output by wp_page_menu()
  • Adjust comment moderation keyboard shortcut keys 'd = trash' or delete depending on the screen
  • Show "Draft updated" instead of "Post updated" when saving draft
  • Show the login form in a popup when autosave hits the login grace period
  • Open View/Preview post in a new window from the link in the Saved/Updated message
  • Separate fields for 'image alt' and 'image caption' in Media uploader
  • Display better information about broken themes when there is no stylesheet
  • Improve situation when tables such as wp_options table were 'corrupt' new installation message was offered. Add means of automatically repairing tables
  • Export and import custom taxonomies
  • Admin copy improvements
  • Don't show page templates in the drop down if they are in a subdirectory
  • Make codex link open in a new window
  • Change 'Remove' link on widgets to 'Delete' because it doesn't just remove it, it deletes the settings for that widget instance.

Development, Themes, Plugins

  • Added 'excerpt_more' filter to wp_trim_excerpt() function, which allow developers to change excerpt '[...]' more string (Ticket 10395)
  • Add 'smilies_src' filter so plugins can better add smilies
  • Canonical redirects for post name queries
  • Allow _wp_get_comment_list() to handle custom comment types
  • Return an empty array instead of false for get_children() when no children found
  • Add some filters so that HTTP requests can be filtered
  • Move plugin update notice output to the plugin specific hook
  • Limit wp-mail 'blog by email' checks to every 5 minutes
  • Make it much easier to filter contact methods from user profiles
  • Allow filtering of get_edit_post_link for custom post_type
  • 'get_sample_permalink_html' filter
  • Enforce activation key to be a string, reject activation keys that are arrays
  • Support for new post types
  • Respect custom post_type in queries
  • Send Retry-After header when in maintenance mode
  • Various WP Filesystem related fixes and documentation
  • Add constants for ftp connections timeouts
  • Increase timeout on cron-based requests when checking for upgrades
  • Don't use has_action() before do_action() in http.php
  • Speed up jQuery based scripts
  • Use the current user as author for autosave
  • Show My Posts as default view on the Edit Posts screen for users without 'edit_others_posts' cap
  • Ensure that drafts viewed over XMLRPC have a correct gmt date set
  • Pass user id to 'get_' the_author_meta filters
  • Move _wp_get_user_contactmethods() into the registrations functions file
  • Machine parseable db error codes
  • Add global JS vars and actions to the media uploader iframe
  • Add JSON compat for PHP < 5.2
  • Make option_name the primary key for the options table
  • Allow a plugin to do a complete takeover of Post by Email
  • Logarithmic scale for tag cloud
  • Pass Post ID to the 'get_comments_number' filter
  • Always filter the url in the media upload form
  • Add a 'the_terms' filter
  • is_blog_installed() improvements
  • Allow force_ssl_admin() to properly accept false as a value
  • Pass logged_in cookie to async-upload and filter the cookie scheme in auth_redirect()
  • Add more actions around database add/delete/update operations
  • phpDoc for wp_"check|set"_post_lock functions
  • Use the old strings which are more translator friendly and add a generic default string to aid re-use by plugins adding post_types
  • Filter fields through kses upon display and introduce sanitize_user_object() and sanitize_user_field()
  • Use null instead of 0 when setting content length
  • Include 'hidden' directories in filesystem dirlist by default
  • Pass args array to 'wp_list_pages' filter
  • Actions for taxonomy updates
  • Key should be 'comment_id' not 'post_id' in comments table
  • Add get_delete_post_link () to retrieve delete posts link for post
  • Add 'separator' parameter to wp_tag_cloud() and wp_generate_tag_cloud() functions (Ticket 10315)
  • Added add_comment_meta() family of functions
  • Use a post_parent of 0 instead of -1 to indicate unattached posts
  • Improve get_page_hierarchy() function
  • Deprecate the_content_rss(), add the_content_feed() and get_the_content_feed(). Convert places that called the_content_rss() with an excerpt length to the_excerpt_rss(). Remove the rss_excerpt_length option. Use the_content_feed() where the_content() was previously used in feeds.
  • Add 'pad_counts' argument to wp_dropdown_categories()
  • Remove codepress
  • Remove the php-gettext library
  • Canonical post thumbanils
  • Add a filter to the_author_posts_link()
  • Merge post.js with page.js and slug.js, optimize categories and tags JS, standardize postboxes IDs and JS
  • Introduce register_theme_directory() which takes a wp-content-relative path and will additionally scan it for themes. Plugins can use this to add themes without requiring copying by the user
  • Add set_user_role action hook
  • Allow theme devs to change attrs (like CSS class) of thumbnail images
  • Add wp-post-image CSS class to post images
  • Allow for plugins to enhance the number of metadata fields captured from plugin and theme headers
  • Merge updated pomo code
  • Switch to using NOOP_Translations for untranslated sites
  • Improve wptexturize performance
  • Provide context to the strings in the Plugin and Theme installers to allow for different grammatical gender
  • Fixes for theme subdir support
  • Introduce wp_kses_post() and wp_kses_data() for filtering unescaped data
  • Add 'orderby=comment_count' argument to query_posts()
  • Honor Post Type for Sticky Posts
  • Allow querying multiple post types
  • Introduce add_theme_support(feature) and current_theme_supports(feature) for announcing and checking theme support for various features
  • Introduce require_if_theme_supports()
  • Add number of Embed related filters
  • Add 'IMAGE_EDIT_OVERWRITE' constant to control edited image save or replace, most useful for setups that have dynamic image resizing
  • Add load_child_theme_textdomain() to allow child themes to have their own translation files
  • Add sidebar descriptions to sidebar settings and widget admin screen
  • Make option_id primary. Add uniques for option_name and autoload
  • Allow plugins to override the behaviour of load_textdomain() in a variety of flexible ways
  • Mark _c() as deprecated. The new _x() function should be used instead.
  • Allow plugins to change the redirect on post/page publishing/submitting
  • Standardize on 'user_id' instead of 'user_ID' when passing comment data. Accept either 'user_id' or 'user_ID'. Remove 'user_id' global.
  • Filter imported comments
  • Introducing set_post_image_size(w, h, crop) so themes can register their special size/crop for canonical post images
  • Standardize around "post image" instead of "post thumbnail"
  • Allow registering post image support per post type
  • Return false from is_paged() if on the first page.
  • Check MySQL and PHP versions when auto upgrading
  • Add required php and mysql versions to version.php
  • Hard code required version in update-core.php
See also: other WordPress Versions.