Ready to get started?Download WordPress


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

Version 3.0

On June 17, 2010, WordPress Version 3.0, named for Thelonious, 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.0.

For Version 3.0, the database version (db_version in wp_options) changed to 15260, and the Trac revision was 15274.


  • WordPress and WordPress MU have merged - allowing the management of multiple sites (called Multisite) from one WordPress installation.
  • New default theme "Twenty Ten" - takes full advantage of the current features of WordPress.
  • New Custom Menu Management feature - allows creation of custom menus combining posts, pages, categories, tags, and links for use in theme menus or widgets.
  • Custom Header and Custom Background APIs.
  • Contextual help - help text accessed under the Help tab of every screen in the WordPress administration.
  • Ability to set the admin username and password during installation.
  • Bulk updating of themes - with an automatic maintenance mode during the process.
  • Support for Shortlinks.
  • Improved Custom Post Types and Custom Taxonomies - including hierarchical (category-style) support. (Try the Custom Post Type UI or GD Custom Posts And Taxonomies Tools plugins to see the possibilities.)
  • A lighter admin color scheme - to increase accessibility and put the focus more squarely on your content.

User Features


  • Check required php and mysql versions in the update and notify if the server environment does not meet those requirements
  • New wp_login_form() provides a simple login form for use anywhere
  • New WordPress logo for admin header
  • Place "Search Engines Blocked" mini-alert in the wp-admin header to prevent people from accidentally delisting themselves
  • Remove 'Turbo' link from admin header and remove Turbo section from the Tools->Tools panel
  • Renamed various menu items, for example Posts->Edit becomes Posts->Posts, and Links->Edit becomes Links->Links, and so on
  • Revised administration menu icons
  • Revised Gray Admin Color Scheme
  • Revised information in readme.html file
  • Show login form upon email-sent for recover/reset passwords


  • Add link so user can visit Dashboard after core upgrade
  • Move Tools->Upgrade menu option to Dashboard->Updates and overhaul of user interface so themes, plugins, and core upgrades under one panel
  • New menu management (navigation) via Menus option under Appearances Menu (#11817)
  • Password nag for newly registered users
  • Split Right Now widget into Content | Discussion


  • Allow for removing all tags in quick edit
  • Allow themes to style the visual editor with editor-style.css file, using add_editor_style() function
  • Enable custom taxonomy UI for pages as well as for posts
  • Improved revision comparison user interface
  • Shortlinks enabled, but still requires a plugin or theme support to fully realize this feature
  • Added capital_P_dangit() filter to change 'Wordpress' to 'WordPress'.


  • Add FunnyOrDie.com oEmbed support
  • Allow Deletion of Media Alt text
  • Change Media UI labels from "Post Thumbnails" to "Featured Image"
  • Cleanup of the edit media screen
  • Don't let "Crunching" overlap image name while uploading
  • Optimize scan for lost attachments
  • Support for additional file type extensions (Changesets 12581 and 13349)


  • Order link categories by name, not count, on Add New/Edit Link page


  • Add additional columns to the Posts Comments view
  • Allow configuration of number of comments to display Recent Comments dashboard module
  • Block comments for future posts and password protected posts (when password not provided)
  • Change to comments UI to show when a comment is replying to another, and link to the parent comment



  • Add Details and Install Now action links under each plugin listed in Install Plugins
  • Allow Tab indenting, Shift-Tab (outdenting), and multi-line tabbing, in plugin editor
  • Upgrade plugins in bulk from the Plugins->Installed panel (#11542)
  • When deleting plugins, check for uninstall hooks, and warn of data deletion


  • Add tag-to-category and category-to-tag converters to the Tools panel, add tag-to-category converter links to Posts->Post Tags panel
  • Clean up OPML link export script
  • Expanded filter criteria in Tools->Export panel
  • Import WordPress fixes notices, attachments, and users
  • Removed Turbo menu item, but because Turbo files weren't removed, Turbo may still work
  • All importers moved to the plugin repository (e.g. WordPress Importer)


  • Allow "No role for this blog" to be chosen in Users->Add New panel
  • Added update_core, list_users, remove_users, add_users, promote_users, edit_theme_options, delete_themes and export Capabilities


Install Process


Development, Themes, Plugins

  • A better default excerpt; remove multiple white spaces from the excerpt as well as splitting safely on UTF8 strings
  • Add Child theme support for theme header registrations, second call to register_theme_headers() should add more headers, and not replace existing headers.
  • Add add_plugins_page() function to allow adding a submenu to under Plugins menu
  • Add get_search_link() with Permastruct (/search/) support, update get_search_link(), get_search_feed_link() and get_search_comments_feed_link()
  • Add is_comment_feed()
  • Add redirect_to and associated filters to registration and password recovery
  • Add a wp_loaded action that fires once WordPress init has finished
  • Add an INDEX on comment_parent (wp_comments table) to speed up wp_delete_comment() and reparenting queries
  • Add argument hide_if_empty to wp_dropdown_categories() to hide dropdown if no terms to display
  • Add argument id to wp_dropdown_users() and wp_dropdown_categories()
  • Add argument post_type to get_page_by_title()
  • Add argument taxonomies to register_post_type()
  • Add argument taxonomy to wp_list_categories() and wp_dropdown_categories() to be custom taxonomy aware
  • Add capability 'edit_theme_options' (see developer discussion on this)
  • Add capability 'list_users' to provide more controls over listing users vs. editing users
  • Add compatibility code for old themes that relied on templates from the default theme without expressly identifying it as the parent theme (Note: the fallback to these template files is now deprecated and will be removed in a future version)
  • Add custom hierarchical post type support to get_pages()
  • Add defaults for 'post_content' and 'post_title' in wp_insert_post()
  • Add email and login duplicate checking to wp_insert_user()
  • Add extra hooks to "Right Now" dashboard widget
  • Add filter to the links in paginate_links() and to the arguments in wp_link_pages()
  • Add filter post_updated_messages to allow changes to the $messages array in wp-admin/edit-form-advanced.php
  • Add filter post_updated action fires when a post is updated; post ID, current and previous post objects are passed and wp_check_for_changed_slugs() updated to use new hook
  • Add flag to taxonomy registration allowing permalinks to be prepended with front, or not
  • Add initial WP_DEBUG define to wp-config-sample.php and suggest plugin/theme developers use it
  • Add mobile webkit styles for twentyten theme
  • Add more orderby and select options to get_comments
  • Add Multisite capabilities (#11644)
  • Add new protocols for kses and make the list of protocols filterable
  • Add optional comment ID argument to comment template functions
  • Add replace method to $wpdb (#10864)
  • Add support to get_terms() to allow 'include' & 'exclude' args to be arrays()
  • Add support to is_singular() to allow testing of specific post_types such as is_singular('book') or is_singular( array( 'newspaper', 'book' ) )
  • Add the generator element in feeds through the {rss2|atom|rdf|rss|opml}_head hooks
  • Add 'themes_loaded' hook to run after parent/child themes have been included
  • Add ?ver=DATE query strings to all images that changed since 2.9, to expire browser cache and bump versions on all CSS/JS files modified in that process
  • Admin support for Custom Post Types (#9674)
  • Admin support for hierarchical taxonomies (#10122)
  • Allow Custom Post Types to have custom icons
  • Allow enabling/disabling title and editor per post type, introduce remove_post_type_support(), add enable/disable for author override
  • Allow include/exclude arguments for get_posts() and get_pages() to be an array
  • Allow methods to be used as a callback in wp_unique_filename()
  • Allow more special characters in wp_generate_password()
  • Allow multiple To: recipients in wp_mail() and improve handling of \r\n in headers and multiple CC/BCC headers
  • Allow people to attach PHP 5.3 Closures to filters and actions
  • Allow plugins to modify the query run by WP_User_Search
  • Allow themes to specify a menu fallback other than wp_page_menu()
  • Better inline documentation for WP_DEBUG, WP_DEBUG_DISPLAY, and WP_DEBUG_LOG.
  • Better POST_BY_EMAIL logic
  • Check PHP and MySQL versions in upgrade.php
  • Convert Terms page to use WP_Ajax_Response(), hierarchical terms will now appear under their parent OR have the parents prefixed (Changeset 13086)
  • Create metaboxes for hierarchical taxonomies
  • Create post_status=auto-draft when creating a new post item and status changes to draft on first auto-save
  • Customizable death (wp_die() is now pluggable) (#11892)
  • Deprecate get_alloptions()
  • Deprecate get_profile() for get_the_author_meta()
  • Deprecate trackback_rdf() (#11139)
  • Deprecate add_option_update_handler() and remove_option_update_handler() in favor of register_setting() and unregister_setting()
  • Deprecate automatic_feed_links() in favor of add_theme_support('automatic-feed-links')
  • Deprecate get_bloginfo('text_direction') in favor of is_rtl()
  • Deprecate set_current_user() in favor of wp_set_current_user()
  • Deprecate MagpieRSS in favor of Simplepie (#11982)
  • Deprecate Snoopy
  • Deprecate User Levels (use Roles and Capabilities instead) (#10805)
  • Deprecate clean_url() in favor of esc_url() and esc_url_raw() (#12309)
  • Deprecate VHOST in favor of a boolean, SUBDOMAIN_INSTALL (Note: core will keep VHOST defined for plugins' sake, but you should only define SUBDOMAIN_INSTALL; will throw notice if VHOST is defined, and a warning if they somehow conflict; sunrise can still handle them
  • Deprecate is_term and is_taxonomy in favor of term_exists and taxonomy_exists
  • Don't check for the existence of index.php in the htaccess rewrite rules
  • Don't query against entire users table in wp_dropdown_users()
  • Don't require a default category for post types other than 'post'
  • Ensure that for multiple sidebar additions, the ID is unique
  • Extend the_modified_date() to support before/after/echo
  • Fallback to wp_page_menu() from wp_nav_menu() if no menus are setup
  • Fix Press This entity encoding
  • Fix DST/Standard transition display in Settings->General
  • Fix recursive chmod for WP_Filesystem
  • Flag post statuses as public, private, protected, or internal
  • Functon get_usernumposts() is now deprecated in favor of count_user_posts() for naming consistency
  • Improve user listing performance
  • In Twenty Ten theme, don't use post thumbnail as the custom header if it's smaller than the header size
  • Introduce *_user_meta() functions, deprecate *_usermeta() family
  • Introduce _ex(), a hybrid between _e() and _x(), to translate with context, then echo.
  • Introduce add_editor_style() to easily register a stylesheet for the visual editor
  • Introduce add_permastruct() and flush_rewrite_rules(), wrappers for the corresponding WP_Rewrite methods
  • Introduce disabled() form helper, move selected() and checked() out of wp-admin and into full scope
  • Introduce delete_user_option()
  • Introduce get_available_languages()
  • Introduce get_comment_id_fields() to get comment_id_fields() and introduce a filter on the output to add extra fields
  • Introduce get_index_template() to allow child themes to override a parent theme's index.php
  • Introduce get_intermediate_image_sizes() for getting all the intermediate image sizes to be used both when adding attachements and deleting
  • Introduce get_post_types() function to get a list of registered post types
  • Introduce get_super_admins() and allow hard-coding a global super_admins array and bypassing site options
  • Introduce get_taxonomies() function to get a list of all registered taxonomies (#12516)
  • Introduce get_template_part() function to include generic files (other than header, sidebar, footer) (#13146, #13816)
  • Introduce get_term_feed_link() and use it in wp_list_categories()
  • Introduce get_the_author_link()
  • Introduce get_the_date()
  • Introduce home_url()
  • Introduce is_child_theme()
  • Introduce is_post_type_hierarchical() to use to check if a post type support hierarchical
  • Introduce is_rtl() and becomes defined when locale is loaded
  • Introduce is_super_admin()
  • Introduce is_textdomain_loaded()
  • Introduce menu_page_url() for plugins to use to get the URL for the pages they have added
  • Introduce register_admin_color_schemes() to registers the default admin color schemes
  • Introduce remove_theme_support()
  • Introduce post_type_exists()
  • Introduce sanitize_key()
  • Introduce set_current_screen(). Set current screen for inline edit ajax requests so post rows can be properly displayed.
  • Introduce taxonomy_exists() to replace is_taxonomy()
  • Introduce term_exists() to replace is_term()
  • Introduce the_shortlink() template tag (#10640)
  • Introduce unload_textdomain() and add plugin_locale and theme_locale filters to load_*_textdomain() functions
  • Introduce unregister_theme_headers()
  • Introduce update_blog_details()
  • Introduce wp_check_filetype_and_ext() to handle mime/ext image comparisons and corrections for upload and sideload
  • Introduce wp_reset_postdata() to reset the post global for the current query_posts() call after using a loop with a new WP_Query object
  • Introduce constant DISALLOW_FILE_MODS for disabling all ops that modify core, theme, or plugins files
  • Introduce constant DISALLOW_FILE_EDIT flag for enabling/disabling the theme and plugin editors
  • Introduce constant DISALLOW_UNFILTERED_HTML to disallow unfiltered_html for all users, even admins and super admins
  • Introduce constant SUBDOMAIN_INSTALL boolean to replace VHOST
  • Introduce constant WP_DEFAULT_THEME to use to set 'default' theme when installing new sites
  • Introduce Custom Taxonomies translation strings
  • Introduce theme compatibility files so incomplete themes that need to inherit templates will inherit them from wp-includes/theme-compat
  • Introduce WP_User::for_blog() and current_user_can_for_blog() to avoid calls to WP_User::_init_caps()
  • Introduce wpdb::tables() to fetch table names on a global or blog scope
  • Introduce ZipArchive version of unzip_file() (more efficient on memory usage for supporting hosts)
  • Make get_bloginfo('wpurl') use site_url(), not get_option('siteurl')
  • Make better use of $wp_query->get_queried_object()
  • Make calendar valid HTML 5
  • Merge clear_global_post_cache() into clean_post_cache()
  • Merge Categories/Hierarchical taxonomies into edit-tags.php
  • Merge edit-page-form.php into edit-form-advanced.php
  • Merge edit-pages.php into edit.php
  • Merge page.php into post.php
  • Merge page-new.php into post-new.php
  • More powerful version of is_tax()
  • Move send_nosniff_header() into wp-includes so it can be used in wp-ajax.php
  • New $required_mysql_version global in wp-db.php
  • New comment_form() that outputs a complete commenting form for use within a template (#10910)
  • New posts_search filter in query.php
  • Numerous functions deprecated and changes to not use those deprecated functions
  • Optimize single_post_title(), single_tag_title() & single_cat_title() to use WP_Query globals if available
  • Pass default post to default_content, default_title, and default_excerpt filters, to allow filtering by post_type and other attributes
  • Prevent page(\d+) slugs, and force a suffix
  • Recommended reading from a theme developer's view regarding navigation menus; see Ryan Boren's recommendation
  • Redirect ?page_id=xx for the Posts page to the posts page
  • Refactor get_available_languages() to use glob() instead of *dir functions
  • Reminder that escaping rules for options and transients changed so see Ryan Boren's explanation
  • Reminder to plugin authors to test and make sure they do not generate unexpected output; see Ryan Boren's explanation
  • Remove STYLE_DEBUG constant, SCRIPT_DEBUG now handles both scripts and CSS
  • Remove wp-ajax.php. admin-ajax.php can be used (and is better for) for front-end/nopriv AJAX requests
  • Rename get_post_link() to get_post_permalink() to avoid conflict with bbPress
  • Rename the new 'themes_loaded' hook to 'after_setup_theme' to prevent confusion as to what it actually does & where its fired from
  • Revised Coding Standards: no camelcase variables, use lowercase for variables
  • Serve a real 404 for ?p=does-not-exist, ?cat=does-not-exist, etc
  • Show custom hierarchical taxonomies in the menus
  • Show theme installer only to super admins
  • Suffix and version bump for ie.css
  • The Settings API now supports automatic error display for validation problems with add_settings_error() (#11474)
  • Tidy up logic for defining WP_DEBUG
  • Update wp_popular_terms_checklist() to handle custom taxonomies
  • Update jQuery to 1.4.2 (#12305)
  • Update jQuery UI to 1.7.3
  • Update json lib
  • Update phpass to 0.2
  • Update Prototype.js to 1.6.1
  • Update Scriptaculous.js to 1.8.3
  • Update SWFobject JS to 2.2
  • Update wp_clear_scheduled_hook calls to use array when passing args
  • Use admin_url() for images in wp-admin, to allow for filtering
  • Use get_terms() in wp_count_terms()
  • Various phpDoc updates
  • Various changes to wp-includes/http.php

Features Deferred to Later Versions

These features didn't make it into current release and have been designated for a future release.

  • Overhaul of user roles
  • Media uploader improvements
And see others WordPress Versions.