Wordpress Version 2.8 See the original page on: http://codex.wordpress.org/Version_2.8 On May xxth, 2009, WordPress Version 2.8, named for xxxxxxxxxxxxxxx, will be released to the public. For more information on this enhancement and bug-fix release, read the Development Blog and see the Changelog for 2.8.
New Features User Features
New Theme Installer routines Add CodePress syntax highlighting to Theme and Plugin editors Add Documentation(function) lookup to Theme and Plugin editors Use "Custom Header" for menu text and revise Default theme to reflect change Separate Comments into a separate postbox, from Discussion postbox, on the Edit Post screen Make tags accessible without Javascript on the edit screen Don't ask for confirmation when marking a comment as spam Don't notify post author of own comments Allow the dashboard widgets to be arranged in up to four columns as set via the Screen Options tab Make titles into links in Dashboard Right Now module (this was in 2.7.1) Improved Admin icons (grey-to-transparent shadows) Update Blue Admin Color Scheme Press This improvements UI, quoting fixes, plus ability for Contributors to use Press This Add column "Rating" in Administration > Links > Edit Improve installer to help people entering wrong email addresses Improved Widget user interface Allow editing of all plugin files (Ticket 6732) Improved Plugin search (this was in 2.7.1) on Administration > Plugins > Add New Per Page option for plugins Move "Install a plugin in .zip format" to new Upload tab under Administration > Plugins > Add New Show absolute date instead of relative date for scheduled posts Fix tags suggest for post quick edit and bulk edit Permalink editor changes and fix for pages Autosave post/page when pressing Control/Command+S Add toggle all button to the Gallery tab in the uploader Support more than one gallery on the same page Add per page option to Screen Options for comments, posts, pages, media, categories, and tags Overhaul of LiveJournal importer (also add define WP_IMPORTING) Import category descriptions for Administration > Tools > Import > WordPress Show Tools menu for all users so they can access Turbo Check for new version when visiting Administration > Tools > Upgrade Fix most popular link category list Add description field for tags WAI-ARIA landmark roles to added to WordPress Default theme "Choose a city in the same timezone as you" for Timezone in Administration > Settings > General Remove My Hacks option from Administration > Settings > Miscellaneous Hide email addresses from low privilege users on Administration > Comments In upgrade process, provide better explanation for database upgrade message Enforce unique email addresses in Add/Edit users
Make user_nicenames unique during registration Add "Send this password to the new user by email" option to Administration > Users > Add New Don't set user's Website url to http:// in Administration > Users > Add New Hide things that need to be available to screen readers via offscreen positioning Use invisible class for hiding labels and legends Use a semantic class name for text targeted to screen readers
Development, Themes, Plugins
Improved database performance Drop post_category column from wp_posts table, and link_category column from wp_links schemas Fix delete statements to ensure data integrity when innodb and foreign keys are used Enforce consistent ID types to allow for foreign keys to be defined between tables Add Sticky to list of post states Add a filter to the post states list Introduction and widespread use of transient and related fiters Add filters so AIM, Yahoo, and Jabber IM labels, in user profile, can be changed Add hook "after_db_upgrade" Add hooks for the Users, Categories, Link Categories, and Tags table columns HTTP API updates and fixes Add support for blocking all outbound HTTP requests Updated List of HTTP status codes (Ticket 9297) Use SimplePie for widget and dashboard feeds Switch to pomo lib. Support gettext contexts. Deprecate long form functions TinyMCE 3.2.3 Use Jcrop 0.9.8 for cropping Update pclzip to 2.8 Improved performance for script loading Improved archive and calendar queries Cron spawning improvements Timezone enhancements for PHP 5 Add WP_Widget class and move native widgets into WP_Widget Allow other taxonomies (e.g. post categories) to be used with wp_tag_cloud (Changeset 10554) Add echo argument to wp_tag_cloud() Allow a plugin to control how many posts are displayed on edit pages Add "style" and "html" arguments to wp_list_authors (Ticket 4420) Add "exclude_tree" argument to wp_list_categories and make exclude behave like exclude_tree when hierarchical is specified--this was actually a 2.7.1 change (Ticket 8614) New Template Tag, the_modified_author (Ticket 9154) Enhanced support for custom taxonomies Put page title before blog name in admin title (Ticket 9028) Use https://api.wordpress.org/secret-key/1.1/ for the WordPress.org secret-key service Various phpDoc updates Refactor filters to avoid potential XSS attacks XMLRPC improvements Improved mysql2date coding Make authentication more pluggable Switch to using the ID when calling get_avatar internally to support caching plugins Allow plugins to provide a canonical redirect_url even if WordPress does not provide its own Drafts have post_date populated now, so look for a zeroed out post_date_gmt to determine nonscheduled nature
Fixes to query_posts (obey post_type, drop orderby=category, use group by for meta key queries, remove meta_value from selected fields) Allow a plugin to filter the classes applied in wp_list_pages() Functions (get_adjacent_post_rel_link() and adjacent_post_rel_link()) to display relational links for adjacent posts in the head (Ticket 8703) Add the sticky post grey background to the default theme Proxy support Let a plugin filter the expanded capabilities returned by map_meta_cap Allow the update period to be filtered in RSS/RDF feeds Store field types in wpdb object Add tag description functions tag_description and term_description Add page class to get_body_class() Deprecate get_catname() Use comments_open() and pings_open() in WordPress Default and Classic themes Add wp_trim_excerpt() filter Consolidate plugin/theme/core upgrade/install functions Add page-id-x class to body for pages Return empty list in wp_list_bookmarks() if requested bookmark category does not exist Allow menu reordering via plugin Add hook for updating user profile Add redirect argument to wp_loginout Add get_the_author_meta() and the_author_meta() functions Let plugins use screen layout columns Add labels to titles and text inputs Add hook for adding info to plugin update message Don't do core version check from front page loads Allow a plugin to vary the comment cookie lifetime (or even remove the cookies altogether) Allow plugin to replace just the default help while preserving the contextual help New escaping naming convention Ticket 9650 Add number/offset arguments to get_pages() (same parameters can be used for wp_list_pages() Make login more pluggable Add a function to output a generic widget anywhere in a template Allow plugins to override tz support enable/disable Updated Trac
Advanced Features JS script loader Improvements
jQuery 1.3.2 Improvements to the script loader: allows plugins to queue scripts for the front end head and footer, adds hooks for server side caching of compressed scripts, adds support for ENFORCE_GZIP constant (deflate is used by default since it's faster) Load the minified versions of the scripts by default, define('SCRIPT_DEBUG', true); can be used to load the development versions Remove events from categories chechboxes in quick edit to speed up page unload Make simple form validation and ajax-add new categories compatible with jQuery 1.3.1 Load farbtastic.js has to be loaded in the head Note: see Lester Chan's Loading Javascript in Footer blog and Andrew Ozz's Script Loader Updates blog
New Widgets API WP_Widget is a class that abstracts away much of the complexity involved in writing a widget, especially multi-widgets.
Basically, you extend WP_Widget with your own class that provides a constructor and three methods -- widget(), form(), and update(). o widget() - outputs the actual content of the widget. o update() - processes options to be saved. o form() - outputs the options form. A widget is registered by passing the name of the widget class to register_widget(). All widgets written with WP_Widget are multiple instance capable. Options o Options for old single-instance widgets ported to WP_Widget will be upgraded to the new multi-option storage format, which is simply a multi-dimensional array keyed by instance ID. o Options for widgets using the old multi-instance pattern should work as is. o If your widget has custom option storage needs, you can provide your own get_settings() and save_settings() methods. The WP_Widget source can be viewed here (read the phpdoc for moreinfo on usage): http://core.trac.wordpress.org/browser/trunk/wp-includes/widgets.php You can see examples of how to use it here: http://core.trac.wordpress.org/browser/trunk/wpincludes/default-widgets.php If you author any widgets, try porting them to WP_Widget and give your feedback on what can be improved an Trac Ticket 8441. Props to the MultiWidget class, on which WP_Widget is based: http://blog.firetree.net/2008/11/30/wordpress-multi-widget/ The above extracted from Ryan Boren's wp-hackers post.
Menu reordering via plugin
Example plugin demonstrates menus with Dashboard, Posts, and Comments in the first menu group. The remaining menus follow in their usual order. When filtering the order array, any menus that are not mentioned in the array will be sorted after ones that are mentioned. Unmentioned menus are sorted in their usual order, relative to other unmentioned menus. Information extracted from Ryan Boren's comments on Trac Ticket 9652