<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>op111.net » ellak</title>
	
	<link>http://op111.net</link>
	<description>Everything about anything.  Or, a website about technology, the web and web publishing.</description>
	<lastBuildDate>Sun, 16 Oct 2011 13:05:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/op111net_ellak" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="op111net_ellak" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Flashing your BIOS from Linux with flashrom</title>
		<link>http://op111.net/83/</link>
		<comments>http://op111.net/83/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 22:32:23 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[bios]]></category>
		<category><![CDATA[discoveries]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[flashing]]></category>
		<category><![CDATA[flashrom]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[recommended]]></category>

		<guid isPermaLink="false">http://op111.net/?p=83</guid>
		<description><![CDATA[A quick howto for flashing your BIOS from within Linux with the flashrom utility <a href="http://op111.net/83/" title="View post Flashing your BIOS from Linux with flashrom" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Flashing your BIOS from Linux with flashrom-->

<!--id: 83-->

<p>Sometimes in Linux things are easier than you think. I needed to upgrade the BIOS of a Linux machine and I was not optimistic. On top of the usual issue—what to do in Linux with the Windows executables that motherboard manufacturers provide—, the machine did not have a CD-ROM drive or a floppy drive. <span id="more-83"></span></p>

<p>But then we have search engines. A quick search led me to <a href="http://www.hermann-uwe.de/blog/flashing-a-bios-the-linux-way-tm-using-flashrom" title="Flashing a BIOS the Linux Way (TM) using flashrom [hermann-uwe.de]">a promising howto by Uwe Hermann</a>. There I learned about <a href="http://flashrom.org/" title="A utility for identifying, reading, writing, verifying and erasing flash chips [flashrom.org]">flashrom</a>.</p>

<p>flashrom, <a href="http://flashrom.org/trac/flashrom/browser/trunk/flashrom.8" title="flashrom(8) [flashrom.org]">to quote its man page</a>,</p>

<blockquote>
  <p>is a utility for detecting, reading, writing, verifying and erasing flash chips.
    It’s often used to flash BIOS/EFI/coreboot/firmware images in-system using a supported mainboard,
    but it also supports flashing of network cards (NICs), SATA controller cards, and other external devices which can program flash chips.</p>
  
  <p>It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40, and TSOP48 chips,
    which use various protocols such as LPC, FWH, parallel flash, or SPI.</p>
</blockquote>

<p>Intriguing stuff, especially the “in-system” bit. More so for someone lazy like me. I had to try it!</p>

<p>Here is what it took...</p>

<p>The latest BIOS update I had downloaded from the manufacturer’s website was a self-extracting Windows executable. I extracted it manually with 7zr:</p>

<pre><code>$ 7zr e motherboard-bios-ga-k8vt800(rev1.x)-f13.exe
</code></pre>

<p>The extraction revealed three files: One EXE and one BAT (which are not needed in Linux) and the BIOS image I needed for the operation: k8vt800.f13.</p>

<p>Next I installed flashrom using the package manager of the system:</p>

<pre><code>$ sudo apt-get install flashrom
</code></pre>

<p>And I run flashrom to see what it knew about my hardware:</p>

<pre><code>$ sudo flashrom
</code></pre>

<p>It seemed to recognize everything correctly. So, I proceeded to the next step, making a backup copy of the current BIOS image:</p>

<pre><code>$ sudo flashrom --read bios.bak
</code></pre>

<p>Lastly, I flashed the BIOS with the image from the motherboard manufacturer:</p>

<pre><code>$ sudo flashrom --write k8vt800.f13
</code></pre>

<p>The last step, writing and verifying the new image, took a few seconds and was completed successfully.</p>

<p>I was left with a big smile and with admiration and gratitude for the people who make flashrom.</p>

<p>Learn more about flashrom: <a href="http://flashrom.org/" title="flashrom, a utility for identifying, reading, writing, verifying and erasing flash chips [flashrom.org]">flashrom.org</a></p>

<p><strong>WARNING</strong>. An unsuccessful flashing operation with flashrom or with any other flashing method can leave your system inoperable. Don’t try this in a critical system unless you know what you are doing!</p>

<p>Thank you for reading.</p>
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/83/&title=Flashing your BIOS from Linux with flashrom">del.icio.us</a></p>
<hr />
<p>© 2011 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/83/">Permalink</a></p> ]]></content:encoded>
			<wfw:commentRss>http://op111.net/83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 3.1: What’s new</title>
		<link>http://op111.net/81/</link>
		<comments>http://op111.net/81/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 21:33:08 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[3.1]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wp3.1]]></category>

		<guid isPermaLink="false">http://op111.net/?p=81</guid>
		<description><![CDATA[A detailed presentation of the changes and new features WordPress 3.1 brings, for users as well as for developers <a href="http://op111.net/81/" title="View post WordPress 3.1: What’s new" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: WordPress 3.1: What’s new-->

<!--id: 81-->

<!--....................................................................................................................

CHECKED UP TO REVISION: see wordpress-31-a

*   v3.1 START: r15275
*   v3.0 START: r12456
*   v2.9 START: r11552
*   v2.8 START: r10188

*   http://westi.wordpress.com/2011/01/05/introducing-debug-bar/

.....................................................................................................................-->

<p>UPDATE 2011-02-23.
WordPress 3.1 was released today!
<a href="http://wordpress.org/news/2011/02/threeone/" title="WordPress 3.1, lots of fun [wordpress.org]">Official Announcement</a>.</p>

<p>The first release candidate of WordPress 3.1 came out in 25 December 2010, and the final release is now close.</p>

<p>Coming 6 months after 3.0, a version that brought many major changes, including the merge with WordPress MU,
version 3.1 is not as ambitious in scope. One reason for this is that development time in this cycle was divided between
WordPress itself and the official Wordpress site, WordPress.org, which received several updates and improvements.</p>

<p>Even so, WordPress 3.1 represents a large amount of work and brings hundreds of fixes and improvements, large and small,
as well as a considerable number of additions, three among which stand out:  AJAX-powered lists in all administration areas,
advanced taxonomy queries and meta queries, and a new Network Admin area (for multi-site installations). <span id="more-81"></span></p>

<p>CONTENTS</p>

<ol>
<li><a href="#issues">Known issues and backwards compatibility</a></li>
<li><a href="#highlights">Highlights</a></li>
<li><a href="#developers">Developers</a></li>
<li><a href="#tickets">Tickets</a></li>
<li><a href="#changes">Changes</a>

<ol>
<li><a href="#new">New</a></li>
<li><a href="#fixed">Fixed</a></li>
<li><a href="#modified">Modified</a></li>
<li><a href="#optimization">Optimization</a></li>
<li><a href="#other">Other</a></li>
<li><a href="#third-party">Third-party</a></li>
<li><a href="#xml-rpc">XML-RPC</a></li>
<li><a href="#functions">Functions and classes</a></li>
<li><a href="#hooks">Hooks and constants</a></li>
</ol></li>
<li><a href="#epilogue">Epilogue</a></li>
<li><a href="#log">This document</a></li>
</ol>

<h2 id="issues">1.  Known issues and backwards compatibility</h2>

<p><em>Nothing frightening yet.</em></p>

<p>Backwards compatibility is very good. If it is any indication, <a href="http://op111.net/about/plugins-used/" title="List of WordPress plugins used in op111.net [op111.net]">all of the about 20 plugins used in this site</a> work fine with WordPress 3.1.</p>

<h2 id="highlights">2.  Highlights</h2>

<h3>2.1.    Administration bar</h3>

<p>The Admin Bar is the most obvious new feature in WordPress 3.1. It appears at the top of the page when you are logged in and displays links to commonly accessed areas of the dashboard as well as notifications for new comments and for available updates.</p>

<p><a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-adminbar-singlesite.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-adminbar-singlesite-192x128.png" alt="WordPress 3.1, the administration bar in a single-site setup" title="WordPress 3.1, the administration bar in a single-site setup" width="192" height="128" class="alignnone size-medium wp-image-867" /></a>
<a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-adminbar-multisite.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-adminbar-multisite-192x128.png" alt="WordPress 3.1, the administration bar in a multi-site setup" title="WordPress 3.1, the administration bar in a multi-site setup" width="192" height="128" class="alignnone size-medium wp-image-868" /></a></p>

<p class="wp-caption-text">The new administration bar in a single-site and in a multi-site setup</p>

<p>Its design and layout are well considered and it works well. The parts of it that I have found most useful up to now are the <em>Edit Page / Edit Post</em> links and the Updates notifications (the Updates item appears only when there are updates available.)</p>

<p>In a single-site installation the Admin Bar appears only on the front-end. In a multi-site installation it appears on the front-end and on the the dashboard. These are the default settings, which you can change at your profile page. If you don’t care at all for the new Admin Bar, you can also disable it, again from your profile page.</p>

<p><abbr title="For developers">DEV.</abbr>
The Admin Bar is extensible, which means that plugins and themes can modify it to add or remove items. One plugin that already does this is the Debug Bar, which adds an extra item to display useful debugging information:</p>

<p><a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-debug-bar1.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-debug-bar1-192x144.png" alt="WordPress 3.1, Admin Bar, Debug Bar plugin" title="WordPress 3.1, Admin Bar, Debug Bar plugin" width="192" height="144" class="alignnone size-medium wp-image-874" /></a></p>

<p>The Debug Bar plugin is available from the official repository. See westi’s introduction for more:</p>

<ul>
<li><a href="http://wordpress.org/extend/plugins/debug-bar/" title="Debug Bar, a developer’s plugin for WordPress [wordpress.org]">Debug Bar</a>
by the WordPress team</li>
<li><a href="http://westi.wordpress.com/2011/01/05/introducing-debug-bar/" title="[westi.wordpress.com]">Introducing Debug Bar</a>
by Peter Westwood</li>
</ul>

<h3>2.2.    AJAX techniques for better list browsing</h3>

<p><strong>UPDATE</strong> 2011-01-24.
The AJAX infrastucture was <strong>removed</strong> in <abbr title="Release Candidate 3">RC3</abbr> and will not be in the final release of WordPress 3.1. There was not enough time to make it work well enough and to make it work in a way that was backwards compatible. The sortable columns were retained and are now the major new improvement in list browsing.</p>

<p>Practically, the use of AJAX techniques means that browsing dashboard lists, e.g. the list of all your posts or the list of all comments, is now <em>faster</em>, more responsive, and also that all dashboard lists are now <em>sortable by column</em>. See the screenshot for a quick explanation:</p>

<p><a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-dashboard-lists-ajax.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-dashboard-lists-ajax-192x144.png" alt="WordPress 3.1, AJAX techniques for better list browsing" title="WordPress 3.1, AJAX techniques for better list browsing" width="192" height="144" class="alignnone size-medium wp-image-872" /></a></p>

<p>This was a large undertaking and required a lot of new code, probably more than any other new feature in this version.
As a result, a few small things here and there may not work as well as they should yet, and there are a few improvements left to be made.
Even so, I find that the ajaxification of the dashboard lists is the most significant improvement WordPress 3.1 brings to its users.</p>

<h3>2.3.    Internal linking</h3>

<p>If you link often to existing content in your site, this is a new feature you will appreciate.</p>

<p>The link dialog of the visual editor now has an extra area that lets you make an internal link with one click. It presents a list of all your published posts and pages in reverse chronological order (latest on top) and it can also filter the list of posts and pages based on what you type in the search box:</p>

<p><a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-internal-linking.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-internal-linking-192x192.png" alt="WordPress 3.1, easy internal linking from the visual editor" title="WordPress 3.1, easy internal linking from the visual editor" width="192" height="192" class="size-medium wp-image-866" /></a></p>

<p class="wp-caption-text">Internal linking in WordPress 3.1</p>

<p>Please note that Internal Linking is implemented as extension of the visual editor, which means that it is <strong>not</strong> available on the HTML view or when the visual editor is disabled. If you want easy internal linking in those cases, you can try the Link to Post plugin, which also works in WordPress 3.0:</p>

<ul>
<li><a href="http://wordpress.org/extend/plugins/link-to-post/" title="Link to Post, a plugin for WordPress [wordpress.org]">Link to Post</a></li>
</ul>

<p>A THOUGHT.
I am not certain that Internal Linking needed to be implemented as a core feature. Maybe it would be better to implement it as a stand-alone extension/plugin for the visual editor. Why? Because the more features WordPress core gets, the more difficult it becomes to maintain.</p>

<h3>2.4.    Post formats</h3>

<p>“Post formats” is a new term in WordPress but the concept and the need are old:
How to present all posts of a certain type in a distinct style and layout?
For example, how to style all “asides” differently from other posts?</p>

<p>This was already possible in WordPress and it has been implemented in various ways by WordPress themes.
The most common approach was to put special posts in a special category and then apply a special style to posts of that category.
<a href="http://getk2.com/" title="K2, a theme for WordPress [getk2.com]">K2</a>, for instance, has been doing that for as long as I remember, since 2005 or 2006:
It offers an option to style all posts of a particular category as “asides”.</p>

<p>Now, what the new “post formats” of WordPress 3.1 aim to do is promote a standard implementation of this concept
that is easier for users, easier for developers, and also consistent and portable between themes and between languages.</p>

<p>If your theme supports posts formats, you can now see them and can select one when you write a post.
WordPress then saves your selection along with the rest of the post metainformation (post title, post excerpt, etc.).
If you later switch to another theme that supports your selected format, then your posts of that format will continue to be displayed in a special way.
If you later switch to a theme that does not support post formats, then, simply, your posts of that format will have no special style.</p>

<p><a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-post-formats-aside.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-post-formats-aside-192x144.png" alt="Wordpress 3.1, Post Formats" title="Wordpress 3.1, Post Formats" width="192" height="144" class="alignnone size-medium wp-image-871" /></a></p>

<p>The post formats that themes can support using the new built-in capability are ten:</p>

<ul>
<li>Standard</li>
<li>Aside</li>
<li>Audio</li>
<li>Chat</li>
<li>Gallery</li>
<li>Image</li>
<li>Link</li>
<li>Quote</li>
<li>Status</li>
<li>Video</li>
</ul>

<p>(Since the aim was portability and standardization, custom formats beyond these ten are not supported by the WordPress core.)</p>

<p><abbr title="For developers">DEV.</abbr>
For examples of implementation, see <a href="http://codex.wordpress.org/Post_Formats" title="Documentation on Post Formats at the WordPress Codex [codex.wordpress.org]">codex.wordpress.org/Post_Formats</a></p>

<h3>2.5.    Network admin</h3>

<p>The Network Admin is a new area introduced to make the administration of multisite setups easier. It is accessible only to network administrators —or “super admins”, as they are often called— and it is meant specifically and exclusively for network administartion tasks, so that network administration stays out of the way of publishing and site management and so that publishing and site management stay out of the way of network administration.</p>

<p>Network Admin replaces the Super Admin menu of WordPress 3.0. (WordPress 3.0 was the version when WordPress MU was merged into WordPress.)</p>

<p><a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-network-admin.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-network-admin-192x144.png" alt="WordPress 3.1, Network Admin" title="WordPress 3.1, Network Admin" width="192" height="144" class="alignnone size-medium wp-image-870" /></a>
<a href="http://op111.net/wp-content/uploads/2010/12/wordpress-31-network-admin-themes.png"><img src="http://op111.net/wp-content/uploads/2010/12/wordpress-31-network-admin-themes-192x144.png" alt="WordPress 3.1, Network Admin, Themes" title="WordPress 3.1, Network Admin, Themes" width="192" height="144" class="alignnone size-medium wp-image-869" /></a></p>

<p class="wp-caption-text">Network Admin screens in WordPress 3.1</p>

<h3>2.6.    More</h3>

<p><strong>Index/Archive pages for custom post types</strong>.
Something missing from custom post types in WordPress 3.0 was arhive pages. WordPress 3.1 brings archive pages to custom post types too. So, for example, if you have a custom post type Recipes with slug <em>recipes</em>, you can also have an arhive of all your recipes at <em>example.com/recipes</em>.</p>

<p><strong>Exporter/Importer overhaul</strong>.
The WordPress Exporter and the <a href="http://wordpress.org/extend/plugins/wordpress-importer/" title="The WordPress Importer plugin at the official WordPress repository [wordpress.org]">WordPress Importer</a> were rewritten, to improve performance, add new functionality and address long-standing bugs and annoyances. This was a large undertaking and, it seems, a successful one. Both the new exporter and the new importer work very well and are very fast!</p>

<p><strong>More metaboxes hidden by default on edit screens</strong>.
In new installations most metaboxes on edit screens are now hidden by default, while the default height of the editor was increased. (You can always reveal or hide the metaboxes you want by clicking on the Screen Options tab.)</p>

<p><strong>Password reset improvements</strong>.
The process for resetting a lost password is now better. If you are curious to check it out, click on the <em>Lost your password?</em> link on a login screen and follow the instructions.</p>

<p><strong>Search for installed themes</strong>.
The Themes screen now has a search feature that lets you search among install themes by name and by features. This will be more useful in multisite setups that offer a large variety of themes to their users.</p>

<p><strong>Visual editor improvements</strong>. <!--(DONE)-->
TinyMCE, the base of WordPress visual editor, has been updated to its latest version (3.3) which brings lots of improvements and fixes.</p>

<!--
**Multi-taxonomy queries**.
-->

<h2 id="developers">3.  Highlights for developers</h2>

<h3>3.1.    Compatibility</h3>

<p>Backwards compatibility is in general very good.
If you are doing things the right way, using the recommended WordPress APIs where appropriate, you should not see things break.
That’s the idea anyway! :-)</p>

<p>Areas that may need attention are highlighted in a series of posts at the WordPress Development Blog:</p>

<ul>
<li><a href="http://wpdevel.wordpress.com/tag/30compat/" title="Posts on version 3.0 and plugin/theme compatibility at the WordPress Development Updates blog [wpdevel.wordpress.com]">wpdevel.wordpress.com/tag/31compat</a></li>
</ul>

<p>Independently of compatibility issues, WP Devel posts are always good reading if you develop for WordPress.
Here is a selection from the 3.1 development cycle, in chronological order:</p>

<ul>
<li><a href="http://wpdevel.wordpress.com/2010/07/28/the-wordpress-org-infrastructure-work-ha/">Network admin dashboard</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/08/30/per-ticket-14672-wp_use_multiple_db-wil/">WP_USE_MULTIPLE_DB removed from 3.1</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/08/30/dont-use-the-conditional-query-tags-i/">Don’t use conditional tags before init</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/09/13/cpt-enhancements/">CPT enchancements</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/09/20/wp-db-php-is-now-always-included-databa/">wpdb.php now always included</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/10/07/the-theme-mod-functions-now-store-their/">Theme mod functions now store values differently</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/10/07/wp_user_search-has-been-replaced-by-wp_u/">WP_User_Search replaced by WP_User_Query</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/10/13/there-was-some-ancient-code-in-wpparse/">Ancient code looking in $GLOBALS removed</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/10/14/feature-status-post-formats-landed-d/">Feature status</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/10/27/plugin-activation-hooks/">Plugin activation hooks</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/10/27/plugin-activation-hooks-no-longer-fire-for-updates/">Plugin activation hooks no longer fire for updates</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/11/05/post-formats-in-core/">Post formats in core</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/11/11/list-of-post-formats/">List of post formats</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/11/12/if-you-were-using-wpdb-last_result-yo/">$wpdb->last_result is deprecated</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/11/17/changes-to-meta-capability-handling-in-3-1/">Changes to meta capability handling in 3.1</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/11/19/the-new-post-format-details-are-now-expo/">Post formats via the XML-RPC API</a></li>
<li><a href="http://wpdevel.wordpress.com/2010/11/20/wordpress-3-1-uses-jquery-1-4-4-and-jqu/">Important change in jQuery UI 1.8</a></li>
</ul>

<h3>3.2.    Advanced taxonomy queries</h3>

<p>This is one of the most interesting new capabilities in WordPress 3.1 for developers as well as for users.
Now, for the first time, you can get posts by combining individual taxonomy queries in several ways
— for example, you can get all posts that have a specific tag but not another specific tag and that are found in a specific category.</p>

<p>Usage is simple.  Let’s say that I want to get all op111.net posts in the category <em>wordpress</em> that are tagged <em>lang-el</em>.
(That is, all posts from the category WordPress that are written in Greek.)
The code is:</p>

<pre><code>$my_query['tax_query'] = array(
    array(
        'taxonomy'  =&gt; 'category',
        'field'     =&gt; 'slug',
        'terms'     =&gt; array('wordpress'),
    ),
    array(
        'taxonomy'  =&gt; 'post_tag',
        'field'     =&gt; 'slug',
        'terms'     =&gt; array('lang-el'),
    ),
);

query_posts($my_query);
</code></pre>

<p>Conveniently, there is also a shorthand syntax:</p>

<pre><code>query_posts(array(
    'category_name' =&gt; 'wordpress',
    'tag' =&gt; 'lang-el',
));
</code></pre>

<p>It’s also possible to define the relation between the individual queries, which can be either <em>AND</em> or <em>OR</em> (default is <em>AND</em>).
And the operator too, which can be either <em>IN</em> or <em>NOT IN</em> (default is <em>IN</em>).</p>

<p>So, if I wanted to get all posts from the category <em>wordpress</em> that are <strong>not</strong> tagged <em>lang-el</em>, I would use:</p>

<pre><code>$my_query['tax_query'] = array(
    array(
        'taxonomy'  =&gt; 'category',
        'field'     =&gt; 'slug',
        'terms'     =&gt; array('wordpress'),
    ),
    array(
        'operator'  =&gt; 'NOT IN'
        'taxonomy'  =&gt; 'post_tag',
        'field'     =&gt; 'slug',
        'terms'     =&gt; array('lang-el'),
    ),
);

query_posts($my_query);
</code></pre>

<p>And so on and so forth;  the possibilities are many.
The usual suspect Otto has written a detailed article:</p>

<ul>
<li><a href="http://ottopress.com/2010/wordpress-3-1-advanced-taxonomy-queries/" title="[ottopress.com]">WordPress 3.1: Advanced Taxonomy Queries » Otto on
WordPress</a></li>
</ul>

<p>Meta queries come with similar improvements in WordPress 3.1.
You can now query posts based on advanced combinations of custom fields.
scribu, who did most of the work on the new advanced queries, has a quick explanation on his site:</p>

<ul>
<li><a href="http://scribu.net/wordpress/advanced-metadata-queries.html" title="Advanced Metadata Queries in WordPress 3.1, by scribu [scribu.net]">Advanced Metadata Queries | scribu</a></li>
</ul>

<h3>3.3.    Improved user queries</h3>

<p>The new get_users() function, which wraps the also new WP_User_Query class,
simplifies user queries a lot.  It accepts arguments as an array and returns a list of users based on the defined criteria.</p>

<p>The arguments it accepts are:</p>

<ul>
<li>blog_id</li>
<li>count_total</li>
<li>exclude</li>
<li>fields</li>
<li>include</li>
<li>meta_compare</li>
<li>meta_key</li>
<li>meta_value</li>
<li>number</li>
<li>offset</li>
<li>order</li>
<li>orderby</li>
<li>role</li>
<li>search</li>
<li>who</li>
</ul>

<p><a href="http://codex.wordpress.org/Function_Reference/get_users" title="[codex.wordpress.org]">get_users() is not yet documented at the Codex</a>
but you can get an idea of what it can do and how to use it by looking at WP_User_Query, the class it uses:</p>

<ul>
<li><a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/user.php">core.trac.wordpress.org/browser/trunk/wp-includes/user.php</a></li>
</ul>

<h2 id="tickets">4.  Selected tickets</h2>

<ul>
<li><a href="http://core.trac.wordpress.org/ticket/5919">t5919</a>.  Password reset improvements</li>
<li><a href="http://core.trac.wordpress.org/ticket/10187">t10187</a>.  wp_redirect and canonical redirect do not work as expected on IIS</li>
<li><a href="http://core.trac.wordpress.org/ticket/11420">t11420</a>.  Easy internal linking from new content</li>
<li><a href="http://core.trac.wordpress.org/ticket/12257">t12257</a>.  wpdb scales badly due to unnecessary copies of all query results</li>
<li><a href="http://core.trac.wordpress.org/ticket/12891">t12891</a>.  Advanced multi-taxonomy queries</li>
<li><a href="http://core.trac.wordpress.org/ticket/13324">t13324</a>.  Limit auto-generated passwords to alphanumeric chars</li>
<li><a href="http://core.trac.wordpress.org/ticket/13818">t13818</a>.  Index/Archive pages for custom post types</li>
<li><a href="http://core.trac.wordpress.org/ticket/14062">t14062</a>.  Some Location headers use relative URLs</li>
<li><a href="http://core.trac.wordpress.org/ticket/14122">t14122</a>.  Custom capabilities broken on custom post types</li>
<li><a href="http://core.trac.wordpress.org/ticket/14424">t14424</a>.  Eliminate dynamic function definitions, i.e. create_function()</li>
<li><a href="http://core.trac.wordpress.org/ticket/14435">t14435</a>.  Network admin</li>
<li><a href="http://core.trac.wordpress.org/ticket/14494">t14494</a>.  Move is&#95;&#42;() functionality (AKA conditional tags) into the WP_Query class

<ul>
<li><a href="http://core.trac.wordpress.org/ticket/14729">t14729</a>.
Fatal errors after <a href="http://core.trac.wordpress.org/changeset/r15531">r15531</a> when conditional tags are used too early</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/ticket/14508">t14508</a>.  Always require wp-db.php</li>
<li><a href="http://core.trac.wordpress.org/ticket/14579">t14579</a>.  Ajaxify list-type screens in dashboard

<ul>
<li><a href="http://core.trac.wordpress.org/ticket/16262">t16262</a>.  Remove AJAX and extensibility from list tables</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/ticket/14642">t14642</a>.  Support for Facebook’s HipHop</li>
<li><a href="http://core.trac.wordpress.org/ticket/14696">t14696</a>.  Personal dashboard</li>
<li><a href="http://core.trac.wordpress.org/ticket/14772">t14772</a>.  Administration bar</li>
<li><a href="http://core.trac.wordpress.org/ticket/14820">t14820</a>.  Allow WP XML-RPC library to be extended</li>
<li><a href="http://core.trac.wordpress.org/ticket/14897">t14897</a>.  Network admin screen for enabling/disabling/upgrading themes</li>
<li><a href="http://core.trac.wordpress.org/ticket/15170">t15170</a>.  Network admin pages don’t scale</li>
<li><a href="http://core.trac.wordpress.org/ticket/15824">t15824</a>.  Introduce &#95;doing&#95;it&#95;wrong() to mark incorrect use of functions</li>
</ul>

<h2 id="changes">5.  Selected changesets</h2>

<p>This part offers a selection out of the total of changes that went into WordPress 3.1.
Links starting with <em>r</em> (e.g., <em>r12345</em>) point to changesets.
Links starting with <em>t</em> (e.g., <em>t12345</em>) point to tickets.</p>

<h3 id="new">5.1.    New functionality</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15481">r15481</a>. <!--(NEW)-(MS)-(START)-->
    Network Admin, first pass.
    See <a href="http://core.trac.wordpress.org/ticket/14435">t14435</a>.
    — <em>Multisite</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/15491">r15491</a>. <!--(NEW)-(UI)-(START)-->
    Ajaxify list-type screens in dashboard.
    See <a href="http://core.trac.wordpress.org/ticket/14579">t14579</a>.
    — <em>REVERTED!</em> See <a href="http://core.trac.wordpress.org/ticket/16262">t16262</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15613">r15613</a>. <!--(NEW)-(TAX)-(START)-->
    Clean up taxonomy queries in WP_Query.
    See <a href="http://core.trac.wordpress.org/ticket/12891">t12891</a>.
    — <em>Work on advanced taxonomy queries starts here.</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/15671">r15671</a>. <!--(NEW)-(UI)-(START)-->
    Admin bar, first pass.
    See <a href="http://core.trac.wordpress.org/ticket/14772">t14772</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15705">r15705</a>,
<a href="http://core.trac.wordpress.org/changeset/16381">r16381</a>. <!--(NEW)-(TAX)-(START)-->
    Hierarchical taxonomy URLs.
    See <a href="http://core.trac.wordpress.org/ticket/12659">t12659</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15777">r15777</a>. <!--(NEW)-(START)-->
    <a href="http://codex.wordpress.org/Post_Formats" title="Post formats at the WordPress Codex [codex.wordpress.org]">Post formats</a>, take one.
    See <a href="http://core.trac.wordpress.org/ticket/14746">t14746</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16705">r16705</a>. <!--(MAYBE)--> 
    Index pages for post formats. First pass.
    See <a href="http://core.trac.wordpress.org/ticket/15378">t15378</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15803">r15803</a>. <!--(NEW)-(CPT)-(START)-->
    Custom post type archives.
    See <a href="http://core.trac.wordpress.org/ticket/13818">t13818</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15831">r15831</a>,
<a href="http://core.trac.wordpress.org/changeset/15832">r15832</a>,
<a href="http://core.trac.wordpress.org/changeset/15848">r15848</a>. <!--(NEW)-(CPT)-->
    Save old slug for all published post types. Brings old-slug redirection to Pages and CPTs.
    See <a href="http://core.trac.wordpress.org/ticket/15140">t15140</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15940">r15940</a>. <!--(NEW)-(UI)-(START)-->
    Internal linking, first pass.
    See <a href="http://core.trac.wordpress.org/ticket/11420">t11420</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15996">r15996</a>. <!--(NEW)-(UI)-->
    Add <em>Check Again</em> button and timestamp to update-core.
    See <a href="http://core.trac.wordpress.org/ticket/14764">t14764</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16003">r16003</a>. <!--(NEW)-(UI)-->
    Add <em>Sticky</em> filter on edit posts screen.
    See <a href="http://core.trac.wordpress.org/ticket/8466">t8466</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16113">r16113</a>. <!--(NEW)-(MS)-(START)-->
    Network Admin screen for managing themes, first pass.
    See <a href="http://core.trac.wordpress.org/ticket/14897">t14897</a>.
    — <em>Multisite</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/16180">r16180</a>. <!--(NEW)-(TAX)-(RESEARCH)-->
    Allow tag cloud using multiple taxonomies.
    See <a href="http://core.trac.wordpress.org/ticket/15313">t15313</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16857">r16857</a>. <!--(NEW)-(UI)-->
    Option for retro gravatar.
    See <a href="http://core.trac.wordpress.org/ticket/15759">t15759</a>.</li>
</ul>

<h3 id="fixed">5.2.    Bug fixes</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15328">r15328</a>. <!--(FIX)-(MS)-->
    Fix is_site_admin() when passing a username.
    See <a href="http://core.trac.wordpress.org/ticket/14046">t14046</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15346">r15346</a>. <!--(FIX)-(9)-->
    Use WP_PLUGIN_DIR.
    See <a href="http://core.trac.wordpress.org/ticket/14070">t14070</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15377">r15377</a>. <!--(FIX)-(FUNC/MOD)-->
    More judicious correction of capital P to avoid bungling reasonable URLs.
    See <a href="http://core.trac.wordpress.org/ticket/13971">t13971</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15437">r15437</a>. <!--(FIX)-->
    Hex octets are case-insensitive.  Don’t 301 if only case differs.
    See <a href="http://core.trac.wordpress.org/ticket/14292">t14292</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15473">r15473</a>. <!--(FIX)-(UI)-->
    “login”, “setup”, “backup” are not verbs.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15554">r15554</a>. <!--(FIX)-->
    Make smilies links SSL-aware.
    See <a href="http://core.trac.wordpress.org/ticket/14360">t14360</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15584">r15584</a>. <!--(FIX)-->
    In current page highlighting logic
    apply untrailingslashit() to everything so that slash additions or omissions still match.
    See <a href="http://core.trac.wordpress.org/ticket/14208">t14208</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15614">r15614</a>. <!--(FIX)-(UI)-->
    Don’t show default password nag on profile screen.
    See <a href="http://core.trac.wordpress.org/ticket/14861">t14861</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15659">r15659</a>. <!--(FIX)-(UI)-->
    Only show Password Strength Meter when JavaScript is available.
    See <a href="http://core.trac.wordpress.org/ticket/14943">t14943</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15665">r15665</a>. <!--(FIX)-(MAYBE)-->
    Add missing <em>Moderate Comment</em> title to comment.php.
    See <a href="http://core.trac.wordpress.org/ticket/14139">t14139</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15670">r15670</a>. <!--(FIX)-(UI)-(GRAMMAR)-->
    Fix comma splice in sample About page.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15707">r15707</a>. <!--(FIX)-(PERMALINKS)-->
    Fix canonical redirection for permalinks containing <em>%category%</em> with nested categories and paging.
    See <a href="http://core.trac.wordpress.org/ticket/13471">t13471</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15709">r15709</a>. <!--(FIX)-->
    Fix nav menu box search.
    See <a href="http://core.trac.wordpress.org/ticket/14335">t14335</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15877">r15877</a>. <!--(FIX)-->
    Push capital P filter back behind wpautop, to catch Wordpress after opening HTML tag.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15918">r15918</a>. <!--(FIX)-(UI)-->
    Fix media dialog keypress handling.
    See <a href="http://core.trac.wordpress.org/ticket/14394">t14394</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15960">r15960</a>. <!--(FIX)-(PERMALINKS)-->
    Attempt at fix for URL encoding issues with UTF-8 chars.
    See <a href="http://core.trac.wordpress.org/ticket/10249">t10249</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15966">r15966</a>. <!--(FIX)-(UI)-(JS)-->
    Fix custom background selector for IE7 in Appearance › Background.
    See <a href="http://core.trac.wordpress.org/ticket/14152">t14152</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16111">r16111</a>,
<a href="http://core.trac.wordpress.org/changeset/16279">r16279</a>,
<a href="http://core.trac.wordpress.org/changeset/16948">r16948</a>. <!--(FIX)-(FUNC/MOD)-(MAKE_CLICKABLE)-(REGEX)-->
    Also capture ! (exclamation mark) when making URL clickable.
    See <a href="http://core.trac.wordpress.org/ticket/14993">t14993</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16178">r16178</a>,
<a href="http://core.trac.wordpress.org/changeset/16179">r16179</a>. <!--(FIX)-->
    Don’t assign subscriber role if user already has role for blog.
    See <a href="http://core.trac.wordpress.org/ticket/15316">t15316</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16230">r16230</a>. <!--(FIX)-(SEO)-->
    Remove nofollow on comment reply links. 
    See <a href="http://core.trac.wordpress.org/ticket/10550">t10550</a>.
    — SEO improvement</li>
<li><a href="http://core.trac.wordpress.org/changeset/16444">r16444</a>. <!--(FIX)-(OEMBED)-->
    When inserting image via oEmbed, wrap in link pointing to original location.
    See <a href="http://core.trac.wordpress.org/ticket/14945">t14945</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16449">r16449</a>. <!--(FIX)-(UI)-->
    Expose 1-column option in gallery settings.
    See <a href="http://core.trac.wordpress.org/ticket/14836">t14836</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16542">r16542</a>,
<a href="http://core.trac.wordpress.org/changeset/16543">r16543</a>,
<a href="http://core.trac.wordpress.org/changeset/16544">r16544</a>. <!--(FIX)-->
    Cast term_id to integer for queried_object_id.
    See <a href="http://core.trac.wordpress.org/ticket/14590">t14590</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16624">r16624</a>. <!--(SEC)-(IMPORTANT)-->
    Prepare properly.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/16637">r16637</a>. <!--(SEC)-(IMPORTANT)-->
    Drop pingback/trackback blogroll whitelisting. (Easy to abuse.)
    See <a href="http://core.trac.wordpress.org/ticket/13887">t13887</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/16647">r16647</a>,
<a href="http://core.trac.wordpress.org/changeset/16648">r16648</a>. <!--(FIX)-(UI)-->
    Fix bulk comment keyboard shortcuts.
    See <a href="http://core.trac.wordpress.org/ticket/15571">t15571</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16663">r16663</a>. <!--(FIX)-(UI)-->
    Allow long plugin upgrade notices to wrap.
    See <a href="http://core.trac.wordpress.org/ticket/14068">t14068</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16814">r16814</a>. <!--(FIX)-(UI)-->
    Keep Dashboard RSS widgets in same place when configuring.
    See <a href="http://core.trac.wordpress.org/ticket/14785">t14785</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16846">r16846</a>. <!--(FIX)-(FUNC/MOD)-(THM)-->
    Make get_header_image() SSL-aware.
    See <a href="http://core.trac.wordpress.org/ticket/14835">t14835</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16870">r16870</a>. <!--(FIX)-->
    Don’t clear used username in login form.
    See <a href="http://core.trac.wordpress.org/ticket/14031">t14031</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16903">r16903</a>. <!--(FIX)-->
    Use HTTPS for preview links if is_ssl().
    See <a href="http://core.trac.wordpress.org/ticket/13328">t13328</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17061">r17061</a>. <!--(FIX)-->
    Fix guid generation for page auto drafts.
    See <a href="http://core.trac.wordpress.org/ticket/15041">t15041</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17284">r17284</a>. <!--(FIX)--> 
    Show author dropdown in quick edit even when there is only one contributor-or-higher user
    and the post belongs to someone who no longer has contributor-or-higher access.
    See <a href="http://core.trac.wordpress.org/ticket/14420">t14420</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17260">r17260</a>. <!--(FIX)--> 
    Disallow self-reference on RSS widget save, which would DoS a site.
    Checking home/siteurl should cover vast majority of cases.
    See <a href="http://core.trac.wordpress.org/ticket/8910">t8910</a>.</li>
</ul>

<h3 id="modified">5.3.    Modifications, enhancements, improvements</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15445">r15445</a>. <!--(MOD)-(UI)-->
    Set default posts per page to 20.
    See <a href="http://core.trac.wordpress.org/ticket/14342">t14342</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15457">r15457</a>. <!--(MOD)-(UI)-->
    Update WordPress blog URL from wordpress.org/development to <a href="http://wordpress.org/news/">wordpress.org/news</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15469">r15469</a>. <!--(ENH)-->
    Only employ maintenance_mode() on MS or if updated plugin/theme is active.
    See <a href="http://core.trac.wordpress.org/ticket/14393">t14393</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15553">r15553</a>. <!--(ENH)-(UI)-->
    Link directly to comment in email notification.
    See <a href="http://core.trac.wordpress.org/ticket/12797">t12797</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15555">r15555</a>,
<a href="http://core.trac.wordpress.org/changeset/15976">r15976</a>. <!--(MOD)-(UI)-->
    Hide more meta boxes by default in edit screens.
    See <a href="http://core.trac.wordpress.org/ticket/14212">t14212</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/17294">r17294</a>. <!--(MOD)-(UI)-->
    Hide the many extraneous meta boxes for pages by default too.
    See <a href="http://core.trac.wordpress.org/ticket/14212">t14212</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15588">r15588</a>. <!--(ENH)-(UI)-->
    Add second Save button for custom nav menus at bottom.
    See <a href="http://core.trac.wordpress.org/ticket/14265">t14265</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15687">r15687</a>. <!--(ENH)-(LOOKUP)-->
    Allow search in archive pages.
    See <a href="http://core.trac.wordpress.org/ticket/14831">t14831</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15697">r15697</a>. <!--(ENH)-(UI)-(9)-->
    Preserve search terms on plugin management screens during actions.
    See <a href="http://core.trac.wordpress.org/ticket/14905">t14905</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15722">r15722</a>. <!--(ENH)-->
    Use separate AJAX spinners for Save Draft and Publish buttons.
    See <a href="http://core.trac.wordpress.org/ticket/14582">t14582</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15757">r15757</a>. <!--(ENH)-(MONITOR)-->
    Update via AJAX the sample output of custom date/times on Options › General.
    See <a href="http://core.trac.wordpress.org/ticket/12636">t12636</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15710">r15710</a>. <!--(ENH)-(MAJOR)-(START)-->
    Improve password reset process. Let user define new password.
    See <a href="http://core.trac.wordpress.org/ticket/5919">t5919</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15682">r15682</a>. <!--(MOD)-(IIS)-->
    Remove set-cookie redirection workaround for IIS 3/4/5.
    See <a href="http://core.trac.wordpress.org/changeset/2436">r2436</a>,
        <a href="http://core.trac.wordpress.org/ticket/10187">t10187</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15961">r15961</a>,
<a href="http://core.trac.wordpress.org/changeset/16652">r16652</a>. <!--(ENH)-(MAJOR)-->
    Importer and exporter overhaul.
    See <a href="http://core.trac.wordpress.org/ticket/15197">t15197</a>.

<ul>
<li>EXPORTER

<ul>
<li>Add author information</li>
<li>Greater usage of slug identifiers</li>
<li>Don’t export auto-drafts, spam comments, or edit lock/last meta keys</li>
<li>Inline documentation improvements</li>
<li>Bump WXR version to 1.1, but remain back compat in importer</li>
</ul></li>
<li>IMPORTER (<a href="http://plugins.trac.wordpress.org/changeset/304249">plugins.trac.wordpress.org/changeset/304249</a>)

<ul>
<li>Use XML parser where available (SimpleXML, XML Parser)</li>
<li>Proper support for navigation menus</li>
<li>Many bug fixes, specifically improvements to category and custom taxonomy handling</li>
<li>Better author/user mapping</li>
</ul></li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16427">r16427</a>. <!--(ENH)-(UI)-(STR)-->
    Make clear we are installing the <em>American</em> English version,
    so that message makes sense in non-American English environments.
    See <a href="http://core.trac.wordpress.org/ticket/14467">t14467</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15946">r15946</a>. <!--(ENH)-(UI)-(OK)-->
    Disable dropdown when <em>Latest posts</em> is selected on Settings › Reading.
    See <a href="http://core.trac.wordpress.org/ticket/15205">t15205</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16145">r16145</a>. <!--(ENH)-(UI)-(BLUE)-(START)-->
    Blue theme refresh, first pass.
    See <a href="http://core.trac.wordpress.org/ticket/15207">t15207</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16304">r16304</a>. <!--(ENH)-(UI)-->
    Don’t notify author when they posted or moderated the comment.
    See <a href="http://core.trac.wordpress.org/ticket/12774">t12774</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16223">r16223</a>. <!--(ENH)-(UI)-->
    Send moderation emails to post author:
    An interim solution of emailing the post author as well as the admin if author has proper capabilities.
    Ideally these will become individual options. 
    See <a href="http://core.trac.wordpress.org/ticket/6286">t6286</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16284">r16284</a>. <!--(ENH)-(UI)-->
    Restrict auto-generated passwords to alphanumeric characters (so that double click selects whole password).
    See <a href="http://core.trac.wordpress.org/ticket/13324">t13324</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16285">r16285</a>. <!--(ENH)-(UI)-->
    Enclose password reset link in &lt;&gt; to protect it in some email clients when wrapped.
    See <a href="http://core.trac.wordpress.org/ticket/14140">t14140</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16651">r16651</a>. <!--(ENH)-(UI)-->
    Don’t nag to <em>Change Permalinks</em> if permalink structure is defined.
    See <a href="http://core.trac.wordpress.org/ticket/13918">t13918</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16696">r16696</a>,
<a href="http://core.trac.wordpress.org/changeset/16701">r16701</a>,
<a href="http://core.trac.wordpress.org/changeset/16702">r16702</a>,
<a href="http://core.trac.wordpress.org/changeset/16703">r16703</a>. <!--(ENH)-(UI)-(STR)-->
    Standardize on “Update” for Update/Upgrade messages.
    See <a href="http://core.trac.wordpress.org/ticket/14107">t14107</a>,
        <a href="http://core.trac.wordpress.org/ticket/15656">t15656</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16821">r16821</a>. <!--(ENH)-(UI)-->
    Include username in incorrect password message.
    See <a href="http://core.trac.wordpress.org/ticket/14575">t14575</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17225">r17225</a>. <!--(MOD)-(UI)-->
    More room for your content!
    Increase default post edit rows as the meta boxes are now all hidden by default.
    See <a href="http://core.trac.wordpress.org/ticket/14212">t14212</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17288">r17288</a>. <!--(MOD)--> 
    Remove TinyMCE media plugin.
    See <a href="http://core.trac.wordpress.org/ticket/14647">t14647</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17301">r17301</a>. <!--(MOD)-(LICENSE)--> 
    WordPress contains libraries only available under the GPL v2 or later. No one cares about the GPL v1 anymore. We are now specifically saying that WordPress is available under the GPL version 2 or (at your option) any later version. This was discussed with the entire core team.</li>
</ul>

<h3 id="optimization">5.4.    Optimization</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15287">r15287</a>. <!--(OPT)-(FUNC/MOD)-->
    In install_popular_tags() use site transient rather than own caching.
    See <a href="http://core.trac.wordpress.org/ticket/13108">t13108</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15546">r15546</a>,
<a href="http://core.trac.wordpress.org/changeset/16034">r16034</a>,
<a href="http://core.trac.wordpress.org/changeset/16035">r16035</a>,
<a href="http://core.trac.wordpress.org/changeset/16312">r16312</a>,
<a href="http://core.trac.wordpress.org/changeset/16313">r16313</a>,
<a href="http://core.trac.wordpress.org/changeset/16317">r16317</a>. <!--(OPT)-->
    Don’t use create_function().
    See <a href="http://core.trac.wordpress.org/ticket/14424">t14424</a>,
        <a href="http://core.trac.wordpress.org/ticket/14579">t14579</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15559">r15559</a>. <!--(OPT)-->
    Do not run kses on display filters for front page views.
    See <a href="http://core.trac.wordpress.org/ticket/14758">t14758</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15585">r15585</a>. <!--(OPT)-->
    More efficient calendar queries.
    See <a href="http://core.trac.wordpress.org/ticket/8351">t8351</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15608">r15608</a>. <!--(OPT)-(FUNC/MOD)-->
    More efficient is_super_admin(). Don’t call new WP_User on current user.
    See <a href="http://core.trac.wordpress.org/ticket/14842">t14842</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15636">r15636</a>,
<a href="http://core.trac.wordpress.org/changeset/16300">r16300</a>. <!--(OPT)-->
    Faster is_serialized() with strpbrk().
    See <a href="http://core.trac.wordpress.org/ticket/14429">t14429</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15641">r15641</a>. <!--(OPT)-->
    Don’t fetch theme_roots transient on every page load.
    Avoid it altogether if there is only one theme dir.
    See <a href="http://core.trac.wordpress.org/ticket/14911">t14911</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16424">r16424</a>. <!--(OPT)-(FUNC/MOD)-->
    Register the default theme dir in wp-settings.php so that it is registered even when get_themes() doesn’t run.
    Fix counting of theme dirs.
    Add option to get_raw_theme_root() to disregard the current theme root cache.
    See <a href="http://core.trac.wordpress.org/ticket/14911">t14911</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15660">r15660</a>. <!--(OPT)-->
    get_boundary_post().
    Sort by post_date, not ID.
    See <a href="http://core.trac.wordpress.org/ticket/14035">t14035</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15700">r15700</a>. <!--(OPT)-(FUNC/MOD)-->
    update_post_caches().  Cache terms under more scenarios.
    See <a href="http://core.trac.wordpress.org/ticket/15026">t15026</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15701">r15701</a>. <!--(OPT)-(FUNC/MOD)-->
    get_boundary_post().
    Don’t load taxonomy and postmeta cache.
    See <a href="http://core.trac.wordpress.org/ticket/15028">t15028</a>,
        <a href="http://core.trac.wordpress.org/ticket/14796">t14796</a>.
    — Reduces queries for rel nav links.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15816">r15816</a>. <!--(OPT)-(FUNC/MOD)-->
    Improve regex performance in wptexturize().
    See <a href="http://core.trac.wordpress.org/ticket/15093">t15093</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15833">r15833</a>. <!--(OPT)-(MS)-->
    Cache invalidation for get_blogs_of_user().
    See <a href="http://core.trac.wordpress.org/ticket/14379">t14379</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16225">r16225</a>.
    Prime blogs of user cache from old cache to avoid mass DB requests on upgrade.
    See <a href="http://core.trac.wordpress.org/ticket/14379">t14379</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15919">r15919</a>. <!--(OPT)-(FIX)-->
    Do not set role if it is the same.
    See <a href="http://core.trac.wordpress.org/ticket/14708">t14708</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15932">r15932</a>. <!--(OPT)-->
    Don’t make redundant str_replace() calls in link-template.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15949">r15949</a>. <!--(OPT)-->
    Avoid extra conditional in subdirectory rewrite rules.
    See <a href="http://core.trac.wordpress.org/ticket/15083">t15083</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16029">r16029</a>. <!--(OPT)-->
    Remove unnecessary wp_cache_delete() calls.
    See <a href="http://core.trac.wordpress.org/ticket/14080">t14080</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16096">r16096</a>,
<a href="http://core.trac.wordpress.org/changeset/16104">r16104</a>,
<a href="http://core.trac.wordpress.org/changeset/16105">r16105</a>. <!--(OPT)-(FIX)-->
    Optimize menu item creation.
    See <a href="http://core.trac.wordpress.org/ticket/14415">t14415</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16204">r16204</a>. <!--(OPT)-(FIX)-(FUNC/MOD)-->
    post_class().
    Skip category/tag queries if post type doesn’t support them.
    See <a href="http://core.trac.wordpress.org/ticket/15322">t15322</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16206">r16206</a>. <!--(OPT)-(FUNC/MOD)-->
    get_page_by_path().
    Eliminate some queries by consulting cache.
    See <a href="http://core.trac.wordpress.org/ticket/11373">t11373</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16437">r16437</a>. <!--(OPT)-->
    Use wp_cache_add() instead of wp_cache_set() in update_meta_cache().
    See <a href="http://core.trac.wordpress.org/ticket/15452">t15452</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16596">r16596</a>. <!--(OPT)-(FIX)-->
    Meta data caching improvements.
    See <a href="http://core.trac.wordpress.org/ticket/15545">t15545</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16958">r16958</a>. <!--(OPT)-->
    Add theme_mods option if is_admin.
    See <a href="http://core.trac.wordpress.org/ticket/14828">t14828</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16974">r16974</a>. <!--(OPT)-->
    Fetch only the required field in wp_dropdown_users().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
</ul>

<h3 id="other">5.5.    Other</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15275">r15275</a>. <!--(OTH)-->
    Development of WordPress 3.1 starts.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15356">r15356</a>. <!--(FIX)-(FUNC/MOD)-(KSES)-->
    Don’t use deprecated function.  Blacklist braces.
    — safecss_filter_attr()</li>
<li><a href="http://core.trac.wordpress.org/changeset/15363">r15363</a>. <!--(MOD)-(FUNC/RESTORED)-->
    Restore trackback_rdf().
    Reverts <a href="http://core.trac.wordpress.org/changeset/13991">r13991</a>.
    See <a href="http://core.trac.wordpress.org/ticket/11139">t11139</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15371">r15371</a>. <!--(FIX)-(FUNC/MOD)-->
    Pass feed type from the_content_feed() to get_the_content_feed().
    See <a href="http://core.trac.wordpress.org/ticket/14214">t14214</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15450">r15450</a>. <!--(FIX)-->
    Make posts per page filters consistent and backwards compatible.
    See <a href="http://core.trac.wordpress.org/ticket/14135">t14135</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15471">r15471</a>. <!--(FIX)-(PHP/COMPAT)-->
    More curses on PHP 5.0.5. (Return by reference from internal functions causes fatal error.)
    See <a href="http://core.trac.wordpress.org/ticket/13757">t13757</a>,
        <a href="http://core.trac.wordpress.org/ticket/14160">t14160</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15521">r15521</a>. <!--(WPC)-(INSTRUCTIVE)-->
    Some escaping.
    — Mentioned for instructive value</li>
<li><a href="http://core.trac.wordpress.org/changeset/15531">r15531</a>. <!--(DEV)-(IMPORTANT)-->
    is&#95;&#42;() (conditional tags) WP_Query methods.
    See <a href="http://core.trac.wordpress.org/ticket/14494">t14494</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15533">r15533</a>. <!--(OTH)-(LICENSING)-->
    We cannot say that WordPress as a whole is GPLv2 (i.e. “GPLv2 only”). Go back to just “GPL”.
    Reverts <a href="http://core.trac.wordpress.org/changeset/13516">r13516</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15537">r15537</a>. <!--(DEV)-(IMPORTANT)-(FUNC/NEW)-(CONSTANTS)-->
    Remove WP_USE_MULTIPLE_DB. Introduce init_charset() and set_charset().
    See <a href="http://core.trac.wordpress.org/ticket/14672">t14672</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15549">r15549</a>.
<a href="http://core.trac.wordpress.org/changeset/15563">r15563</a>. <!--(WPC)-(DEV)-->
    Don’t use <em>id</em> global anymore. Use get_the_ID().
    See <a href="http://core.trac.wordpress.org/ticket/11624">t11624</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15550">r15550</a>. <!--(FIX)-(MEMCACHED)-->
    Update <em>last_changed</em> when cleaning comment cache.
    See <a href="http://core.trac.wordpress.org/ticket/14713">t14713</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15560">r15560</a>. <!--(ENH)-(DOCS)-(MENTION)-->
    Add a note about REMOTE_ADDR behind proxies.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15582">r15582</a>. <!--(ENH)-->
    Don’t hardcode pagination base (<em>page</em>).
    See <a href="http://core.trac.wordpress.org/ticket/12507">t12507</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15583">r15583</a>. <!--(FIX)-(MEMCACHED)-(OPT)-->
    Don’t cache terms indefinitely. Use TTL of one day.
    See <a href="http://core.trac.wordpress.org/ticket/11431">t11431</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15591">r15591</a>. <!--(OPT)-(MS)-->
    Only run update checks on main site.
    See <a href="http://core.trac.wordpress.org/ticket/14554">t14554</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15596">r15596</a>. <!--(NEW)-(CAPS/NEW)-->
    Introduce <em>edit_comment</em> meta cap.
    See <a href="http://core.trac.wordpress.org/ticket/14520">t14520</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15638">r15638</a>. <!--(DEV)-(IMPORTANT)-->
    Always include wp-db.php.
    Prevents a conditional include and allows database dropins to cleanly extend the wpdb class.
    Move require_wp_db() to load.php for consistency with bootloader helpers.
    See <a href="http://core.trac.wordpress.org/ticket/14508">t14508</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15643">r15643</a>. <!--(DEV)-(CSS)-(LOGIN)-->
    Make login CSS more flexible.
    See <a href="http://core.trac.wordpress.org/ticket/7763">t7763</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15672">r15672</a>. <!--(FIX)-->
    Do thorough resets in init() and init_query_flags().
    See <a href="http://core.trac.wordpress.org/ticket/14976">t14976</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15720">r15720</a>. <!--(THM)-(MAYBE)-->
    Account for Twenty Ten in theme name collisions and properly fall back to it in get_current_theme().
    See <a href="http://core.trac.wordpress.org/ticket/15719">t15719</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15736">r15736</a>. <!--(OTH)-(IMPORTANT)-->
    Have theme mods rely on theme slug instead of theme name.
    See <a href="http://core.trac.wordpress.org/ticket/15048">t15048</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15749">r15749</a>. <!--(FIX)-(MS)-->
    Don’t generate incorrect content types when files are requested with query strings.
    See <a href="http://core.trac.wordpress.org/ticket/14450">t14450</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15770">r15770</a>. <!--(OTH)-(LOOKUP)-->
    Make parse_request() set empty variables.
    See <a href="http://core.trac.wordpress.org/ticket/10710">t10710</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15772">r15772</a>. <!--(DEV)-(DOCS)-(MAYBE)-->
    Make it explicit that you can set <em>fallback_cb</em> to FALSE in wp_nav_menu().</li>
<li><a href="http://core.trac.wordpress.org/changeset/15798">r15798</a>. <!--(FIX)-(MENTION)-->
    Don’t show taxonomy term’s descendants in parent selector.
    See <a href="http://core.trac.wordpress.org/ticket/14663">t14663</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15806">r15806</a>. <!--(FIX)-(ENHANCEMENT)-->
    Prevent post and term hierarchy loops.
    See <a href="http://core.trac.wordpress.org/ticket/14662">t14662</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15808">r15808</a>. <!--(DEV)-(WP_DEBUG)-->
    Display mysql_connect errors when WP_DEBUG is enabled.
    Always die if we can't connect to the database; no point in going any futher.
    See <a href="http://core.trac.wordpress.org/ticket/14654">t14654</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15811">r15811</a>. <!--(DEV)-->
    Require plugin.php earlier so all pluggables can get at it.
    See <a href="http://core.trac.wordpress.org/ticket/15042">t15042</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15818">r15818</a>. <!--(FIX)-(MAYBE)-->
    nav_menu and post_format taxonomies should not be public.
    See <a href="http://core.trac.wordpress.org/ticket/15107">t15107</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15836">r15836</a>. <!--(OTH)-(MS)-(MENTION)-->
    Allow flagging blog as mature via URL. Move some actions into update_blog_status().
    See <a href="http://core.trac.wordpress.org/ticket/14385">t14385</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15872">r15872</a>. <!--(OTH)-(FUNC/NEW)-(RESEARCH)-->
    Schedule update checks from an init hook.
    See <a href="http://core.trac.wordpress.org/ticket/15148">t15148</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15890">r15890</a>. <!--(DEV)-(CPT)-(START)-->
    Rough first pass on map_meta_cap for custom post types.
    See <a href="http://core.trac.wordpress.org/ticket/14122">t14122</a>.
    See <a href="http://wpdevel.wordpress.com/2010/11/17/changes-to-meta-capability-handling-in-3-1/" title="[wpdevel.wordpress.com]">Changes to meta capability handling in 3.1</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15920">r15920</a>. <!--(OTH)-(ENH)-(DEV)-->
    Default send to editor to true if the post parent is empty.
    See <a href="http://core.trac.wordpress.org/ticket/14133">t14133</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15948">r15948</a>. <!--(FIX)-->
    Idempotence for sanitize_user(). Make sanitize_key() match its phpDoc.
    See <a href="http://core.trac.wordpress.org/ticket/15198">t15198</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15971">r15971</a>. <!--(FIX)-->
    Fix infinite recursion caused by malformed URLs.
    See <a href="http://core.trac.wordpress.org/ticket/14655">t14655</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15973">r15973</a>. <!--(WPC)-(FUNC/MOD)-->
    Refactor wp_get_recent_posts() to use get_posts().</li>
<li><a href="http://core.trac.wordpress.org/changeset/15984">r15984</a>. <!--(FIX)-(FUNC/MOD)-->
    Specify feed type in the_category_rss() call.
    See <a href="http://core.trac.wordpress.org/ticket/14451">t14451</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16007">r16007</a>. <!--(WPC)-->
    Use the API to build site URLs.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16009">r16009</a>. <!--(WPC)-->
    Move registration.php functions to user.php.
    Deprecate registration.php; everything is now included by default.
    See <a href="http://core.trac.wordpress.org/ticket/13761">t13761</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16012">r16012</a>. <!--(DEV)-(IMPORTANT)-->
    Don’t call activation hooks when upgrading.
    See <a href="http://core.trac.wordpress.org/ticket/14915">t14915</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16028">r16028</a>. <!--(DEV)-(FUNC/MOD)-(THEMES)-->
    Add class to “Your comment is awaiting moderation” in the comment walker and in Twenty Ten’s callback.
    See <a href="http://core.trac.wordpress.org/ticket/15206">t15206</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16030">r16030</a>. <!--(FIX)-(FUNC/MOD)-->
    Use correct variable in edit_bookmark_link().
    See <a href="http://core.trac.wordpress.org/ticket/14141">t14141</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16068">r16068</a>. <!--(FIX)-->
    Don’t pass deprecated argument in discover_pingback_server_uri().</li>
<li><a href="http://core.trac.wordpress.org/changeset/16093">r16093</a>. <!--(OTH)-(LOOKUP)-->
    Move an array cast further down the stack in wp_get_nocache_headers().
    See <a href="http://core.trac.wordpress.org/ticket/13965">t13965</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16095">r16095</a>. <!--(DEV)-->
    Add <em>menu-item-object-$object</em> class for custom menus.
    See <a href="http://core.trac.wordpress.org/ticket/14053">t14053</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16135">r16135</a>. <!--(ENH)-(FIX)-(MAYBE)-->
    Die if user doesn’t have caps for post type.
    See <a href="http://core.trac.wordpress.org/ticket/15259">t15259</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16136">r16136</a>,
<a href="http://core.trac.wordpress.org/changeset/16415">r16415</a>. <!--(WPC)-(CSS)-->
    Admin CSS cleanup.
    See <a href="http://core.trac.wordpress.org/ticket/14770">t14770</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16197">r16197</a>. <!--(THM)-->
    Add Post Format support to Twenty Ten (Aside and Gallery).
    See <a href="http://core.trac.wordpress.org/ticket/14746">t14746</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16207">r16207</a>. <!--(FIX)-(FUNC/MOD)-->
    Don’t anchor regex.  Fix for sanitize_email().
    See <a href="http://core.trac.wordpress.org/ticket/14628">t14628</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16215">r16215</a>,
<a href="http://core.trac.wordpress.org/changeset/16552">r16552</a>. <!--(WPC)-(OPT)-(FUNC/MOD)-->
    More precise regex in get_file_data().
    See <a href="http://core.trac.wordpress.org/ticket/15193">t15193</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16340">r16340</a>. <!--(WPC)-(MENTION)-(CODE)-->
    Use square brackets instead of braces for string access.
    See <a href="http://core.trac.wordpress.org/ticket/13900">t13900</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16365">r16365</a>. <!--(WPC)-(MAYBE)-->
    Improve hook readability via braces.
    See <a href="http://core.trac.wordpress.org/ticket/15422">t15422</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16392">r16392</a>. <!--(FIX)-(RTL)-->
    Fallback to only RTL attributes in wp_die() HTML tag if it’s very early in the execution.
    See <a href="http://core.trac.wordpress.org/ticket/6132">t6132</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16401">r16401</a>. <!--(FIX)-(FUNC/MOD)-->
    Use user_trailingslashit() in get_author_posts_url().
    See <a href="http://core.trac.wordpress.org/ticket/15441">t15441</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16539">r16539</a>. <!--(FIX)-(FUNC/MOD)-->
    Escape URL in wp_link_pages().
    See <a href="http://core.trac.wordpress.org/ticket/14271">t14271</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16564">r16564</a>. <!--(UPD)-(IIS)-->
    Updated WebPI parameters.xml file. — <em>IIS branch</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/16566">r16566</a>. <!--(OTH)-(RESEARCH)-->
    Let SimplePie do more of the date handling for us.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16585">r16585</a>. <!--(ENH)-(IIS)-->
    Tighter match for the ACL.
    — <em>IIS branch</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/16587">r16587</a>. <!--(OTH)-(MAYBE)-->
    Things go bump in the night.
    — <em>WordPress 3.1 Beta 1</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/16666">r16666</a>. <!--(FIX)-(CPT)-->
    Don’t show permalink box in edit screen if post type is not publicly queryable.
    See <a href="http://core.trac.wordpress.org/ticket/14321">t14321</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16667">r16667</a>. <!--(MOD)-(FUNC/MOD)--> 
    Remove archaic reference return in get_children().
    See <a href="http://core.trac.wordpress.org/ticket/12372">t12372</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16670">r16670</a>. <!--(DEV)-->
    Throw WP_Error if post_type passed to register_post_type() is too long.
    See <a href="http://core.trac.wordpress.org/ticket/13709">t13709</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/16688">r16688</a>. <!--(FIX)-(THM)-->
    Include parent theme CSS before child’s in add_editor_style().
    See <a href="http://core.trac.wordpress.org/ticket/14430">t14430</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16691">r16691</a>. <!--(FIX)-(MAYBE)-->
    Clean cache when deleting term.
    See <a href="http://core.trac.wordpress.org/ticket/15651">t15651</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16694">r16694</a>. <!--(DEV)-->
    Add class to Tag Cloud widget DIV.
    See <a href="http://core.trac.wordpress.org/ticket/12602">t12602</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16728">r16728</a>. <!--(FIX)-(OEMBED)-->
    Unescape ampersands before making oEmbed request.
    See <a href="http://core.trac.wordpress.org/ticket/14514">t14514</a>,
        <a href="http://core.trac.wordpress.org/ticket/11311">t11311</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16738">r16738</a>. <!--(ENH)-(MS)-->
    Get rid of niggling hardcoded blogs.dir path.
    See <a href="http://core.trac.wordpress.org/ticket/15383">t15383</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16742">r16742</a>. <!--(OTH)-(NAV-MENUS)-->
    Highlight home page Custom Nav Menu item even when extra query args are present in the URL (only if all other highlights fail).
    See <a href="http://core.trac.wordpress.org/ticket/13994">t13994</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16752">r16752</a>. <!--(FIX)-->
    Add jquery-ui-sortable dependency to nav-menu.
    See <a href="http://core.trac.wordpress.org/ticket/15622">t15622</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16783">r16783</a>. <!--(FIX)-(UI)-(MINOR)-->
    Fix background colors for Select Files upload buttons.
    See <a href="http://core.trac.wordpress.org/ticket/8545">t8545</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16797">r16797</a>. <!--(FIX)-(IIS)-(READUP)-->
    Enable canonical redirections for permalink-suporting IIS.
    See <a href="http://core.trac.wordpress.org/ticket/10187">t10187</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16808">r16808</a>. <!--(MOD)-(MS)-(INTERESTING)-->
    Remove stripslashes() from get_blog_option(). No longer needed.
    See <a href="http://core.trac.wordpress.org/ticket/12560">t12560</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16812">r16812</a>. <!--(FIX)-->
    Fix error display in media form.
    See <a href="http://core.trac.wordpress.org/ticket/13810">t13810</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16826">r16826</a>. <!--(FIX)-->
    Link to unobfuscated JavaScript. (To comply with GPL.)
    See <a href="http://core.trac.wordpress.org/ticket/15262">t15262</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16864">r16864</a>. <!--(NEW)-->
    wp-caption-text class for the gallery shortcode caption.
    See <a href="http://core.trac.wordpress.org/ticket/14411">t14411</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16872">r16872</a>,
<a href="http://core.trac.wordpress.org/changeset/16877">r16877</a>,
<a href="http://core.trac.wordpress.org/changeset/16878">r16878</a>. <!--(FIX)-->
    Check if WP_Query has returned any posts before proceeding.
    See <a href="http://core.trac.wordpress.org/ticket/15771">t15771</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16906">r16906</a>. <!--(FIX)-(MS)--> 
    Return correct HTTP status code (410) for archived, deleted, and spam sites.
    See <a href="http://core.trac.wordpress.org/ticket/15799">t15799</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16920">r16920</a>. <!--(FIX)-->
    Fix canonical paged/feed redirects.
    See <a href="http://core.trac.wordpress.org/ticket/14288">t14288</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16922">r16922</a>. <!--(FIX)-->
    Remove internal ceilings from Recent Comments and Recent Posts widgets, and from dashboard widgets.
    See <a href="http://core.trac.wordpress.org/ticket/14543">t14543</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16932">r16932</a>. <!--(OTH)-->
    3.1 Beta 2.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16939">r16939</a>. <!--(WPC)-(DEV)-(FUNC/NEW)--> 
    _doing_it_wrong(), first pass.
    New function to display notifications for incorrect use of functions.
    See <a href="http://core.trac.wordpress.org/ticket/15824">t15824</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17068">r17068</a>. <!--(DEV)-(IMPORTANT)-->
    Prevent fatal error if conditional tag is called before $wp_query is set.
    See <a href="http://core.trac.wordpress.org/ticket/14729">t14729</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17102">r17102</a>. <!--(DEV)-(MENTION)--> 
    Translations in title attributes require esc_attr().
    — <em>Mentioned for instructive value</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/17085">r17085</a>. <!--(FIX)-->
    Don’t check upload space site option if option is disabled.
    See <a href="http://core.trac.wordpress.org/ticket/13601">t13601</a>.
    — <em>Multisite</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/17148">r17148</a>. <!--(RELEASE)--> 
    Happy holidays :D
    — <em>WordPress 3.1 Release Candidate 1</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/17171">r17171</a>. <!--(SECURITY)-(WP304)-->
    Don’t be case sensitive to attribute names.
    Handle padded entities when checking for bad protocols.
    Normalize entities before checking for bad protocols in esc_url().
    — 3.0 also
    — <em>Security</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/17322">r17322</a>. <!--(IMPORTANT)--> 
    Remove AJAX from list tables, first pass.
    See <a href="http://core.trac.wordpress.org/ticket/16262">t16262</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17355">r17355</a>. <!--(RELEASE)--> 
    WordPress 3.1 Release Candidate 3.</li>
</ul>

<h3 id="third-party">5.6.    Third-party libraries</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15612">r15612</a>. <!--(UPD)-(3RD)-->
    Incutio XML-RPC Library from 1.7 beta to 1.7.4.
    See <a href="http://core.trac.wordpress.org/ticket/14703">t14703</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15683">r15683</a>,
<a href="http://core.trac.wordpress.org/changeset/16950">r16950</a>. <!--(UPD)-(3RD)-(TINYMCE)-->
    TinyMCE from 3.2.7 to 3.3.9.3.
    See <a href="http://core.trac.wordpress.org/ticket/15111">t15111</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15711">r15711</a>,
<a href="http://core.trac.wordpress.org/changeset/15738">r15738</a>,
<a href="http://core.trac.wordpress.org/changeset/16165">r16165</a>,
<a href="http://core.trac.wordpress.org/changeset/16863">r16863</a>,
<a href="http://core.trac.wordpress.org/changeset/17304">r17304</a>, 
<a href="http://core.trac.wordpress.org/changeset/17346">r17346</a>. <!--(UPD)-(3RD)-->
    jQuery UI from 1.7.3 to 1.8.9.
    See <a href="http://core.trac.wordpress.org/ticket/12863">t12863</a>,
        <a href="http://core.trac.wordpress.org/ticket/15303">t15303</a>,
        <a href="http://core.trac.wordpress.org/ticket/15766">t15766</a>,
        <a href="http://core.trac.wordpress.org/ticket/16234">t16234</a>,
        <a href="http://core.trac.wordpress.org/ticket/16331">t16331</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15821">r15821</a>,
<a href="http://core.trac.wordpress.org/changeset/15991">r15991</a>,
<a href="http://core.trac.wordpress.org/changeset/16186">r16186</a>,
<a href="http://core.trac.wordpress.org/changeset/16318">r16318</a>. <!--(UPD)-(3RD)-->
    jQuery from 1.4.2 to 1.4.4.
    See <a href="http://core.trac.wordpress.org/ticket/15135">t15135</a>,
        <a href="http://core.trac.wordpress.org/ticket/15227">t15227</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16305">r16305</a>. <!--(UPD)-(3RD)-->
    Farbtastic from v1.2 to v1.3u.
    See <a href="http://core.trac.wordpress.org/ticket/14707">t14707</a>.</li>
</ul>

<h3 id="xml-rpc">5.7.    XML-RPC</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16064">r16064</a>.
<a href="http://core.trac.wordpress.org/changeset/16065">r16065</a>. <!--(NEW)-(FUNC/NEW)-(CLASSES/NEW)-(XML-RPC)-->
    WP_HTTP_IXR_Client.
    Introduce and use in core.
    Extends IXR_Client and switches it to using the WordPress HTTP API instead of fsockopen().
    See <a href="http://core.trac.wordpress.org/ticket/10588">t10588</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16256">r16256</a>. <!--(ENH)-(XML-RPC)-->
    Support optional number of posts in the following XML-RPC API calls:

<ul>
<li>blogger.getRecentPosts</li>
<li>metaWeblog.getRecentPosts</li>
<li>mt.getRecentPostTitles</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16484">r16484</a>. <!--(NEW)-(XML-RPC)-->
    Expose post format details in XML-RPC.
    See <a href="http://core.trac.wordpress.org/ticket/15405">t15405</a>.

<ul>
<li>New method: wp.getPostFormats</li>
<li>New field in methods dealing with posts: wp_post_format</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16809">r16809</a>. <!--(FIX)-(XLM-RPC)-->
    Use is_callable() instead of method_exists().
    See <a href="http://core.trac.wordpress.org/ticket/14933">t14933</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16824">r16824</a>. <!--(FIX)-(XML-RPC)-->
    Work around some notices for unset variable in xmlrpc.php.
    See <a href="http://core.trac.wordpress.org/ticket/10665">t10665</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15975">r15975</a>. <!--(FIX)-(XML-RPC)-->
    4th argument of wp.getOptions is optional.  Don’t notice if it is absent.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15980">r15980</a>. <!--(NEW)-(XML-RPC)-->
    Expose the media options over XML-RPC.
    Fixes <a href="http://core.trac.wordpress.org/ticket/15153">t15153</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16016">r16016</a>. <!--(NEW)-(XML-RPC)-->
    First pass at 'wp.getMediaItem' and 'wp.getMediaLibrary'.
    See <a href="http://core.trac.wordpress.org/ticket/15151">t15151</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16046">r16046</a>.<!--(DOC)-(XML-RPC)-->
    phpDoc and a bug fix for the new media XMLRPC functions.
    See <a href="http://core.trac.wordpress.org/ticket/15151">t15151</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16508">r16508</a>. <!--(FIX)-(XML-RPC)-->
    Ensure that we return post IDs as strings to honour API defintions.
    See <a href="http://core.trac.wordpress.org/ticket/15517">t15517</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16572">r16572</a>. <!--(FIX)-(XML-RPC)-->
    Cast to string so we return the correct datatype.
    See <a href="http://core.trac.wordpress.org/ticket/15517">t15517</a>.</li>
</ul>

<h3 id="functions">5.8.    Functions/Classes</h3>

<p>NEW FUNCTIONS AND CLASSES</p>

<!--
*   get_theme_feature_list().
*   get_post_format_string().
*   get_post_format_strings().
*   self_admin_url().
*   show_admin_bar().
*   wp_check_post_hierarchy_for_loops().
*   wp_check_term_hierarchy_for_loops().
*   wp_schedule_update_network_counts().
*   wp_update_network_counts().
*   wp_get_active_network_plugins().
-->

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15491">r15491</a>. <!--(CLASS/NEW)-(OK)-->
    WP_User_Query.
    The new WordPress user query class.
    See <a href="http://core.trac.wordpress.org/ticket/14579">t14579</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15723">r15723</a>. <!--(CLASS/NEW)-(OK)-->
    WP_Comment_Query.
    WordPress Comment Query class.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16849">r16849</a>. <!--(CLASS/NEW)-(OK)-->
    WP_Tax_Query.
    Containter class for advanced taxonomy queries.
    See <a href="http://core.trac.wordpress.org/ticket/15752">t15752</a>.</li>
</ul>

<!--.-->

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15467">r15467</a>. <!--(FUNC/NEW)-->
    unregister_nav_menu().
    See <a href="http://core.trac.wordpress.org/ticket/14001">t14001</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15481">r15481</a>. <!--(FUNC/NEW)-->
    is_network_admin().
    See <a href="http://core.trac.wordpress.org/ticket/14435">t14435</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15491">r15491</a>. <!--(FUNC/NEW)-->
    get_users().
    Retrieves users matching criteria.
    Uses WP_User_Query.
    See <a href="http://core.trac.wordpress.org/ticket/14579">t14579</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15558">r15558</a>. <!--(FUNC/NEW)-->
    is_blog_admin().
    See <a href="http://core.trac.wordpress.org/ticket/14763">t14763</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15598">r15598</a>. <!--(MAYBE)-->
    single_term_title().  Introduced and used in single_cat_title(), single_tag_title().
    See <a href="http://core.trac.wordpress.org/ticket/14161">t14161</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15574">r15574</a>.
    wp_array_slice_assoc().
    Given list of keys, extracts slice of array.
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15601">r15601</a>. <!--(FUNC/NEW)-->
    wp_dequeue_script(), wp_dequeue_style().
    See <a href="http://core.trac.wordpress.org/ticket/14815">t14815</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15631">r15631</a>. <!--(FUNC/NEW)-->
    get_ancestors().
    See <a href="http://core.trac.wordpress.org/ticket/12443">t12443</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15677">r15677</a>. <!--(FUNC/NEW)-->
    has_term(), has_category().
    See <a href="http://core.trac.wordpress.org/ticket/12526">t12526</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15686">r15686</a>. <!--(SCRIBU)-->
    wp_list_filter(), wp_list_pluck().
    See <a href="http://core.trac.wordpress.org/ticket/15016">t15016</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15746">r15746</a>. <!--(FUNC/NEW)-(OK)-->
    add_screen_option(). Registers and configures admin screen option.
    See <a href="http://core.trac.wordpress.org/ticket/14696">t14696</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15746">r15746</a>. <!--(FUNC/NEW)-(OK)-->
    get_current_screen(). Gets current screen object (in dashboard).
    See <a href="http://core.trac.wordpress.org/ticket/14696">t14696</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15746">r15746</a>. <!--(FUNC/NEW)-(OK)-->
    is_user_admin().
    See <a href="http://core.trac.wordpress.org/ticket/14696">t14696</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15753">r15753</a>. <!--(FUNC/NEW)-->
    remove_menu_page(), remove_submenu_page().
    See <a href="http://core.trac.wordpress.org/ticket/12718">t12718</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15777">r15777</a>. <!--(FUNC/NEW)-(OK)-->
    get_post_format().
    Retrieves format of post.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15777">r15777</a>. <!--(FUNC/NEW)-(OK)-->
    set_post_format().
    Assigns format to post.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15778">r15778</a>. <!--(FUNC/NEW)-->
    has_post_format().
    See <a href="http://core.trac.wordpress.org/ticket/14746">t14746</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15792">r15792</a>,
<a href="http://core.trac.wordpress.org/changeset/15800">r15800</a>,
<a href="http://core.trac.wordpress.org/changeset/15801">r15801</a>. <!--(FUNC/NEW)-->
    edit_term_link(), get_edit_term_link(), get_term_url().
    See <a href="http://core.trac.wordpress.org/ticket/9702">t9702</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15806">r15806</a>. <!--(FUNC/NEW)-(OK)-->
    wp_get_post_parent_id().</li>
<li><a href="http://core.trac.wordpress.org/changeset/15806">r15806</a>. <!--(FUNC/NEW)-(OK)-->
    wp_get_term_taxonomy_parent_id()</li>
<li><a href="http://core.trac.wordpress.org/changeset/15810">r15810</a>, <!--(SUBMIT-BUTTON)-(START)-(OK)-->
<a href="http://core.trac.wordpress.org/changeset/16061">r16061</a>,
<a href="http://core.trac.wordpress.org/changeset/16097">r16097</a>,
<a href="http://core.trac.wordpress.org/changeset/16362">r16362</a>.
    submit_button(), get_submit_button().
    New template functions.
    See <a href="http://core.trac.wordpress.org/ticket/15064">t15064</a>.
    See core for examples of usage.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15819">r15819</a>. <!--(FUNC/NEW)-(OK)-->
    get_post_type_archive_feed_link().
    Retrieves permalink for post type archive feed.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15819">r15819</a>. <!--(FUNC/NEW)-(OK)-->
    get_post_type_archive_link().
    Retrieves permalink for post type archive.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15819">r15819</a>. <!--(FUNC/NEW)-(OK)-->
    is_post_type_archive().</li>
<li><a href="http://core.trac.wordpress.org/changeset/15819">r15819</a>, 
<a href="http://core.trac.wordpress.org/changeset/16211">r16211</a>. <!--(FUNC/NEW)-(OK)-->
    post_type_archive_title().
    Displays/Retrieves title for post type archive.
    See <a href="http://core.trac.wordpress.org/ticket/13818">t13818</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15929">r15929</a>. <!--(FUNC/NEW)-->
    sanitize_title_for_query().
    See <a href="http://core.trac.wordpress.org/ticket/9591">t9591</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15930">r15930</a>. <!--(FUNC/MOD)-->
    remove_accents(): Nordic characters fixes.
    See <a href="http://core.trac.wordpress.org/ticket/4739">t4739</a>,
        <a href="http://core.trac.wordpress.org/ticket/9591">t9591</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15931">r15931</a>. <!--(FUNC/MOD)-->
    Also convert uppercase letters in Latin Extended-B.
    See <a href="http://core.trac.wordpress.org/ticket/9591">t9591</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16050">r16050</a>. <!--(FUNC/NEW)-->
    get_current_blog_id().
    See <a href="http://core.trac.wordpress.org/ticket/15233">t15233</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16073">r16073</a>, <!--(I18N)-(FUNC/NEW)-->
<a href="http://core.trac.wordpress.org/changeset/16075">r16075</a>.
    translate_nooped_plural().
    See <a href="http://core.trac.wordpress.org/ticket/13996">t13996</a>.

<ul>
<li>_n_noop() and _nx_noop() now return associative arrays for greater clarity</li>
<li>translate_nooped_plural() takes one such associative array and translates it</li>
<li>works on both the result from _n_noop() and from _nx_noop()</li>
<li>retains backwards compatiblity for the few plugins using _n_noop()</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16083">r16083</a>. <!--(FUNC/NEW)-(OK)-->
    get_dashboard_url(), get_edit_profile_url().
    Determine appropriate dashboard for user based on user’s blogs and current blog.
    See <a href="http://core.trac.wordpress.org/ticket/14696">t14696</a>,
        <a href="http://core.trac.wordpress.org/ticket/14772">t14772</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16091">r16091</a>,
<a href="http://core.trac.wordpress.org/changeset/16114">r16114</a>,
<a href="http://core.trac.wordpress.org/changeset/16115">r16115</a>. <!--(FUNC/NEW)-(OK)-->
    get_queried_object(), get_queried_object_id().
    Wrappers for $wp_query->get_queried_object() and $wp_query->get_queried_object_id().
    Introduced and applied in core.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16154">r16154</a>. <!--(FUNC/NEW)-(OK)-->
    wp_basename().
    i18n-friendly basename() (for media handling, inter alia).
    See <a href="http://core.trac.wordpress.org/ticket/11887">t11887</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16209">r16209</a>. <!--(FUNC/NEW)-(OK)-->
    user_can().
    Whether user has capability or role.
    See <a href="http://core.trac.wordpress.org/ticket/14602">t14602</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16388">r16388</a>. <!--(FUNC/NEW)-(OK)-->
    set_post_thumbnail().
    See <a href="http://core.trac.wordpress.org/ticket/15192">t15192</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16431">r16431</a>. <!--(FUNC/NEW)-(OK)-->
    esc_textarea().
    Escaping for textarea input. Applied in core where appropriate.
    See <a href="http://core.trac.wordpress.org/ticket/15454">t15454</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16674">r16674</a>. <!--(FUNC/NEW)-(OK)-->
    remove_custom_image_header().
    See <a href="http://core.trac.wordpress.org/ticket/14903">t14903</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16705">r16705</a>. <!--(FUNC/NEW)-->
    get_post_format_link().</li>
<li><a href="http://core.trac.wordpress.org/changeset/16705">r16705</a>. <!--(FUNC/NEW)-->
    get_post_format_slugs().</li>
<li><a href="http://core.trac.wordpress.org/changeset/16720">r16720</a>. <!--(FUNC/NEW)-(OK)-->
    remove_custom_background().
    See <a href="http://core.trac.wordpress.org/ticket/14903">t14903</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16721">r16721</a>. <!--(FUNC/NEW)-(OK)-->
    remove_editor_styles().
    See <a href="http://core.trac.wordpress.org/ticket/14903">t14903</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16764">r16764</a>. <!--(FUNC/NEW)-(OK)-->
    can_edit_site().
    To replace inline checks on whether site_id is for current network.
    See <a href="http://core.trac.wordpress.org/ticket/15716">t15716</a>.</li>
</ul>

<p>IMPROVED/MODIFIED FUNCTIONS AND CLASSES</p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15544">r15544</a>. <!--(FUNC/MOD)-(FILTER/NEW)-->
    wp_nav_menu().

<ul>
<li>Make menus manipulation easier for plugin developers.</li>
<li>Add wp_nav_menu_objects filter, which gets a sorted list of all menu node objects in the currently rendered menu.</li>
<li>Add current, current_item_ancestor and current_item_parent boolean member variables to each menu node object,
which are true when the item has the current-menu-item, current-menu-ancestor or current-menu-parent CSS class respectively.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15564">r15564</a>. <!--(FUNC/MOD)-(OK)-->
    wp_insert_post().
    Now requires argument.
    See <a href="http://core.trac.wordpress.org/ticket/14783">t14783</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15586">r15586</a>.
    get_term_link().
    Second (taxonomy) parameter now optional if passing term object as first arg (which has the taxonomy in it).
    See <a href="http://core.trac.wordpress.org/ticket/13081">t13081</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15587">r15587</a>. <!--(FIX)-(CPT)-(FUNC/MOD)-->
    wp_list_pages().
    Supports custom post type links.
    See <a href="http://core.trac.wordpress.org/ticket/14177">t14177</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15589">r15589</a>. <!--(FUNC/MOD)-(OK)-->
    get_posts().
    <em>caller_get_posts</em> renamed to <em>ignore_sticky_posts</em>.
    See <a href="http://core.trac.wordpress.org/ticket/14624">t14624</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15598">r15598</a>,
<a href="http://core.trac.wordpress.org/changeset/15599">r15599</a>.
    single_cat_title(), single_tag_title(), wp_title().
    Cleaned up.
    See <a href="http://core.trac.wordpress.org/ticket/14161">t14161</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15620">r15620</a>. <!--(FUNC/MOD)-(OK)-->
    <a href="http://codex.wordpress.org/Function_Reference/wp_list_authors" title="wp_list_authors() at the WordPress Codex [codex.wordpress.org]">wp_list_authors()</a>.
    New <em>number</em>, <em>orderby</em> and <em>order</em> args.
    See <a href="http://core.trac.wordpress.org/ticket/10329">t10329</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15635">r15635</a>. <!--(FUNC/MOD)-->
    sanitize_key().
    Simplified and used in more places.
    See <a href="http://core.trac.wordpress.org/ticket/14910">t14910</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15771">r15771</a>. <!--(FUNC/MOD)-(OK)-->
    locate_template().
    Now accepts string as first parameter.
    See <a href="http://core.trac.wordpress.org/ticket/15061">t15061</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15982">r15982</a>. <!--(FUNC/MOD)-->
    WP_Query.
    New <em>fields</em> query variable.
    See <a href="http://core.trac.wordpress.org/ticket/14777">t14777</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15626">r15626</a>, <!--(FUNC/MOD)-(OK)-->
<a href="http://core.trac.wordpress.org/changeset/15627">r15627</a>.
    category&#95;&#95;in(), tag&#95;&#95;in() etc.
    Input does not have to be array.
    See <a href="http://core.trac.wordpress.org/ticket/14892">t14892</a>,
        <a href="http://core.trac.wordpress.org/ticket/14389">t14389</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15661">r15661</a>. <!--(FUNC/MOD)-(OK)-->
    screen_icon().
    New CSS class for post type.
    See <a href="http://core.trac.wordpress.org/ticket/14959">t14959</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15690">r15690</a>. <!--(FUNC/MOD)-(OK)-->
    wp_delete_category().
    Now wraps wp_delete_term().
    See <a href="http://core.trac.wordpress.org/ticket/15008">t15008</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15828">r15828</a>. <!--(FUNC/MOD)-->
    remove_theme_support().
    Now allows disabling custom header uploads.
    See <a href="http://core.trac.wordpress.org/ticket/14837">t14837</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15844">r15844</a>. <!--(FUNC/MOD)-->
    register_post_type().
    New <em>show_in_menu</em> arg: Allows post types to be a submenu, accepts boolean and also a parent base.
    See <a href="http://core.trac.wordpress.org/ticket/14145">t14145</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15855">r15855</a>. <!--(FUNC/MOD)-(OK)-->
    the_terms().
    <em>id</em> arg now optional.
    See <a href="http://core.trac.wordpress.org/ticket/15160">t15160</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15856">r15856</a>. <!--(FUNC/MOD)-(OK)-->
    body_class().
    New classes for custom taxonomies/terms.
    See <a href="http://core.trac.wordpress.org/ticket/15017">t15017</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15937">r15937</a>. <!--(ADDED)-->
    is_archive().
    <em>post_type</em> params removed.
    Use <a href="http://codex.wordpress.org/Function_Reference/is_post_type_archive" title="is_post_type_archive() at the WordPress Codex [codex.wordpress.org]">is_post_type_archive()</a> for full context.
    See <a href="http://core.trac.wordpress.org/ticket/13818">t13818</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15968">r15968</a>. <!--(FUNC/MOD)-(MS)-->
    is_multisite().
    Also looks for SUBDOMAIN_INSTALL.
    See <a href="http://core.trac.wordpress.org/ticket/14536">t14536</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/16138">r16138</a>. <!--(FUNC/MOD)-->
    post_class().
    New <em>post-password-required</em> class if password required.
    See <a href="http://core.trac.wordpress.org/ticket/13860">t13860</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16139">r16139</a>. <!--(FUNC/MOD)-(OK)-->
    post_class().
    New class for post status, to facilitate styling of private posts.
    See <a href="http://core.trac.wordpress.org/ticket/15279">t15279</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16200">r16200</a>. <!--(FUNC/MOD)-(OK)-->
    post_class(), body_class().
    New classes for post formats.
    See <a href="http://core.trac.wordpress.org/ticket/14746">t14746</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16251">r16251</a>. <!--(FUNC/MOD)-(OK)-->
    register_post_type(), register_taxonomy().
    New <em>menu_name</em> label (defaults to <em>name</em>).
    See <a href="http://core.trac.wordpress.org/ticket/14832">t14832</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16283">r16283</a>. <!--(FUNC/MOD)-(OK)-->
    body_class().
    More ID-based classes.
    See <a href="http://core.trac.wordpress.org/ticket/12397">t12397</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16357">r16357</a>. <!--(FUNC/MOD)-->
    check_comment().
    Always apply comment_text filter.
    See <a href="http://core.trac.wordpress.org/ticket/14680">t14680</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16432">r16432</a>. <!--(FUNC/MOD)-(OK)-->
    body_class().
    New <em>admin-bar</em> class when admin bar is displayed.
    See <a href="http://core.trac.wordpress.org/ticket/15455">t15455</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16447">r16447</a>. <!--(FUNC/MOD)-(OK)-->
    is_feed().
    Can check for feed format as well.
    See <a href="http://core.trac.wordpress.org/ticket/15460">t15460</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16519">r16519</a>, <!--(FUNC/MOD)-(OK)-->
<a href="http://core.trac.wordpress.org/changeset/16520">r16520</a>.
    wp_nav_menu().
    New <em>items_wrap</em> argument.
    See <a href="http://core.trac.wordpress.org/ticket/14235">t14235</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17028">r17028</a>. <!--(FUNC/MOD)--> 
    Make get_the_taxonomies() take an array of arguments.
    See <a href="http://core.trac.wordpress.org/ticket/14740">t14740</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17107">r17107</a>. <!--(FUNC/MOD)--> 
    single_term_title().
    Echo or return, not both.
    See <a href="http://core.trac.wordpress.org/ticket/15939">t15939</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16994">r16994</a>. <!--(FUNC/MOD)--> 
    network_admin_url().
    Now returns admin_url() when not multisite, like its home and site counterparts.
    See <a href="http://core.trac.wordpress.org/ticket/15840">t15840</a>.</li>
</ul>

<p>DEPRECATED FUNCTIONS AND CLASSES</p>

<p><em>This part is provided for a quick overview.  You don’t need to memorize it or worry about it.</em>
<em>Just enable WP_DEBUG and it will tell you if there is anything you should not be using anymore.</em></p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15515">r15515</a>. <!--(FUNC/DEPR)-->
    print_column_headers().
    Use WP_List_Table.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15515">r15515</a>. <!--(FUNC/DEPR)-->
    register_column_headers().
    Use WP_List_Table.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15531">r15531</a>. <!--(FUNC/DEPR)-->
    update_category_cache().
    Use global <em>$plugin_page</em> and/or get_plugin_page_hookname() hooks.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15540">r15540</a>. <!--(FUNC/DEPR)-->
    get_author_user_ids().
    Use get_users().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15540">r15540</a>. <!--(FUNC/DEPR)-->
    get_editable_authors().
    Use get_users().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15542">r15542</a>. <!--(FUNC/DEPR)-->
    get_editable_user_ids().
    Use get_users().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15542">r15542</a>. <!--(FUNC/DEPR)-->
    get_nonauthor_user_ids().
    Use get_users().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15542">r15542</a>. <!--(FUNC/DEPR)-->
    get_others_drafts().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15542">r15542</a>. <!--(FUNC/DEPR)-->
    get_others_pending().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15542">r15542</a>. <!--(FUNC/DEPR)-->
    get_others_unpublished_posts().
    See <a href="http://core.trac.wordpress.org/ticket/14572">t14572</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15748">r15748</a>. <!--(CLASS/DEPR)-->
    WP_User_Search.
    Use WP_User_Query.
    See <a href="http://core.trac.wordpress.org/ticket/14579">t14579</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16412">r16412</a>. <!--(FUNC/DEPR)-->
    update_category_cache().
    See <a href="http://core.trac.wordpress.org/ticket/15446">t15446</a>.</li>
</ul>

<p>REMOVED FUNCTIONS AND CLASSES</p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15678">r15678</a>. <!--(FUNC/REMOVED)-(MS)-->
    wordpressmu_wp_mail_from().
    See <a href="http://core.trac.wordpress.org/ticket/14586">t14586</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15679">r15679</a>. <!--(FUNC/REMOVED)-(MS)-->
    admin_notice_feed().
    See <a href="http://core.trac.wordpress.org/ticket/14587">t14587</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16603">r16603</a>.
    check_server_timer().
    See <a href="http://core.trac.wordpress.org/ticket/15602">t15602</a>.</li>
</ul>

<h3 id="hooks">5.9.    Hooks and constants</h3>

<p>NEW HOOKS (FILTERS AND ACTIONS)</p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15316">r15316</a>. <!--(FILTER/NEW)-(OK)-->
    widget_title.
    Filter for title of Custom Menu widget.
    See <a href="http://core.trac.wordpress.org/ticket/14009">t14009</a>.
    — 3.0 also</li>
<li><a href="http://core.trac.wordpress.org/changeset/15490">r15490</a>.
    post_comment_status_meta_box-options.
    Action to allow plugins to add more options to the comment status meta box easily.
    See <a href="http://core.trac.wordpress.org/ticket/14544">t14544</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15600">r15600</a>. <!--(FILTER/NEW)-(OK)-->
    force_filtered_html_on_import.
    Filter.
    See <a href="http://core.trac.wordpress.org/ticket/14818">t14818</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15623">r15623</a>. <!--(FILTER/NEW)-(OK)-->
    wp_get_current_commenter.
    Filter for <a href="http://codex.wordpress.org/Function_Reference/wp_get_current_commenter">wp_get_current_commenter()</a>.
    See <a href="http://core.trac.wordpress.org/ticket/14878">t14878</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15631">r15631</a>. <!--(FUNC/NEW)-->
    get_ancestors.
    Filter in new get_ancestors() function.
    See <a href="http://core.trac.wordpress.org/ticket/12443">t12443</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15775">r15775</a>, <!--(FILTER/NEW)-(START)-->
<a href="http://core.trac.wordpress.org/changeset/15791">r15791</a>,
<a href="http://core.trac.wordpress.org/changeset/15794">r15794</a>,
<a href="http://core.trac.wordpress.org/changeset/15795">r15795</a>.
    posts_clauses, posts_clauses_request.
    Filters for WP_Query clauses.
    See <a href="http://core.trac.wordpress.org/ticket/14997">t14997</a>.
    See <a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/query.php" title="[core.trac.wordpress.org]">wp-includes/query.php</a> for all individual filters.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15805">r15805</a>. <!--(ACTIONS/NEW)-(OK)-->
    custom_header_options.
    Action in custom header screen.
    See <a href="http://core.trac.wordpress.org/ticket/15119">t15119</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15837">r15837</a>. <!--(FILTER/NEW)-(OK)-->
    schedule_event.
    Filter for wp_schedule_single_event() and wp_schedule_event().
    See <a href="http://core.trac.wordpress.org/ticket/15146">t15146</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15917">r15917</a>. <!--(ACTIONS/NEW)-->
    add&#95;{$meta&#95;type}&#95;meta,
    delete&#95;{$meta&#95;type}&#95;meta.
    Actions.
    See <a href="http://core.trac.wordpress.org/ticket/14173">t14173</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15983">r15983</a>. <!--(FILTER/NEW)-->
    add&#95;{$meta&#95;type}&#95;metadata,
    delete&#95;{$meta&#95;type}&#95;metadata,
    get&#95;{$meta&#95;type}&#95;metadata,
    delete&#95;{$meta&#95;type}&#95;metadata.
    Filters for the &#42;&#95;metadata() functions.
    See <a href="http://core.trac.wordpress.org/ticket/14766">t14766</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16017">r16017</a>.
    Fix inconsistencies in metadata filters.
    See <a href="http://core.trac.wordpress.org/ticket/14766">t14766</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16000">r16000</a>.  <!--(FILTER/NEW)-(PASSWORD-RESET)-->
    login_footer. 
    Action.
    See <a href="http://core.trac.wordpress.org/ticket/5919">t5919</a>,
        <a href="http://core.trac.wordpress.org/ticket/15124">t15124</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16019">r16019</a>. <!--(FILTER/NEW)-->
    Add filters to WP_Comment_Query.
    See <a href="http://core.trac.wordpress.org/ticket/15019">t15019</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16020">r16020</a>.
    Make comment clauses more similar to post clauses.
    See <a href="http://core.trac.wordpress.org/ticket/15019">t15019</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/16038">r16038</a>. <!--(FILTER/NEW)-(OK)-->
    show_admin_bar.
    Filter.
    See <a href="http://core.trac.wordpress.org/ticket/14772">t14772</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16047">r16047</a>. <!--(FILTER/NEW)-(OK)-->
    media_upload_mime_type_links.
    Filter for media_upload_library_form().
    See <a href="http://core.trac.wordpress.org/ticket/6348">t6348</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16130">r16130</a>. <!--(FILTER/NEW)-(OK)-->
    load_image_to_edit_filesystempath, load_image_to_edit_attachmenturl.
    Filters in load_image_to_edit(), for better contextual filtering of path to image.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16247">r16247</a>. <!--(FILTER/NEW)-(OK)-->
    enter_title_here.
    Filter for placeholder in post/page edit screens.
    See <a href="http://core.trac.wordpress.org/ticket/13386">t13386</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16260">r16260</a>. <!--(FILTER/NEW)-(OK)-->
    admin_title.
    Filter for document titles of dashboard screens.
    See <a href="http://core.trac.wordpress.org/ticket/15301">t15301</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16446">r16446</a>. <!--(FILTER/NEW)-(OK)-->
    list_pages.
    Filter for the titles in Walker_PageDropdown.
    See <a href="http://core.trac.wordpress.org/ticket/13668">t13668</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16522">r16522</a>. <!--(FILTERS/NEW)-->
    show_recent_comments_widget_style.
    Pass &#95;&#95;return_false to remove default styles.
    See <a href="http://core.trac.wordpress.org/ticket/15493">t15493</a>,
        <a href="http://core.trac.wordpress.org/ticket/14876">t14876</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/17004">r17004</a>. <!--(FILTER/NEW)-->
    network_admin_plugins_action_links.
    Filter.
    See <a href="http://core.trac.wordpress.org/ticket/15850">t15850</a>.</li>
</ul>

<p>IMPROVED/MODIFIED HOOKS (FILTERS AND ACTIONS)</p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15552">r15552</a>. <!--(FILTER/MOD)-(MS)-->
    Pass more info to following notification filters.
    See <a href="http://core.trac.wordpress.org/ticket/14743">t14743</a>.

<ul>
<li>wpmu_signup_blog_notification_email</li>
<li>wpmu_signup_blog_notification_subject</li>
<li>wpmu_signup_user_notification_email</li>
<li>wpmu_signup_user_notification_subject</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/15592">r15592</a>.
    pre_comment_approved.
    Pass some context (<em>commentdata</em>).
    See <a href="http://core.trac.wordpress.org/ticket/14802">t14802</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15802">r15802</a>. <!--(FILTER/MOD)-(OK)-->
    favorite_actions.
    Filter.  Pass screen context.
    See <a href="http://core.trac.wordpress.org/ticket/15117">t15117</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15896">r15896</a>. <!--(FILTER/MOD)-(OK)-->
    user_contactmethods.
    Filter.  Pass user object.
    See <a href="http://core.trac.wordpress.org/ticket/15186">t15186</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16275">r16275</a>. <!--(FILTER/MOD)-(OK)-->
    get_enclosed.
    Pass post ID.
    See <a href="http://core.trac.wordpress.org/ticket/14018">t14018</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/16749">r16749</a>. <!--(FILTER/MOD)-(OK)-->
    login&#95;form&#95;&#42; filters.
    Pass <em>args</em>.
    See <a href="http://core.trac.wordpress.org/ticket/15702">t15702</a>.</li>
</ul>

<p>NEW CONSTANTS</p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15374">r15374</a>. <!--(CONSTANT/NEW)-(MS)-->
    DO_NOT_UPGRADE_GLOBAL_TABLES.
    See <a href="http://core.trac.wordpress.org/ticket/14221">t14221</a>.
    — 3.0 also

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/16094">r16094</a>. <!--(CONSTANT/NEW)-->
    Prevent network creation when DO_NOT_UPGRADE_GLOBAL_TABLES is defined.
    See <a href="http://core.trac.wordpress.org/ticket/14246">t14246</a>.</li>
</ul></li>
</ul>

<p>IMPROVED/MODIFIED CONSTANTS</p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15911">r15911</a>. <!--(CONSTANT/MOD)-(OTHER)-->
    WP_PROXY_BYPASS_HOSTS, WP_ACCESSIBLE_HOSTS.
    Now support wildcard domains.
    See <a href="http://core.trac.wordpress.org/ticket/14636">t14636</a>.</li>
</ul>

<h2 id="epilogue">6.  Epilogue</h2>

<p>I hope this little presentation will be useful to you.
If you have any question or if you see anything that does not look right, you are welcome to leave a comment.</p>

<p>I wish you a happy 2011 and happy web publishing with WordPress 3.1!</p>

<h2 id="log">7.  Changes to this document</h2>

<dl>
<dt>2011-02-23</dt>
<dd>Link to <a href="http://wordpress.org/news/2011/02/threeone/" title="WordPress 3.1, lots of fun [wordpress.org]">3.1 announcement</a>.</dd>

<dd>Updates, improvements.</dd>

<dt>2011-01-24</dt>
<dd>Link to <a href="http://wordpress.org/news/2011/01/wordpress-3-1-release-candidate-3/" title="WordPress 3.1 Release Candidate 3 - WordPress News [wordpress.org]">3.1 <abbr title="Release Candidate 3">RC3</abbr> announcement</a>.</dd>

<dd>List tables wonʼt get AJAX and extensibility in 3.1.
<a href="http://core.trac.wordpress.org/ticket/16262" title="t16262 - Remove AJAX and extensibility from list tables - WordPress Trac [core.trac.wordpress.org]">Ticket</a>.</dd>

<dd>Misc updates and improvements.</dd>

<dt>2011-01-17</dt>
<dd>Debug Bar screenshot and link to <a href="http://westi.wordpress.com/2011/01/05/introducing-debug-bar/" title="Introducing Debug Bar, by Peter Westwood [westi.wordpress.com]">westi’s introduction</a>.</dd>

<dd>Misc updates and improvements.</dd>

<dt>2011-01-03</dt>
<dd>Misc updates and improvements.</dd>

<dt>2010-12-30</dt>
<dd>Published.</dd>
</dl>

<!--URIs.............................................................................................................-->

<!--ABBREVIATIONS....................................................................................................-->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/81/&title=WordPress 3.1: What’s new">del.icio.us</a></p>
<hr />
<p>© 2010 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/81/">Permalink</a></p> ]]></content:encoded>
			<wfw:commentRss>http://op111.net/81/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Autotranslated themes and plugins for WordPress: An idea</title>
		<link>http://op111.net/80/</link>
		<comments>http://op111.net/80/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 06:53:01 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[l10n]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[proposal]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://op111.net/?p=80</guid>
		<description><![CDATA[A proposal for making WordPress plugins and themes easier to translate <a href="http://op111.net/80/" title="View post Autotranslated themes and plugins for WordPress: An idea" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Autotranslated themes and plugins for WordPress: An idea-->

<!--id: 80-->

<p>If you have translated, or prepared for translation, more than a couple of WordPress themes and plugins,
there are two things you must have noticed:</p>

<ol>
<li>WordPress has a good system of internationalization and localization</li>
<li>The translation material can become repetitive</li>
</ol>

<p>This first is, to my mind, one of the things that have made WordPress so popular.
It is also one of the reasons we see some popular plugins and themes published in as many as 20 or 30 different languages.  <span id="more-80"></span></p>

<h2>The issue</h2>

<p>The second is something normal, since there are some common things that plugins and themes usually need to say.  For example:</p>

<ul>
<li>&larr; Previous</li>
<li>Categories</li>
<li>Changes saved.</li>
<li>Comments are closed.</li>
<li>Edit</li>
<li>Edit this entry</li>
<li>Next &rarr;</li>
<li>Next post</li>
<li>Permanent link to %s</li>
<li>Previous post</li>
<li>Save Changes</li>
<li>Skip to main content  </li>
<li>View all posts by %s</li>
<li>View all posts in %s</li>
<li>View all posts tagged %s</li>
<li>etc. etc.</li>
</ul>

<p>But the repetition starts to seem silly after a while.
Why do we have to keep translating over and over strings that are not simply identical
but also meant for identical contexts in one and the same application?</p>

<p>Some time ago I decided to translate one of my favourite WordPress themes.
I opened its translation file and saw about one hundred strings in total.  It’s a usual number for a WordPress theme.
Of them, half were strings I had translated, or slight variations of strings I had translated, for other themes before.
(For <a href="http://simplish.pomfolio.com/" title="[simplish.pomfolio.com]">Simplish</a>, <a href="http://tarskitheme.com/" title="[tarskitheme.com]">Tarski</a> and
<a href="http://themeshaper.com/thematic/" title="[themeshaper.com]">Thematic</a>.)</p>

<p>So, I said:  “No!  I can’t keep doing this.  It’s silly!”</p>

<p>Now, I happen to be the maintainer of the <a href="http://el.wordpress.org/" title="WordPress in Greek [el.wordpress.org]">Greek WordPress translation</a>
and, as a result, I am familiar with the strings WordPress comes with.
I knew that many strings that themes have in common existed also in the WordPress core.</p>

<p>The WordPress core has more than three thousand strings.  Three thousand and eighty-eight (3088), to be exact, in version 3.0.
(And that’s without even counting the multi-site strings.)  It’s madness, but it also means that you can find almost anything in there.</p>

<p>And this gave me an idea to try an experiment:
I was curious to see if it was possible to make a theme not simply internationalized, but also localized out of the box for a substantial part of its strings.</p>

<h2>The method</h2>

<p>The method I was going to follow was simple.  I imagine others have tried it before.</p>

<p>The basic WordPress <abbr title="Internationalization">i18n</abbr> functions—<code>__()</code>, <code>_e()</code>, <code>esc_attr__()</code> etc.—take two arguments:
First, the string to be internationalized;  then, the text domain. The text domain can be omitted.
If it is omitted, WordPress uses the default, which is <em>default</em>.
This is also the text domain of the WordPress core.</p>

<p>So, if a string of your theme or plugin, let’s say “Categories”, also exists in core,
you can use the core translation by doing any of the following:</p>

<pre>
__('Categories');               #   2nd arg omitted
__('Categories', '');           #   2nd arg is empty string
__('Categories', 'default');    #   2nd arg is string “default”
</pre>

<p>Each of these will give you a string translated out of the box.</p>

<h2>The result of the experiment</h2>

<p>To keep a long story short, I completed the experiment and the result was better than I expected.
My theme had about 100 strings in total.  When I finished, seventy (70) of them were localized out of the box!</p>

<p>That is, a WordPress theme 70% translated out of the box!</p>

<p>70% fewer strings for the translators to deal with!</p>

<p>70% fewer things to go wrong on the translation front!</p>

<p>The theme’s strings even fit in one screen in <a href="http://www.poedit.net/" title="Editor for translating applications that use the gettext system [poedit.net]">Poedit</a>.  You see everything without having to scroll even once.</p>

<p>So, why haven’t we adopted this bright idea already?</p>

<h2>Two small technical hurdles</h2>

<p>As I said, I imagine other people have played with this idea before.
And I suppose they too found a couple of small issues that prevented them from implementing it in practice:</p>

<p><strong>First</strong>, even though the default text domain has strings for almost everything,
nothing says that any one of these strings will be there in the next WordPress version.
If you rely on the core translation of a string and then core modifies or removes this string,
your theme or plugin will be left with a partial translation.</p>

<p><strong>Second</strong>, we don’t have a script that can make a POT file with only those strings that need translation.
That is, a script that makes a POT file ignoring strings with no text domain or with “default” as text domain.</p>

<p>NOTE.  The script for making POT files for themes and plugins is at the URL below:</p>

<p><a href="http://svn.automattic.com/wordpress-i18n/tools/trunk/">http://svn.automattic.com/wordpress-i18n/tools/trunk/</a></p>

<p>And, I have to say, it is a very convenient tool:
You check the <em>whole</em> directory out with Subversion, run makepot.php on your plugin or theme, and you are done in a second.
(<a href="http://codex.wordpress.org/Ι18n_for_WordPress_Developers" title="i18n for WordPress developers at the WordPress Codex [codex.wordpress.org]">Learn more</a>.)</p>

<p>But it does not provide for our case yet.</p>

<h2>My proposal</h2>

<p><a href="http://core.trac.wordpress.org/ticket/14972" title="[core.trac.wordpress.org]">#14972: Proposal: Pool of common strings for core, themes, and plugins – WordPress Trac</a></p>

<p>I believe these two hurdles are easy to overcome, provided that we agree the autotranslation idea is good, and worth adopting and promoting.</p>

<p>So, I made the above proposal in the WordPress development tracker.</p>

<p>For the <strong>first</strong> hurdle, it proposes making the necessary modifications to makepot.php.</p>

<p>For the <strong>second</strong> hurdle, it says this:</p>

<p><em>Single out a few core strings that are commonly used in plugins and themes and designate them as strings for common use.</em>
<em>Then copy these strings into a new file, say, strings-common.php.</em>
<em>Once a string is in that file, it will not be liable to change.</em></p>

<p>Then, if core wants to modify or drop a common-use string for itself, it can do so without affecting the common pool.
Plugin and theme authors can use the common pool safely, knowing that its strings are there to stay.</p>

<p>I have thought a bit about the idea and the implementation, and it seems to me it would bring several advantages.</p>

<ol>
<li>It will encourage theme and plugin authors to avoid duplication by using existing strings.

<ul>
<li>Being all in one file, the strings for common usage will be easy to discover.</li>
</ul></li>
<li>It will make translating WordPress plugins and themes more attractive.</li>
<li>It will reduce workload and save time for translators.

<ul>
<li>Hopefully, some of that time will go to more translations, better translations, or a bit of both.</li>
</ul></li>
<li>It will improve standardization and QA for the common strings (more eyes will be on them).

<ul>
<li>Importantly, this will also benefit core strings.</li>
</ul></li>
<li>It will reduce package sizes for localized plugins and themes.</li>
</ol>

<p>In fact, I can only think of advantages.</p>

<h2>Your thoughts</h2>

<p>What do <em>you</em> think?</p>

<p>/dk</p>

<!--Abbreviations........................................-->

<!--URLs.................................................-->

<!--EOF..................................................-->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/80/&title=Autotranslated themes and plugins for WordPress: An idea">del.icio.us</a></p>
<hr />
<p>© 2010 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/80/">Permalink</a></p> ]]></content:encoded>
			<wfw:commentRss>http://op111.net/80/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extra Options v0.0.1: A plugin for WordPress</title>
		<link>http://op111.net/78/</link>
		<comments>http://op111.net/78/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 10:39:59 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[extra-options]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[xo]]></category>

		<guid isPermaLink="false">http://op111.net/?p=78</guid>
		<description><![CDATA[I am happy to announce the first public release of Extra Options, a simple plugin for WordPress. Extra Options offers a collection of tweaks I have been using myself here and elsewhere, and that I decided to wrap in a easy-to-install plugin with a nice interactive UI. Read more at the Extra Options homepage: op111.net/code/xo... <a href="http://op111.net/78/" title="View post Extra Options v0.0.1: A plugin for WordPress" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Extra Options for WordPress: a plugin by op111.net-->

<p>I am happy to announce the first public release of Extra Options, a simple plugin for WordPress.</p>

<p>Extra Options offers a collection of tweaks I have been using myself here and elsewhere, and that I decided to wrap in a easy-to-install plugin with a nice interactive UI.</p>

<p>Read more at the Extra Options homepage:
<a href="http://op111.net/code/xo" title="Extra Options for WordPress [op111.net]">op111.net/code/xo</a></p>

<p>Get Extra Options from WordPress Extend:
<a href="http://wordpress.org/extend/plugins/xo/" title="Extra Options for WordPress at the official WordPress repository [wordpress.org]">wordpress.org/extend/plugins/xo</a></p>

<p>Please note that v0.0.1 is the first public release of Extra Options and is <strong>not</strong> considered stable.
In other words, it is not expected to be without errors or to work well in every WordPress setup.</p>

<p>Your feedback is appreciated!</p>
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/78/&title=Extra Options v0.0.1: A plugin for WordPress">del.icio.us</a></p>
<hr />
<p>© 2010 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/78/">Permalink</a></p> ]]></content:encoded>
			<wfw:commentRss>http://op111.net/78/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress 3.0: What’s new</title>
		<link>http://op111.net/76/</link>
		<comments>http://op111.net/76/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 15:13:53 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[WPMU]]></category>

		<guid isPermaLink="false">http://op111.net/?p=76</guid>
		<description><![CDATA[A detailed illustrated look into the new features WordPress 3.0 brings for end-users and for developers. <a href="http://op111.net/76/" title="View post WordPress 3.0: What’s new" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: WordPress 3.0: What’s new-->

<!--sl: wp-30-new-features-->

<!--id: 76-->

<!--

    CHECKED UP TO: r15264

*   v3.0 START: r12456
*   v2.9 START: r11552
*   v2.8 START: r10188

-->

<!--INTRO............................................................................................................-->

<p>UPDATE.  <em>WordPress 3.0 was released today, Thursday 17 June 2010.  <a href="http://wordpress.org/download/" title="Download WordPress 3.0 from the official WordPress site [wordpress.org]">Get it here</a> or upgrade automatically!</em></p>

<p>The first release candidate of WordPress 3.0 came out on 28 May 2010.  The second followed a week after that, and the final release is expected sometime after 14 June 2010.</p>

<p>WordPress 3.0 is a large release.  The codebase underwent more changes than in any previous version (about 2700 sets of changes at this moment), and more people than ever before (above 200) contributed changes directly.  However, for the most part the changes are not immediately obvious. <span id="more-76"></span></p>

<p>Much of what changed is under the surface:  A lot of rewriting for the merge with WordPres MU, good features for developers, things to make WP a better tool internally, and many bug fixes.  Then, there are several new user features, but some of them are not visible either unless you select to use them or unless your theme explicitly supports them.</p>

<p>COMPATIBILITY NOTE</p>

<p>Backwards compatibility is good.  If op111.net is any indication, of <a href="http://op111.net/about/plugins-used" title="List of WordPress plugins used in op111.net [op111.net]">the 25 plugins it uses</a> 24 have been working flawlessly with WordPress 3.0.  One (HeadSpace2) caused a small issue recently, because of a JavaScript conflict.</p>

<p>See also “Known Issues”, right below.</p>

<h2>Known issues</h2>

<ul>
<li>Upgrading to 3.0 may need more than 32MB of memory (because the package is larger now).
If you cannot upgrade because of insufficient memory, try adding in your <em>wp-config.php</em> this:
<code>define('WP_MEMORY_LIMIT', '256M');</code> </li>
<li>Plugins that replace the WordPress database class, and probably also plugins that extend it, need to be updated.
This is because of substantial changes that were required for the merge with WordPress MU.</li>
<li>Conversion from single-site to multi-site can become problematic if <em>subdirectories</em>—rather than subdomains—are used.</li>
<li>See also the <a href="http://wordpress.org/support/topic/411649" title="WordPress 3.0 Issues, Problems, Resolutions thread at the WordPress forum [wordpress.org]">Issues, Problems and Resolutions</a> thread at the official WordPress forum.</li>
</ul>

<h2>Highlights</h2>

<h3>WordPress MU merge</h3>

<p><a href="http://mu.wordpress.org/" title="WordPress MU › Blog Tool and Publishing Platform [mu.wordpress.org]">WordPress MU</a> is a variation of WordPress designed for running multiple sites and weblogs on a single installation.  As an application it is not as widely known as WordPress, but there are probably more people using it daily to publish on the web than there are using WordPress.  Its users include educational institutions, research centres and publishing companies all over the world, and also services like WordPress.com (which must be the largest user of WordPress MU and for which MU was initially developed).</p>

<p>WordPress 3.0 brings together WordPress and WordPress MU. All MU functionality was merged into WordPress, and MU will now be discontinued. Its current version, 2.9.2, will be the last.</p>

<p>The merge and transition were designed to be invisible to users:  Users of WordPress MU 2.9.2 will simply see a notice to update to WordPress 3.0,  while users of single-site WordPress won’t see anything related to multi-site functionality unless they define a specific constant in <em>wp-config.php</em>.</p>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-ms-network-r15050.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-ms-network-r15050-192x144.png" alt="WordPress 3.0: Setting up a multi-site network" title="WordPress 3.0: Setting up a multi-site network" width="192" height="144" /></a>
<a href="http://op111.net/wp-content/uploads/2010/06/wp30-ms-themes-r15050.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-ms-themes-r15050-192x144.png" alt="WordPress 3.0: The super admin sets the available themes" title="WordPress 3.0: The super admin sets the available themes" width="192" height="144" /></a></p>

<h4>Terminology changes</h4>

<p>One difference users of single-site WordPress <em>will</em> notice is in terminology.  All instances of “blog” in the administration interface were replaced with “site”, to standardize terminology between single-site and multi-site.</p>

<p>The new meanings, which I hope I’m getting right, are as follows:</p>

<ul>
<li><em>example.com</em> in a single-site installation is now a <strong>site</strong> (which can of course be a blog).</li>
<li><em>example.com</em> in a multi-site installation is a <strong>network</strong> of sites and also the main site of the network (and can of course be a blog).</li>
<li><em>demetris.example.com</em> or <em>example.com/demetris</em> in a multi-site installation is one of the sites that make up the network.</li>
</ul>

<h4>Trying WordPress MS</h4>

<p>If you want to try the multi-site mode, there are two things you should know:</p>

<ul>
<li>Setting up multi-site is not as easy as the rest of WordPress.</li>
<li>You should keep copies of <em>wp-config.php</em> and <em>.htaccess</em>, in case you change your mind later and want to return to the single-site mode.</li>
</ul>

<p>Setting up WordPress for multi-site use will probably become easier in the future.  In this release, however, the aim was different:  To merge the two code bases as well as possible, and to make the transition seamless—even invisible—for all, both WordPress users and WordPress MU users.  This aim was achieved.</p>

<p>DOCUMENTATION.
<a href="http://codex.wordpress.org/Create_A_Network" title="Documentation on setting up a multi-site WordPress at the WordPress Codex [codex.wordpress.org]">codex.wordpress.org/Create_a_Network</a></p>

<h3>Update centre</h3>

<p>The new update centre displays in one place everything for which there is an update, and lets you update everything—WordPress itself, plugins, and themes—from the same place.  It also lets you update themes in bulk, which was not possible before.  Notifications of available updates appear in a little bubble next to the menu item from which the updater is accessed:  <em>Dashboard&nbsp;›&nbsp;Updates</em>.</p>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-updater-1-r15050.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-updater-1-r15050-192x192.png" alt="WordPress 3.0: Update Centre, selecting updates" title="WordPress 3.0: Update Centre, selecting updates" width="192" height="192" /></a>
<a href="http://op111.net/wp-content/uploads/2010/06/wp30-updater-2-r15050.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-updater-2-r15050-192x144.png" alt="WordPress 3.0: Update Centre, done!" title="WordPress 3.0: Update Centre, done!" width="192" height="144" /></a>
<a href="http://op111.net/wp-content/uploads/2010/06/wp30-updater-3-r15050.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-updater-3-r15050-192x144.png" alt="WordPress 3.0: Plugins, bulk updating" title="WordPress 3.0: Plugins, bulk updating" width="192" height="144" /></a></p>

<p>The update centre is my favourite new user feature in WordPress 3.0.  It makes maintenance easier and it helps keep your website up to date and secure, all from a simple interface that does not betray the complexity of the underlying mechanism.  (A bulk updater that works well across all the different environments and setups in which WordPress runs is not a simple matter!)</p>

<h3>Custom post types improved and simplified</h3>

<p>Custom post types were already possible in WordPress but the functionality was basic.  In WordPress 3.0 they come with many improvements and they can have their own <abbr title="User Interface">UI</abbr> too!</p>

<p>What are <em>custom post types</em>?  Think of the WordPress Posts and Pages that you already know.  They are both post types, same in many ways and different in some—mainly in that Pages are arranged hierarchically, while Posts are arranged chronologically—and they exist by default in WordPress.  A custom post type is a post type that does not exist by default and that <em>you</em> create.</p>

<p>And why make a custom post type?</p>

<p>Say, for example, that you enjoy publishing recipes but it always nagged you that in WordPress your recipes had to be either Posts or Pages.  Now you can create your own post type, “Recipes”, to write about your recipes, and you can add to it exactly the set of features you want:  It can have its own <abbr title="User Interface">UI</abbr>, e.g. “Edit Recipe” instead of “Edit Post”, and “Add New Recipe” instead of “Add New Post”, it can have or not have features like Excerpts, Featured Images, Comments, etc., and it can also be associated with custom taxonomies.</p>

<h4>Custom taxonomies</h4>

<p>Like custom post types, custom taxonomies already existed but they are now improved.  One of the improvements is that they can be combined with custom post types.  So, continuing the above example, if you don’t like using Tags for your Recipes, you can make a new flat taxonomy, say “Ingredients”, and associate it with the post type “Recipes”.</p>

<p>Not excited by all that?  Don’t worry!  You probably don’t need so much custom.  Not everyone does.  In fact, I would say that most WordPress sites can be organized perfectly well with what we already had:  Posts, Pages, Categories and Tags.</p>

<p>Yet, custom post types and taxonomies open up new possibilities, and it would be interesting to see what applications entertaining minds find for them, especially as the functionality is refined and improved in the future.</p>

<p>FURTHER READING</p>

<ul>
<li><a href="http://ottopress.com/2010/wordpress-3-0-and-custom-post-types/" title="WordPress 3.0 and Custom Post Types, by Otto [ottopress.com]">WordPress 3.0 and Custom Post Types</a> is a level-headed explanation and assessment by Otto.</li>
</ul>

<p>PLUGINS FOR CUSTOM POST TYPES AND TAXONOMIES</p>

<ul>
<li><a href="http://wordpress.org/extend/plugins/custom-post-type-ui/" title="Custom Post Type UI plugin at WordPress Extend [wordpress.org]">Custom Post Type <abbr title="User Interface">UI</abbr></a>
makes it easy to create new post types and taxonomies.</li>
<li><a href="http://wordpress.org/extend/plugins/post-type-switcher/" title="Post Type Switcer plugin at WordPress Extend [wordpress.org]">Post Type Switcher</a>
lets you switch posts from one type to another.</li>
</ul>

<h3>New theme</h3>

<p>WordPress 3.0 has a new default theme named Twenty Ten (after the year in which it is introduced).</p>

<p>Twenty Ten is a simple theme with a clean and modern design and a number of interesting features, my favourite among which is the array of four widget areas above the footer.  In addition, and as is always the case with the default WordPress theme, it implements all the new features of this release;  most notably, custom background and header (see below) and custom menus (see below).</p>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-twentyten-headers-r15071.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-twentyten-headers-r15071-192x192.png" alt="WordPress 3.0: Twenty Ten theme, Headers" title="WordPress 3.0: Twenty Ten theme, Headers" width="192" height="192" /></a>
<a href="http://op111.net/wp-content/uploads/2010/06/wp30-twentyten-2010dev-r15071.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-twentyten-2010dev-r15071-192x144.png" alt="WordPress 3.0: Twenty Ten theme" title="WordPress 3.0: Twenty Ten theme" width="192" height="144" /></a></p>

<p>One thing I particularly like in Twenty Ten is the collection of header images it comes with.</p>

<p>One thing I do not like is its typography, which I find noisy.  (Too many combinations—unnecessarily many for such a clean design—of font family, font size, font style, font weight, and font colour).  That is easily fixed, however, even with a very basic child theme:  Unlike the previous default theme, Kubrick, Twenty Ten supports child themes well.</p>

<p>MORE.  <a href="http://ma.tt/2010/06/headers-of-twenty-ten/" title="The headers of Twenty Ten [ma.tt]">The story of the Twenty Ten header images</a> by Matt Mullenweg</p>

<p>Twenty Ten is the only theme bundled with WordPress 3.0, since both Classic and Default (Kubrick) were removed.  Both are now at WordPress Extend:</p>

<ul>
<li><a href="http://wordpress.org/extend/themes/classic" title="Classic theme at WordPress Extend [wordpress.org]">Classic</a></li>
<li><a href="http://wordpress.org/extend/themes/default" title="Default (Kubrick) theme at WordPress Extend [wordpress.org]">Default (Kubrick)</a></li>
</ul>

<p>NOTE.  When upgrading to 3.0 from an earlier version, Classic and Default are not removed or affected in any way!</p>

<h3>Custom menus</h3>

<p>The most anticipated of the many “custom” things in this release is probably the new menu creator.  It lets you create navigation menus exactly how you want them, and then assign them to predefined menu locations of your theme.</p>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-nav-menus-r15072.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-nav-menus-r15072-192x144.png" alt="WordPress 3.0: Menu creator" title="WordPress 3.0: Menu creator" width="192" height="144" /></a>
<a href="http://op111.net/wp-content/uploads/2010/06/wp30-nav-menus-result-r15072.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-nav-menus-result-r15072-192x144.png" alt="WordPress 3.0: Menu creator in action" title="WordPress 3.0: Menu creator in action" width="192" height="144" /></a></p>

<p>One thing to note about the custom menus is that they must be supported explicitly by your theme.  But you can use them even if your theme does not support them yet:  The new Custom Menu widget lets you add any of you custom menus to any of your theme’s sidebars.</p>

<p>Another thing to note is that the custom menus are not always a viable alternative to the methods by which menus were built up to now.  Why?  Because they are not dynamic.  For example, you cannot make an item whose subitems are all existing and future categories;  or add a page to the menu and specify that all its current and future subpages be added as subitems.</p>

<p>I imagine theme authors will find ways to deal with that, probably by offering a choice between the two menu systems.</p>

<p>ACCESSIBILITY NOTE. The menu creator is fully functional without JavaScript too.</p>

<p><abbr title="For developers">DEV</abbr></p>

<ul>
<li><a href="http://codex.wordpress.org/Function_Reference/wp_nav_menu" title="[codex.wordpress.org]">Documenation on wp_nav_menu() at the WordPress Codex</a></li>
<li><a href="http://justintadlock.com/archives/2010/06/01/goodbye-headaches-hello-menus" title="[justintadlock.com]">Goodbye, headaches. Hello, menus!</a> By Justin Tadlock</li>
</ul>

<h3>Custom header and custom background</h3>

<p>Two new APIs were introduced that make it easy for theme authors to offer options for custom header images and custom backgrounds.  If your theme supports this, you will see the menu items under <em>Appearance</em>.  We already saw the Custom Header screen in one of the Twenty Ten screenshots.  Here is the Custom Background screen:</p>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-custom-bg-r15152.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-custom-bg-r15152-192x144.png" alt="WordPress 3.0: Custom Background screen" title="WordPress 3.0: Custom Background screen" width="192" height="144" class="alignnone size-medium wp-image-843" /></a></p>

<p><em>The tiled image in the screenshot is from
<a href="http://patterns.ava7.com/" title="ava7 patterns /// Free seamless background patterns [patterns.ava7.com]">ava7 patterns</a>.</em></p>

<p><abbr title="For developers">DEV</abbr>.  Twenty Ten’s <a href="http://core.trac.wordpress.org/browser/trunk/wp-content/themes/twentyten/functions.php" title="[core.trac.wordpress.org]"><em>functions.php</em></a> is a good starting point to see how all this works.</p>

<h2>More new things</h2>

<h3>Selectable username and password during installation</h3>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-install-r15067.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-install-r15067-192x144.png" alt="WordPress 3.0: Selectable username and password in installation" title="WordPress 3.0: Selectable username and password in installation" width="192" height="144" /></a></p>

<p>Now the installation process lets you choose username and password for the administrator account.  That is, you no longer have to use “admin” or the password generated by WordPress.  (Of course, you can still use these if you prefer.)</p>

<p>TIP.  In earlier versions the admin account can be renamed with a plugin like <a href="http://wordpress.org/extend/plugins/admin-renamer-extended/" title="Admin Renamer Extended at WordPress Extend [wordpress.org]">Admin Renamer Extended</a>.</p>

<h3>Shortlinks</h3>

<p>WordPress 3.0 comes with a new function that themes can use to display a shortlink for the current URL.  By default, shortlinks are generated for Posts only (not for Pages or for anything else) and are of the form <em>http://example.com/?p=123</em>.  So, for example, the default shortlink for the page you are viewing is:</p>

<p><a href="http://op111.net/?p=76">http://op111.net/?p=76</a></p>

<p><em>op111.net uses the shortest possible permalink structure—/%post_id%—, so in this case the default shortlink happens to be longer than the long link,&nbsp;:-D but you get the idea.</em></p>

<p>Plugins can easily change the default form to anything they like.</p>

<p><abbr title="For developers">DEV</abbr>.  Shortlink functions and their filters are all in <a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/link-template.php" title="[core.trac.wordpress.org]">link-template.php</a>.  Look at the inline documentation of:</p>

<ul>
<li>the_shortlink()</li>
<li>wp_get_shortlink()</li>
<li>wp_shortlink_header()</li>
<li>wp_shortlink_wp_head()</li>
</ul>

<h3>Better security by default</h3>

<p>WordPress 2.6 introduced security keys, which help add a bit more security to an installation.  WordPress&nbsp;3.0 adds security keys by default when setting up the configuration file of a new installation:</p>

<p><a href="http://op111.net/wp-content/uploads/2010/06/wp30-config-setup-step-1-r15144.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-config-setup-step-1-r15144-192x144.png" alt="WordPress 3.0: Setting up wp-config.php, Step 1" title="WordPress 3.0: Setting up wp-config.php, Step 1" width="192" height="144" /></a>
<a href="http://op111.net/wp-content/uploads/2010/06/wp30-config-setup-step-2-r15144.png"><img src="http://op111.net/wp-content/uploads/2010/06/wp30-config-setup-step-2-r15144-192x144.png" alt="WordPress 3.0: Setting up wp-config.php, Step 2, keys and salts" title="WordPress 3.0: Setting up wp-config.php, Step 2, keys and salts" width="192" height="144" /></a></p>

<p>You can change these keys at any time, or add them if you don’t have them, by making new ones yourself or by visiting the Secret Keys Generator at WordPress.org:</p>

<p><a href="https://api.wordpress.org/secret-key/1.1/salt/">https://api.wordpress.org/secret-key/1.1/salt/</a></p>

<p>(Just copy the whole lot and paste it in your <em>config.php</em>.)</p>

<h2>Even more</h2>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12523">r12523</a>.
    Check PHP, MySQL versions in update response and notify if reqs are not met.
    See <a href="http://core.trac.wordpress.org/ticket/11562">#11562</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12815">r12815</a>.
    Make login form shake when incorrect info is entered.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13012">r13012</a>.
    Twenty Ten theme initial import.
    See <a href="http://core.trac.wordpress.org/ticket/9015">#9015</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13026">r13026</a>.
    Update keys and salts with random values from api.wordpress.org.
    See <a href="http://core.trac.wordpress.org/ticket/12159">#12159</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13034">r13034</a>.
    Introduce DISALLOW_FILE_EDIT for enabling/disabling theme/plugin editor.
    See <a href="http://core.trac.wordpress.org/ticket/11306">#11306</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13041">r13041</a>.
<a href="http://core.trac.wordpress.org/changeset/13574">r13574</a>.
    Custom background support. Background color selection.
    See <a href="http://core.trac.wordpress.org/ticket/12186">#12186</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13084">r13084</a>.
    Add setting for no. of comments to Recent Comments dashboard widget.
    See <a href="http://core.trac.wordpress.org/ticket/11891">#11891</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13134">r13134</a>.
    Selectable username/password in installation.
    See <a href="http://core.trac.wordpress.org/ticket/10396">#10396</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13168">r13168</a>.
<a href="http://core.trac.wordpress.org/changeset/13767">r13767</a>.
<a href="http://core.trac.wordpress.org/changeset/14237">r14237</a>.
    “Search Engines Blocked” mini-alert when Privacy is on.
    See <a href="http://core.trac.wordpress.org/ticket/12211">#12211</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13233">r13233</a>.
    Show must-use plugins and drop-ins in Plugins screen.
    See <a href="http://core.trac.wordpress.org/ticket/11861">#11861</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13257">r13257</a>.
<a href="http://core.trac.wordpress.org/changeset/14248">r14248</a>.
    Introduce custom menus. New menu <abbr title="User Interface">UI</abbr>.
    See <a href="http://core.trac.wordpress.org/ticket/11817">#11817</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12713">#12713</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13272">r13272</a>.
    Enable threaded comments by default.
    See <a href="http://core.trac.wordpress.org/ticket/11992">#11992</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13276">r13276</a>.
    Add support for non-tag taxonomies to Tag Cloud widget.
    See <a href="http://core.trac.wordpress.org/ticket/11612">#11612</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13403">r13403</a>.
    Header image selector.
    See <a href="http://core.trac.wordpress.org/ticket/12343">#12343</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13424">r13424</a>. <!--BUGFIX-->
    Reject numeric page slugs (they don’t work) and force suffix.
    See <a href="http://core.trac.wordpress.org/ticket/11917">#11917</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13470">r13470</a>.
    When deleting plugins, check for uninstall routines and warn of data deletion.
    See <a href="http://core.trac.wordpress.org/ticket/11850">#11850</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13516">r13516</a>.
    Better <em>readme.html</em>.
    See <a href="http://core.trac.wordpress.org/ticket/10835">#10835</a>.
    See it while it’s fresh:  <a href="http://op111.net/readme.html">http://op111.net/readme.html</a></li>
<li><a href="http://core.trac.wordpress.org/changeset/13529">r13529</a>.
    Move Upload folder settings to <em>Settings › Media</em>.
    See <a href="http://core.trac.wordpress.org/ticket/11687">#11687</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13541">r13541</a>.
    Display MIME type when file has no extension.
    See <a href="http://core.trac.wordpress.org/changeset/9924">#9924</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13573">r13573</a>.
    Add options to <em>Tools › Export</em>.
    See <a href="http://core.trac.wordpress.org/changeset/10317">#10317</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13587">r13587</a>.
<a href="http://core.trac.wordpress.org/changeset/13634">r13634</a>.
    Show Network menu only if WP_ALLOW_MULTISITE is true.
    See <a href="http://core.trac.wordpress.org/ticket/11644">#11644</a>.
    See <a href="http://core.trac.wordpress.org/ticket/11816">#11816</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13588">r13588</a>.
    Move <em>Tools › Upgrade</em> to <em>Dashboard › Updates</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12517">#12517</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13602">r13602</a>.
<a href="http://core.trac.wordpress.org/changeset/13686">r13686</a>.
    New <abbr title="User Interface">UI</abbr> for bulk plugin/theme upgrades.
    See <a href="http://core.trac.wordpress.org/ticket/11232">#11232</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12528">#12528</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13636">r13636</a>.
    Don’t paginate comments by default in <em>Settings › Discussion</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12562">#12562</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13744">r13744</a>.
    Remove defunct link update checker from core.
    See <a href="http://core.trac.wordpress.org/ticket/12437">#12437</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13745">r13745</a>.
    Remove empty <em>Options › Misc</em>.
    Redirect plugin options to <em>Options › General</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12437">#12437</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13750">r13750</a>.
    Change “Blog” to “Site” in Settings screens. (And in any other place in later revisions.)</li>
<li><a href="http://core.trac.wordpress.org/changeset/13824">r13824</a>.
<a href="http://core.trac.wordpress.org/changeset/13842">r13842</a>.
<a href="http://core.trac.wordpress.org/changeset/15127">r15127</a>.
    Lighter header/footer for gray color scheme.
    New logo for header.<br />
    See <a href="http://core.trac.wordpress.org/ticket/12586">#12586</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13833">r13833</a>.
    Remove “Turbo” link from admin header.
    See <a href="http://core.trac.wordpress.org/ticket/11301">#11301</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13879">r13879</a>.
    Remove Classic and Default themes.
    See <a href="http://core.trac.wordpress.org/ticket/10654">#10654</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13898">r13898</a>.
    Add link to <a href="http://codex.wordpress.org/Updating_WordPress" title="[codex.wordpress.org]">Updating WordPress</a> (Codex article).
    See <a href="http://core.trac.wordpress.org/ticket/11280">#11280</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13900">r13900</a>.
    Add Password Mismatch feedback to Password Strength Meter.
    See <a href="http://core.trac.wordpress.org/ticket/12576">#12576</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13932">r13932</a>.
    Fix out-of-order comments when nesting depth is reduced.
    See <a href="http://core.trac.wordpress.org/ticket/8841">#8841</a>.
    Displays child comments on same level as parent when <em>max_depth</em> is reached.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13942">r13942</a>.
    Better default excerpt. Remove multiple white spaces and split safely on UTF-8 strings.
    See <a href="http://core.trac.wordpress.org/ticket/10376">#10376</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13963">r13963</a>.
    Link to new <a href="http://codex.wordpress.org/Child_Themes" title="[codex.wordpress.org]">Child Themes</a> Codex article from the Updater.
    See <a href="http://core.trac.wordpress.org/ticket/12787">#12787</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13981">r13981</a>.
    Remove Gears from <abbr title="User Interface">UI</abbr>.
    See <a href="http://core.trac.wordpress.org/ticket/11301">#11301</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14010">r14010</a>.
    Update stats provided to api.wordpress.org.
    See <a href="http://core.trac.wordpress.org/ticket/12672">#12672</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14088">r14088</a>.
    Introduce DISALLOW_FILE_MOD for disabling all operations that modify core, theme, or plugin files.
    See <a href="http://core.trac.wordpress.org/ticket/13000">#13000</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14280">r14280</a>.
    Keep “Remember me” checked when user password is incorrect.
    See <a href="http://core.trac.wordpress.org/ticket/13165">#13165</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14324">r14324</a>.
    Change “WordPress Development Blog” to “WordPress Blog” in dashboard widget.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/15027">r15027</a>.
    Use “WordPress Blog” (instead of “Development Blog”) in initial blogroll.
    See <a href="http://core.trac.wordpress.org/ticket/14324">#14324</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/14487">r14487</a>.
    Improve cross-DST future post publishing behaviour to try and publish at correct time if we have PHP5 timezone support available to help.
    See <a href="http://core.trac.wordpress.org/ticket/9285">#9285</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14491">r14491</a>.
    Bump <em>memory_limit</em> for admins in wp-admin. Should help in imports, upgrades, uploads, etc.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14764">r14764</a>.
    Move importers to WordPress Extend.
    See <a href="http://core.trac.wordpress.org/ticket/13307">#13307</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14836">r14836</a>.
    Contextual Help for Dashboard (and for all admin screens in subsequent revisions). 
    See <a href="http://core.trac.wordpress.org/ticket/13467">#13467</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15032">r15032</a>.
    Check capabilities properly when processing bulk edited posts.
    Hide checkbox on Page edit screen for users without capabilities.
    (Also in 2.9.x.)</li>
</ul>

<h2>Highlights for developers</h2>

<p>The part below this point is for developers, those who like getting their hands dirty, and, of course, the curious.</p>

<p class="insert">
Multi-site things are mostly omitted here, for two reasons:  First, while all are new to WordPress, most existed already in WordPress MU.  Second, I know almost nothing about the multi-site functionality.
</p>

<h3>Compatibility</h3>

<p>Backwards compatibility in version 3.0 is in general very good.  Areas that may need attention are highlighted in a number of compatibility posts at the WordPress Development Updates blog:</p>

<p><a href="http://wpdevel.wordpress.com/tag/30compat/" title="Posts on version 3.0 and plugin/theme compatibility at the WordPress Development Updates blog [wpdevel.wordpress.com]">wpdevel.wordpress.com/tag/30compat</a></p>

<h3>WP_DEBUG and deprecated functions</h3>

<p>WP_DEBUG was improved.  It now informs of the version as of which a function is deprecated, and it also informs about deprecated arguments.  Its definition is included for the first time by default in <em>wp-config.php</em> (set to <em>false</em>, of course), along with the recommendation to enable it when developing.</p>

<p>Why enable WP_DEBUG?  Three reasons:</p>

<ol>
<li>It helps make code better and future-proof</li>
<li>It helps make code faster:  Code without errors is faster than code with errors</li>
<li>It helps fellow developers (who won’t have to sift through messages generated by our code when they enable WP_DEBUG to debug their code)</li>
</ol>

<p>Andrew Nacin has more: <a href="http://www.andrewnacin.com/2010/03/22/deprecated-functions-and-wp_debug/" title="[andrewnacin.com]">Deprecated functions and WP_DEBUG</a></p>

<h3>&#42;_option() and &#42;_transient() functions now expect unslashed data</h3>

<p>See the explanation by Ryan Boren, and the relevant ticket:</p>

<ul>
<li><a href="http://wpdevel.wordpress.com/2010/04/19/this-is-a-reminder-that-as-per-ticket-12" title="[wpdevel.wordpress.com]">Explanation by Ryan Boren at wpdevel.wordpress.com</a></li>
<li><a href="http://core.trac.wordpress.org/ticket/12416" title="[core.trac.wordpress.org]">#12416: &#42;_option(), &#42;_transient() and &#42;_meta() functions should all expect unslashed data</a> </li>
</ul>

<h3>comment_form()</h3>

<p>I believe this new template function will become a favourite of all WordPress developers, theme authors and plugin authors.  Just use:</p>

<pre><code>comment_form();
</code></pre>

<p>&hellip; and you get a comment form that is complete, fully filterable and fully actionable.</p>

<p>DOCUMENTATION.
<a href="http://codex.wordpress.org/Template_Tags/comment_form" title="Documentation on comment_form() at the WordPress Codex [codex.wordpress.org]">codex.wordpress.org/Template_Tags/comment_form</a></p>

<h3>get_template_part()</h3>

<p>get_template part() is a new template function that helps avoid repetitive code in themes and makes it easier to modify themes via child themes.  Again, usage is simple:</p>

<pre><code>get_template_part('nav');
</code></pre>

<p>This will bring <em>nav.php</em> in, in the same way that get_header() brings in <em>header.php</em> and get_footer() brings in <em>footer.php</em>.</p>

<p>Of course, the above was already possible with PHP constructs like <em>include</em> and <em>require</em>.  What get_template_part() adds to that is granularity and awareness of child themes.</p>

<p>First, it can take a second parameter. E.g.:</p>

<pre><code>get_template_part('nav', 'main');
</code></pre>

<p>Here it will first look for <em>nav-main.php</em> and include it if it exists.  Otherwise it will include <em>nav.php</em>.</p>

<p>Second, if the active theme is a child theme, get_template_part() looks in the child’s directory first.  So, for example, you can add a <em>nav.php</em> template to your child theme, and it will be used instead of the <em>nav.php</em> of the parent.</p>

<p>DOCUMENTATION.
<a href="http://codex.wordpress.org/Function_Reference/get_template_part" title="Documentation on get_template_part() at the WordPress Codex [codex.wordpress.org]">codex.wordpress.org/Function_Reference/get_template_part</a></p>

<h3>Hyperminimal themes deprecated</h3>

<p>These are themes that rely on the default theme for any of <em>header.php</em>, <em>footer.php</em>, <em>sidebar.php</em>, <em>comments.php</em>, <em>comments-popup.php</em>.  This method is now deprecated and may stop working in the future:</p>

<p><a href="http://westi.wordpress.com/2010/05/03/themes-and-wordpress-3-0-some-important-changes/" title="[westi.wordpress.com]">Themes and WordPress 3.0: Some important changes</a> by westi (Peter Westwood)</p>

<h3>Improved inline documentation</h3>

<p>Over the last versions inline documentation has become more or less a requirement for any function, class and file added to WordPress.
In addition, supplying documentation where it’s missing, and improving existing documentation, is an ongoing project.
So, inline documentation gets better and more useful with every new release.  A small example of this ongoing effort:</p>

<p><a href="http://core.trac.wordpress.org/changeset/12761" title="[core.trac.wordpress.org]">r12761: phpDoc for the metadata <abbr title="Application Programming Interface">API</abbr></a></p>

<p>The official web interface of the inline documentation was also improved:
<a href="http://phpdoc.wordpress.org/trunk/" title="Web interface of the Wordpress inline documenation [phpdoc.wordpress.org]">phpdoc.wordpress.org/trunk</a></p>

<h2>More for developers</h2>

<h3>3rd-party libraries</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12491">r12491</a>.
    JSON lib updated. Use encodeUnsafe in our JSON wrapper.
    See <a href="http://core.trac.wordpress.org/ticket/11537">#11537</a> for trunk.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12521">r12521</a>.
    phpass 0.2.
    See <a href="http://core.trac.wordpress.org/ticket/10727">#10727</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12522">r12522</a>.
    SWFobject JS 2.2.
    See <a href="http://core.trac.wordpress.org/ticket/11109">#11109</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12557">r12557</a>.
    Prototype.js 1.6.1.
    Scriptaculous.js 1.8.3.
    See <a href="http://core.trac.wordpress.org/ticket/11041">#11041</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12822">r12822</a>.
    MagpieRSS deprecated. Use SimplePie (<em>class-simplepie.php</em>).
    See <a href="http://core.trac.wordpress.org/ticket/11982">#11982</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13201">r13201</a>.
<a href="http://core.trac.wordpress.org/changeset/15243">r15243</a>.
    jQuery <abbr title="User Interface">UI</abbr> 1.7.3.
    See <a href="http://core.trac.wordpress.org/ticket/11595">#11595</a>.
    See <a href="http://core.trac.wordpress.org/ticket/13868">#13868</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13310">r13310</a>.
    jQuery 1.4.2.
    See <a href="http://core.trac.wordpress.org/ticket/12305">#12305</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14052">r14052</a>.
    Snoopy deprecated. Use WP_Http (<em>http.php</em>, <em>class-http.php</em>).
    See <a href="http://core.trac.wordpress.org/ticket/12882">#12882</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14718">r14718</a>.
    <em>autocomplete.js</em>, CodePress removed.
    See <a href="http://core.trac.wordpress.org/ticket/13283">#13283</a>.
    See <a href="http://core.trac.wordpress.org/ticket/13307">#13307</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14728">r14728</a>.
    <em>interface.js</em> removed.
    See <a href="http://core.trac.wordpress.org/ticket/13442">#13442</a>.</li>
</ul>

<h3>New constants</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/13034">r13034</a>.
    DISALLOW_FILE_EDIT. Banishes theme/plugin editor.
    (By removing the <em>edit_files</em>, <em>edit_plugins</em> and <em>edit_themes</em> capabilities from all roles.) 
    See <a href="http://core.trac.wordpress.org/ticket/11306">#11306</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13737">r13737</a>.
<a href="http://core.trac.wordpress.org/changeset/14485">r14485</a>.
    WP_DEFAULT_THEME.
    See <a href="http://core.trac.wordpress.org/ticket/12846">#12846</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13587">r13587</a>.
<a href="http://core.trac.wordpress.org/changeset/13634">r13634</a>.
    WP_ALLOW_MULTISITE. To display <em>Tools › Network</em> menu.
    See <a href="http://core.trac.wordpress.org/ticket/11644">#11644</a>.
    See <a href="http://core.trac.wordpress.org/ticket/11816">#11816</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14088">r14088</a>.
    DISALLOW_FILE_MOD. Disables all operations that modify core/theme/plugin files.
    See <a href="http://core.trac.wordpress.org/ticket/13000">#13000</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14244">r14244</a>.
    DISALLOW_UNFILTERED_HTML.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15225">r15225</a>.
    ALLOW_SUBDIRECTORY_INSTALL.
    See <a href="http://core.trac.wordpress.org/ticket/13844">#13844</a>.
    (For conversion to multi-site.)</li>
</ul>

<h3>New action and filter hooks</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12790">r12790</a>.
    wp_die_handler. AKA “customizable death”. Filter for wp_die(). 
    See <a href="http://core.trac.wordpress.org/ticket/11892">#11892</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13037">r13037</a>.
<a href="http://core.trac.wordpress.org/changeset/13037">r14603</a>.
    posts_search. Filter. Lets plugins contextually add/remove/modify search section of database query.
    See <a href="http://core.trac.wordpress.org/ticket/10667">#10667</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13073">r13073</a>.
    activate_wp_head. Action in <em>wp-activate.php</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12166">#12166</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13156">r13156</a>.
<a href="http://core.trac.wordpress.org/changeset/13214">r13214</a>.
    after_setup_theme. Action. Runs after parent/child themes are included.
    See <a href="http://core.trac.wordpress.org/ticket/12231">#12231</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13231">r13231</a>.
    get_avatar_comment_types. Filter for get_avatar(), to allow avatars for custom comment types.
    See <a href="http://core.trac.wordpress.org/ticket/11880">#11880</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13252">r13252</a>.
    template_include. Filter to modify template path before it is included.
    See <a href="http://core.trac.wordpress.org/ticket/11242">#11242</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12739">#12739</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13305">r13305</a>.
    show_advanced_plugins. Filter to hide mu-plugins/drop-ins tabs in Plugins screen.
    See <a href="http://core.trac.wordpress.org/ticket/11861">#11861</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13330">r13330</a>.
    plugin_locale, theme_locale. Filters for load_&#42;_textdomain() functions.
    See <a href="http://core.trac.wordpress.org/ticket/9686">#9686</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13523">r13523</a>.
    tables_to_repair. Filter.
    See <a href="http://core.trac.wordpress.org/ticket/11707">#11707</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13430">r13430</a>.
    pre_insert_term. Filter for wp_insert_term().
    See <a href="http://core.trac.wordpress.org/ticket/10943">#10943</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13434">r13434</a>.
    comment_duplicate_trigger. Action. Runs when duplicate comment is detected.
    See <a href="http://core.trac.wordpress.org/ticket/12188">#12188</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13549">r13549</a>.
    pre_post_link. Filter for get_permalink() before token replacement occurs.
    See <a href="http://core.trac.wordpress.org/ticket/12240">#12240</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13478">r13478</a>.
    paginate_links. Filter for links in paginate_links().
    See <a href="http://core.trac.wordpress.org/ticket/10826">#10826</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13479">r13479</a>.
    wp_link_pages_args. Filter for wp_link_pages().
    See <a href="http://core.trac.wordpress.org/ticket/12158">#12158</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13481">r13481</a>.
    wp_loaded. Action. Runs once WP init has finished.
    See <a href="http://core.trac.wordpress.org/ticket/12400">#12400</a>.
    <!--
        phpDoc
        This hook is fired once WP, all plugins, and the theme are fully loaded and instantiated.
        @link http://codex.wordpress.org/AJAX_in_Plugins
        ---></li>
<li><a href="http://core.trac.wordpress.org/changeset/13525">r13525</a>.
    widgets_admin_page. Action at top of <em>widgets.php</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12190">#12190</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13629">r13629</a>.
    before_signup_form, after_signup_form. Actions.
    See <a href="http://core.trac.wordpress.org/ticket/12199">#12199</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13867">r13867</a>.
    right_now_content_table_end, right_now_discussion_table_end. Actions.
    See <a href="http://core.trac.wordpress.org/ticket/12202">#12202</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13891">r13891</a>.
    robots_txt. Filter for <em>robots.txt</em> output.
    See <a href="http://core.trac.wordpress.org/ticket/11918">#11918</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14067">r14067</a>.
    comment_id_fields. Filter for get_comment_id_fields()
    See <a href="http://core.trac.wordpress.org/ticket/12893">#12893</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14382">r14382</a>.
    Actions for the Widgets <abbr title="Application Programming Interface">API</abbr>.
    See <a href="http://core.trac.wordpress.org/ticket/12546">#12546</a>.

<ul>
<li>register_sidebar</li>
<li>wp_register_sidebar_widget</li>
<li>wp_unregister_sidebar_widget</li>
<li>dynamic_sidebar</li>
<li>the_widget</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/14814">r14814</a>.
    post_updated. Action. Runs when a post is updated.
    See <a href="http://core.trac.wordpress.org/ticket/12473">#12473</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15174">r14996</a>.
    capital_P_dangit. Default filter for the_content(), the_title(), comment_text().
    (An addition that will have to be removed or modified, because it causes problems.)</li>
</ul>

<h3>New functions</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12487">r12487</a>. <!--CONDITIONAL-->
    is_comment_feed().
    See <a href="http://core.trac.wordpress.org/ticket/10827">#10827</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12598">r12598</a>.
    home_url(). Returns <em>home</em> option in appropriate protocol, HTTP or HTTPS. 
    See <a href="http://core.trac.wordpress.org/ticket/9008">#9008</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12609">r12609</a>. <!--CONDITIONAL-->
    is_multisite().
    See <a href="http://core.trac.wordpress.org/ticket/11644">#11644</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12611">r12611</a>. <!--CONDITIONAL-->
    is_super_admin().
    See <a href="http://core.trac.wordpress.org/ticket/11644">#11644</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12659">r12659</a>.
    get_intermediate_image_sizes().
    See <a href="http://core.trac.wordpress.org/ticket/10263">#10263</a>.
    For when adding/deleting attachments.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12696">r12696</a>.
    wp_login_form(). Emits complete login form for use in templates.
    See <a href="http://core.trac.wordpress.org/ticket/11172">#11172</a>.
    <a href="http://codex.wordpress.org/Function_Reference/wp_login_form" title="Documentation on wp_login_form() at the WordPress Codex [codex.wordpress.org]">CODEX</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12714">r12714</a>. <!--CONDITIONAL-->
    is_main_site().
    See <a href="http://core.trac.wordpress.org/ticket/11644">#11644</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12719">r12719</a>.
    register_post_status().
    See <a href="http://core.trac.wordpress.org/ticket/9674">#9674</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12796">r12796</a>.
    WP_User::for_blog(), current_user_can_for_blog().
    See <a href="http://core.trac.wordpress.org/ticket/11781">#11781</a>.
    To avoid calls to WP_User::_init_caps().</li>
<li><a href="http://core.trac.wordpress.org/changeset/12810">r12810</a>.
    comment_form(). Emits complete comment form for use in templates.
    See <a href="http://core.trac.wordpress.org/ticket/10910">#10910</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12917">r12917</a>.
    get_the_date().
    See <a href="http://core.trac.wordpress.org/ticket/11264">#11264</a>.
    Defaults to <em>date_format</em> option.
    <a href="http://codex.wordpress.org/Template_Tags/get_the_date" title="Documentation on get_the_date() at the WordPress Codex [codex.wordpress.org]">CODEX</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12923">r12923</a>.
<a href="http://core.trac.wordpress.org/changeset/13023">r13023</a>.
    get_post_permalink().
    See <a href="http://core.trac.wordpress.org/ticket/9674">#9674</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12172">#12172</a>.
    Returns permalink for post of custom type.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12946">r12946</a>.
<a href="http://core.trac.wordpress.org/changeset/14417">r14417</a>.
    get_available_languages().
    See <a href="http://core.trac.wordpress.org/ticket/11774">#11774</a>.
    See <a href="http://core.trac.wordpress.org/ticket/13023">#13023</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13304">r13004</a>. <!--CONDITIONAL-->
    is_textdomain_loaded().
    See <a href="http://core.trac.wordpress.org/ticket/10527">#10527</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13082">r13082</a>.
    add_plugins_page(). Adds submenu to Plugins page.
    See <a href="http://core.trac.wordpress.org/ticket/11377">#11377</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13146">r13146</a>.
<a href="http://core.trac.wordpress.org/changeset/13816">r13816</a>.
<a href="http://core.trac.wordpress.org/changeset/14047">r14047</a>.
    get_template_part(). For themes to bring in template parts.
    See <a href="http://core.trac.wordpress.org/ticket/12371">#12371</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12248">#12248</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12941">#12941</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13177">r13177</a>.
    add_settings_error(). In the Settings <abbr title="Application Programming Interface">API</abbr>, to register messages for users.
    See <a href="http://core.trac.wordpress.org/ticket/11474">#11474</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13330">r13229</a>.
    wpdb::tables(). To fetch table names on global/blog scope.
    See <a href="http://core.trac.wordpress.org/ticket/11614">#11614</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12083">#12083</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13330">r13330</a>.
    unload_textdomain().
    See <a href="http://core.trac.wordpress.org/ticket/9686">#9686</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13358">r13358</a>.
    wp_kses_named_entities(). Whitelists valid named entity references.
    See <a href="http://core.trac.wordpress.org/ticket/12284">#12284</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13403">r13403</a>.
<a href="http://core.trac.wordpress.org/changeset/13928">r13928</a>.
    register_theme_headers(), unregister_theme_headers().
    See <a href="http://core.trac.wordpress.org/ticket/12343">#12343</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13409">r13409</a>.
<a href="http://core.trac.wordpress.org/changeset/13806">r13806</a>.
    send_nosniff_header(). Turns off content sniffing in supporting browsers.
    See <a href="http://core.trac.wordpress.org/ticket/10671">#10671</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12683">#12683</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13413">r13413</a>.
<a href="http://core.trac.wordpress.org/changeset/13526">r13526</a>.
<a href="http://core.trac.wordpress.org/changeset/14639">r14639</a>.
<a href="http://core.trac.wordpress.org/changeset/14641">r14641</a>.
    Functions for returning various values to filters:

<ul>
<li>&#95;&#95;return_false()</li>
<li>&#95;&#95;return_true()</li>
<li>&#95;&#95;return_zero()</li>
<li>&#95;&#95;return_empty_array()</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/13438">r13438</a>.
    add_permastruct(), flush_rewrite_rules().  Wrappers for the WP_Rewrite methods.
    See <a href="http://core.trac.wordpress.org/ticket/10912">#10912</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13441">r13441</a>.
    add_editor_style(). Registers stylesheet for visual editor.
    See <a href="http://core.trac.wordpress.org/ticket/11512">#11512</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13454">r13454</a>.
    wpdb::replace(). For replacing queries.
    See <a href="http://core.trac.wordpress.org/ticket/10864">#10864</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13483">r13483</a>.
    get_search_link().
    See <a href="http://core.trac.wordpress.org/ticket/10552">#10552</a>.
    Has permastruct support. E.g.: <em>http://example.com/search/foo</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/13557">r13557</a>.
    the_feed_link().
    See <a href="http://core.trac.wordpress.org/ticket/11794">#11794</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13576">r13576</a>.
    cache_users().
    See <a href="http://core.trac.wordpress.org/ticket/11914">#11914</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13608">r13608</a>.
    get_taxonomies().
    See <a href="http://core.trac.wordpress.org/ticket/12516">#12516</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13635">r13635</a>.
<a href="http://core.trac.wordpress.org/changeset/13683">r13683</a>.
    wp_get_shortlink(), the_shortlink(), wp_shortlink_wp_head(), wp_shortlink_header().
    See <a href="http://core.trac.wordpress.org/ticket/10640">#10640</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13658">r13658</a>.
    disabled(). Form helper, companion for selected() and checked().
    See <a href="http://core.trac.wordpress.org/ticket/12581">#12581</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13718">r13718</a>.
    sanitize_key(). Sanitizes string keys.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13756">r13756</a>.
    apply_filters_ref_array().
    See <a href="http://core.trac.wordpress.org/ticket/9886">#9886</a>.
    Like apply_filters(), but args passed are in array.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13819">r13819</a>.
    get_index_template(). So that child themes can override a parent’s <em>index.php</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12635">#12635</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13877">r13877</a>.
    remove_theme_support().</li>
<li><a href="http://core.trac.wordpress.org/changeset/14028">r14028</a>.
    get_the_author_link().
    See <a href="http://core.trac.wordpress.org/ticket/12892">#12892</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14053">r14053</a>. <!--CONDITIONAL-->
    is_post_type_hierarchical().
    See <a href="http://core.trac.wordpress.org/ticket/12950">#12950</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14067">r14067</a>.
    get_comment_id_fields(). Getter for comment_id_fields().
<!--    Introduce a filter on the output to add extra fields. --->
    See <a href="http://core.trac.wordpress.org/ticket/12893">#12893</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14360">r14360</a>. <!--CONDITIONAL-->
    is_rtl().
    See <a href="http://core.trac.wordpress.org/ticket/13206">#13206</a>.
    Defined when locale is loaded, cannot be used too early.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14409">r14409</a>. <!--CONDITIONAL-->
    is_child_theme().
    See <a href="http://core.trac.wordpress.org/ticket/12998">#12998</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14607">r14607</a>.
    wp_reset_postdata().
    Restores <em>post</em> global to current post in main query after looping through a separate query.
    See <a href="http://core.trac.wordpress.org/ticket/12320">#12320</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14647">r14647</a>.
    _ex(). Combines _e() and _x(): Translate with context, then echo.
    See <a href="http://core.trac.wordpress.org/ticket/13395">#13395</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14649">r14649</a>.
    wp_check_filetype_and_ext(). To handle MIME/ext image comparisons/corrections for upload/sideload.
    See <a href="http://core.trac.wordpress.org/ticket/11946">#11946</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14711">r14711</a>.
    get_term_feed_link(). Returns feed link for taxomomy term.
    See <a href="http://core.trac.wordpress.org/ticket/13058">#13058</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14760">r14760</a>.
    WP_Importer class.
    See <a href="http://core.trac.wordpress.org/ticket/13034">#13034</a>.
    <a href="http://phpdoc.wordpress.org/trunk/WordPress/WP_Importer.html" title="Inline documentation for the WP_Importer class [phpdoc.wordpress.org]">phpDoc</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14950">r14950</a>.
    comments_link_feed(). Echoes link to comments of current post properly escaped for XML.
    See <a href="http://core.trac.wordpress.org/ticket/13555">#13555</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15174">r15174</a>.
    get_current_user_id().
    See <a href="http://core.trac.wordpress.org/ticket/13785">#13785</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15193">r15193</a>.
    register_nav_menu(), register_nav_menus().  For themes to register one or more menus.
    See <a href="http://core.trac.wordpress.org/ticket/13825">#13825</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15203">r15203</a>.
    menu_page_url(). For plugin authors, to get URLs of pages they have added.
    See <a href="http://core.trac.wordpress.org/ticket/13829">#13829</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15220">r15220</a>.
<a href="http://core.trac.wordpress.org/changeset/14158">r14158</a>.
    post_type_exists(). Checks if post type is registered.
    See <a href="http://core.trac.wordpress.org/ticket/13747">#13747</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12588">#12588</a>.</li>
</ul>

<h3>Improved and modified functions</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12514">r12514</a>.
    the_modified_date(). New <em>before/after/echo</em> args.
    See <a href="http://core.trac.wordpress.org/ticket/11255">#11255</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12518">r12518</a>.
    get_comments(). More <em>orderby</em> and <em>select</em> options.
    See <a href="http://core.trac.wordpress.org/ticket/10668">#10668</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12558">r12558</a>.
    WP_Dependencies. New <em>null</em> arg to disable script/CSS version query strings.
    See <a href="http://core.trac.wordpress.org/ticket/11315">#11315</a>.
    Useful, e.g., when scripts are loaded from an external CDN.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12658">r12658</a>.
    get_terms(). Now <em>include</em> and <em>exclude</em> args can be arrays.
    See <a href="http://core.trac.wordpress.org/ticket/11076">#11076</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12667">r12667</a>.
    wpdb class. Compatibility with WP, MU &amp; MS.
    See <a href="http://core.trac.wordpress.org/ticket/11644">#11644</a>.
    <a href="http://core.trac.wordpress.org/log/trunk/wp-includes/wp-db.php" title="Full changelog for the wp-db.php file [core.trac.wordpress.org]">wp-db.php changelog</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12719">r12719</a>.
    register_post_type().
    See <a href="http://core.trac.wordpress.org/ticket/9674">#9674</a>.
    <a href="http://codex.wordpress.org/Function_Reference/register_post_type" title="Documentation on register_post_type() at the WordPress Codex [codex.wordpress.org]">CODEX</a></li>
<li><a href="http://core.trac.wordpress.org/changeset/13048">r13048</a>.
    get_search_form(), wp_loginout(), wp_register(), get_calendar().
    New <em>echo</em> arg.
    See <a href="http://core.trac.wordpress.org/ticket/11842">#11842</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13350">r13350</a>.
    post_class(). New <em>.type-{post_type}</em> class.
    See <a href="http://core.trac.wordpress.org/ticket/11609">#11609</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13417">r13417</a>.
    add_theme_support(). New <em>custom-background</em>, <em>custom-header</em>, <em>nav-menus</em> params.
    See <a href="http://core.trac.wordpress.org/ticket/11817">#11817</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13467">r13467</a>.
    single_(post|cat|tag|month)_title(). Filters standardized on strip_tags() and wptexturize().
    See <a href="http://core.trac.wordpress.org/ticket/10900">#10900</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13483">r13483</a>.
    get_search_feed_link(), get_search_comments_feed_link().
    Updated to use get_search_link() (new, with permastruct support).
    See <a href="http://core.trac.wordpress.org/ticket/10552">#10552</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13486">r13486</a>.
    is_tax(). New <em>term</em> parameter.
    See <a href="http://core.trac.wordpress.org/ticket/11904">#11904</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13673">r13673</a>.
    &#42;_option(), &#42;_transient(). Now consistently expect unslashed data.
    See <a href="http://core.trac.wordpress.org/ticket/12416">#12416</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13695">r13695</a>.
    get_pages(). Now supports custom hierarchical post types.
    See <a href="http://core.trac.wordpress.org/ticket/12600">#12600</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13773">r13773</a>.
    add_endpoint(). Now accepts custom Endpoint Mask.
    See <a href="http://core.trac.wordpress.org/ticket/12605">#12605</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13854">r13854</a>.
    wp_list_categories(). Now aware of custom taxonomies.
    See <a href="http://core.trac.wordpress.org/ticket/11838">#11838</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13952">r13952</a>.
    wp_unique_filename(). Now methods too can be a callback.
    See <a href="http://core.trac.wordpress.org/ticket/12824">#12824</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13978">r13978</a>.
    get_search_query(). Now escapes by default, like the_search_query().
    See <a href="http://core.trac.wordpress.org/ticket/12780">#12780</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13982">r13982</a>.
    wpautop(). New block-level HTML5 elements.
    See <a href="http://core.trac.wordpress.org/ticket/12335">#12335</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13995">r13995</a>.
    wp_delete_comment(). New <em>force_delete</em> arg.
    See <a href="http://core.trac.wordpress.org/ticket/12766">#12766</a>.
    See <a href="http://core.trac.wordpress.org/ticket/11470">#11470</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14095">r14095</a>.
    wptexturize(). Improved for single quotes.
    See <a href="http://core.trac.wordpress.org/ticket/4539">#4539</a>.
    (Abbreviated years followed by punctuation or markup.)</li>
<li><a href="http://core.trac.wordpress.org/changeset/14131">r14131</a>.
    wp_list_bookmarks(). Now <em>orberby</em> accepts comma-delimited list of fields.
    See <a href="http://core.trac.wordpress.org/ticket/12421">#12421</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14133">r14133</a>.
    get_posts(), get_pages(). Now <em>include/exclude</em> args can be arrays.
    See <a href="http://core.trac.wordpress.org/ticket/11076">#11076</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14766">r14766</a>.
    stripslashes_deep(). Attempt to make object-safe.
    See <a href="http://core.trac.wordpress.org/ticket/12860">#12860</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14887">r14887</a>.
    is_singular(). Now understands custom post-types.
    Usage: <em>is_singular('book')</em> or <em>is_singular(array('newspapers', 'books'))</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12588">#12588</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15002">r15002</a>.
<a href="http://core.trac.wordpress.org/changeset/15003">r15003</a>.
    wp_constrain_dimensions(). Tweaks for better fits and consistency.
    See <a href="http://core.trac.wordpress.org/ticket/13556">#13556</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15107">r15107</a>.
    wp_list_categories(). Now filter accepts <em>args</em>.
    See <a href="http://core.trac.wordpress.org/ticket/13682">#13682</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15188">r15188</a>.
    get_page(). Now alias of get_post().
    See <a href="http://core.trac.wordpress.org/ticket/13753">#13753</a>.</li>
</ul>

<h3>Deprecated functions and their replacements</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12526">r12526</a>.
    Set version when function was deprecated for all deprecated functions.
    See <a href="http://core.trac.wordpress.org/ticket/7493">#7493</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12536">r12536</a>.
    Introduce _deprecated_argument() for marking args as deprecated,
    so that with WP_DEBUG enabled developers can see they need to review and update their code.
    See <a href="http://core.trac.wordpress.org/ticket/11386">#11386</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13185">r13185</a>.
    Add WP_DEBUG define to wp-config-sample.php and suggest plugin/theme developers use it.
    See <a href="http://core.trac.wordpress.org/ticket/12236">#12236</a>.</li>
</ul>

<p>Following is a not complete list of functions added to the deprecated group in WordPress v3.0:</p>

<p><em>You don’t need to memorize all that, of course!  Simply enable WP_DEBUG, and it will tell you if there is anything you should not be using.</em></p>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12459">r12459</a>.
    _nc(). Use _nx() for specifying contexts.
    See <a href="http://core.trac.wordpress.org/ticket/11404">#11404</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12585">r12585</a>. <!--MOVE!-->
    Deprecate user levels.
    See <a href="http://core.trac.wordpress.org/ticket/10805">#10805</a>.
    Use <a href="http://codex.wordpress.org/Roles_and_Capabilities" title="Documentation on Roles and Capabilities at the WordPress Codex [codex.wordpress.org]&quot;">Roles and Capabilities</a> instead.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12624">r12624</a>.
    generate_random_password(). Use wp_generate_password().
    See <a href="http://core.trac.wordpress.org/ticket/11746">#11746</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13093">r13093</a>.
    Move deprecated functions to <em>deprecated.php</em>.
    See <a href="http://core.trac.wordpress.org/ticket/11388">#11388</a>.

<ul>
<li>get_the_attachment_link(). Use wp_get_attachment_link().</li>
<li>get_attachment_icon_src(). Use wp_get_attachment_image_src().</li>
<li>get_attachment_icon(), get_attachment_innerHTML(). Use wp_get_attachment_image().</li>
<li>get_link(). Use get_bookmark().</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/13096">r13096</a>.
    Deprecate old L10n and sanitization APIs.
    See <a href="http://core.trac.wordpress.org/ticket/11388">#11388</a>.

<ul>
<li>ngettext(). Use _n().</li>
<li>ngettext_noop(). Use _n_noop().</li>
<li>translate_with_context(). Use _x().</li>
<li>sanitize_url(). Use esc_url_raw().</li>
<li>js_escape(). Use esc_js().</li>
<li>wp_specialchars(). Use esc_html().</li>
<li>attribute_escape(). Use esc_attr().</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/13299">r13299</a>.
    clean_url(). Use esc_url().
    See <a href="http://core.trac.wordpress.org/ticket/12309">#12309</a></li>
<li><a href="http://core.trac.wordpress.org/changeset/13300">r13300</a>.
    &#42;_usermeta() family. Use new &#42;_user_meta() functions.
    See <a href="http://core.trac.wordpress.org/ticket/10837">#10837</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13398">r13398</a>.
    automatic_feed_links(). Use <em>add_theme_support('automatic-feed-links')</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12364">#12364</a>.

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/13399">r13399</a>.
    Restore back compat in automatic_feed_links() to deregister the extra feeds.
    See <a href="http://core.trac.wordpress.org/ticket/12364">#12364</a>.</li>
</ul></li>
<li><a href="http://core.trac.wordpress.org/changeset/13464">r13464</a>.
    get_profile(). Use get_the_author_meta().
    See <a href="http://core.trac.wordpress.org/ticket/10695">#10695</a>.
    <a href="http://codex.wordpress.org/Template_Tags/the_author_meta" title="Documentation on the_author_meta() at the WordPress Codex [codex.wordpress.org]">CODEX</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13761">r13761</a>.
    get_usernumposts(). Use count_user_posts().
    See <a href="http://core.trac.wordpress.org/ticket/12642">#12642</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13805">r13805</a>.
    (add|remove)_option_update_handler(). Use (un)register_setting().
    See <a href="http://core.trac.wordpress.org/ticket/11730">#11730</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13988">r13988</a>.
    funky_javascript_fix() and callback.
    See <a href="http://core.trac.wordpress.org/ticket/12520">#12520</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13991">r13991</a>.
    trackback_rdf().
    See <a href="http://core.trac.wordpress.org/ticket/11139">#11139</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14090">r14090</a>.
    set_current_user(). Use wp_set_current_user().</li>
<li><a href="http://core.trac.wordpress.org/changeset/14646">r14646</a>.
    get_bloginfo('text_direction'). Use is_rtl().
    See <a href="http://core.trac.wordpress.org/ticket/13206">#13206</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15168">r15168</a>.
<a href="http://core.trac.wordpress.org/changeset/15170">r15170</a>.
    get_most_active_blogs(), get_blog_list().
    See <a href="http://core.trac.wordpress.org/ticket/13773">#13773</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15220">r15220</a>.
    Replace misnamed is_&#42;() functions with &#42;_exists() ones.
    See <a href="http://core.trac.wordpress.org/ticket/13747">#13747</a>.

<ul>
<li>is_taxonomy(). Use taxonomy_exists().</li>
<li>is_term(). Use term_exists().</li>
</ul></li>
</ul>

<h3>Performance, optimization</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/11976">r11976</a>.
    Improve get_page_hierarchy().
    See <a href="http://core.trac.wordpress.org/ticket/10853">#10853</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12464">r12464</a>.
    Improve do_action() performance. Make <em>$wp_actions</em> an associative array.
    See <a href="http://core.trac.wordpress.org/ticket/10561">#10561</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12657">r12657</a>.
    Switch to passing arrays instead of query strings to functions.
    See <a href="http://core.trac.wordpress.org/ticket/6647">#6647</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13143">r13143</a>.
    Optimize single_(post|tag|cat)_title() to use WP_Query globals if available.
    Removes extra DB query in single_post_title() in most cases.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13205">r13205</a>.
    Bail early for favicon.ico requests so we don’t load WP twice.
    See <a href="http://core.trac.wordpress.org/ticket/3426">#3426</a>.
    Reduces server load when certain browsers arbitrarily request <em>/favicon.ico</em> and <em>/favicon.ico</em> does not exist.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13227">r13227</a>.
    Add INDEX on <em>comment_parent</em> to speed up wp_delete_comment() reparenting queries.
    See <a href="http://core.trac.wordpress.org/ticket/12289">#12289</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13576">r13576</a>.
    Improve user listing performance.
    See <a href="http://core.trac.wordpress.org/ticket/11914">#11914</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13647">r13647</a>.
    Add <em>no_found_rows</em> arg to WP_Query::get_posts() to allow forcibly defeating SQL_CALC_FOUND_ROWS.
    Use <em>no_found_rows</em> for the query in get_boundary_post().
    See <a href="http://core.trac.wordpress.org/ticket/12557">#12557</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13653">r13653</a>.
    Cache get_lastpostmodified() results.
    See <a href="http://core.trac.wordpress.org/ticket/12575">#12575</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13676">r13676</a>.
    Don’t check for existence of <em>index.php</em> in <em>.htaccess</em> rewrite rules.
    See <a href="http://core.trac.wordpress.org/ticket/11845">#11845</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13676">r13676</a>.
    Use wp_cache_set() instead of wp_cache_add() in Recent Posts and Archives widgets.
    See <a href="http://core.trac.wordpress.org/ticket/11580">#11580</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14139">r14139</a>.
    Use relative paths when including files, to avoid <em>include_path</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12594">#12594</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14665">r14665</a>.
    Don’t update_post_caches() if a persistent object cache is installed.
    See <a href="http://core.trac.wordpress.org/ticket/12611">#12611</a>.</li>
</ul>

<h3>Other</h3>

<ul>
<li><a href="http://core.trac.wordpress.org/changeset/12602">r12602</a>.
    Add multi-site settings code.
    <em>Here starts the MU merge!</em></li>
<li><a href="http://core.trac.wordpress.org/changeset/12641">r12641</a>.
    Allow attaching <a href="http://php.net/manual/functions.anonymous.php" title="Anonymous functions, AKA closures, in the PHP Manual [php.net]">PHP 5.3 closures</a> to filters and actions.
    See <a href="http://core.trac.wordpress.org/ticket/10493">#10493</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12727">r12727</a>.
    Always set default timezone to UTC. Do offsets on top of that to be portable across all environments.
    See <a href="http://core.trac.wordpress.org/ticket/9588">#9588</a>.
    See <a href="http://core.trac.wordpress.org/ticket/11665">#11665</a>.
    See <a href="http://core.trac.wordpress.org/ticket/11672">#11672</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12914">r12914</a>.
    Add phpDoc to all add&#95;&#42;&#95;page() functions.
    Rename arguments to emphasise that people should be using Capabilities, not User Levels, and named hooks, not &#95;&#95;FILE&#95;&#95;.
    See <a href="http://core.trac.wordpress.org/ticket/12101">#12101</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/12915">r12915</a>.
    Support specific author templates by ID or <em>user_nicename</em>.
    See <a href="http://core.trac.wordpress.org/ticket/12064">#12064</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13032">r13032</a>.
    Look for <em>single-&#42;.php</em> templates. Add <em>single-</em> class to get_body_class().
    See <a href="http://core.trac.wordpress.org/ticket/12105">#12105</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13167">r13167</a>.
<a href="http://core.trac.wordpress.org/changeset/13452">r13452</a>.
<a href="http://core.trac.wordpress.org/changeset/15017">r15017</a>.
    Warn of unexpected output when activating plugins.
    See <a href="http://core.trac.wordpress.org/ticket/12089">#12089</a>.
    See <a href="http://core.trac.wordpress.org/ticket/13585">#13585</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13427">r13427</a>.
    Use is_ssl() instead of <em>$_SERVER['HTTPS'] == 'on'</em> checks (which don’t work on all hosts).
    See <a href="http://core.trac.wordpress.org/ticket/11885">#11885</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13433">r13433</a>. <!--IMPORTANT-->
    Consistently pass unserialized values to hooks in update_site_option().
    Change add_option() and add_site_option() to do the same.
    Plugins using maybe_unserialize() would continue to work as the value would no longer need to be unserialized.
    See <a href="http://core.trac.wordpress.org/ticket/10788">#10788</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13484">r13484</a>.
    Support non-BASIC authentication schemes in HTTP <abbr title="Application Programming Interface">API</abbr> if server supports them.
    See <a href="http://core.trac.wordpress.org/ticket/4011">#4011</a>.
    See <a href="http://core.trac.wordpress.org/ticket/12200">#12200</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13499">r13499</a>.
    Display PHP start-up errors and warnings.
    See <a href="http://core.trac.wordpress.org/ticket/12395">#12395</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/13456">r13456</a>.
    Allow multiple To: recipients in wp_mail().
    Improve handling of <em>\r\n</em> in headers and multiple CC/BCC headers.
    See <a href="http://core.trac.wordpress.org/ticket/10420">#10420</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14086">r14086</a>.
    Register <em>inherit</em> as post status. Check parent post status when commenting on attachments.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14111">r14111</a>.
    Introduce <em>edit_theme_options</em> capability.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14276">r14276</a>.
    Introduce template file for front page.
    Has priority over other templates which apply, falls back to standard template flow for the page/list of posts.
    See <a href="http://core.trac.wordpress.org/ticket/6801">#6801</a>.
    <a href="http://codex.wordpress.org/Template_Hierarchy" title="Documentation on Template_Hierarchy at the WordPress Codex [codex.wordpress.org]">CODEX</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14406">r14406</a>.
    Add HTML5 elements to KSES.
    See <a href="http://core.trac.wordpress.org/ticket/12835">#12835</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/14412">r14412</a>.
    Add protocols to KSES, make protocol list filterable, start esc_url() with same list.
    See <a href="http://core.trac.wordpress.org/ticket/10914">#10914</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15096">r15096</a>.
    Introduce <em>export</em> capability.
    See <a href="http://core.trac.wordpress.org/ticket/13681">#13681</a>.</li>
<li><a href="http://core.trac.wordpress.org/changeset/15239">r15239</a>.
    Missile guidance capabilities.</li>
</ul>

<h2>That’s it, folks!</h2>

<p>I wish you enjoy WordPress 3.0 (once it’s officially out!) and you publish even better content with it!</p>

<p>Thanks for reading!</p>

<p>/δκ</p>

<h2>Changes in this document</h2>

<dl>
<dt>2011-01-19</dt>
<dd>Fixed link to <a href="http://phpdoc.wordpress.org/trunk/" title="Web interface of the Wordpress inline documenation [phpdoc.wordpress.org]">phpdoc.wordpress.org/trunk</a>.</dd>

<dt>2010-06-21</dt>
<dd>Link to <a href="http://ma.tt/2010/06/headers-of-twenty-ten/" title="The headers of Twenty Ten [ma.tt]">the story of the Twenty Ten headers</a>.</dd>

<dt>2010-06-19</dt>
<dd>Link to <a href="http://wordpress.org/support/topic/411649" title="WordPress 3.0 Issues, Problems, Resolutions thread at the WordPress forum [wordpress.org]">issues thread at the official forum</a>.</dd>

<dt>2010-06-17</dt>
<dd>Additions.  “Known issue” of insufficient memory for upgrading.</dd>

<dt>2010-06-16</dt>
<dt>2010-06-14</dt>
<dt>2010-06-13</dt>
<dd>Additions.</dd>

<dt>2010-06-12</dt>
<dd>What you need to return from multi-site to single-site (see comment no. 3 by Ron).
Fixed link to <a href="http://wpdevel.wordpress.com/2010/04/19/this-is-a-reminder-that-as-per-ticket-12" title="[wpdevel.wordpress.com]">Ryan Boren on &#42;&#95;(option|transient)() functions and unslashed data</a>.</dd>

<dt>2010-06-11</dt>
<dd>Additions.  Typos.  WP/MU/MS terminology explanation corrected (see comment no. 1 by Andrew Nacin).</dd>

<dt>2010-06-10</dt>
<dd>Additions.
Link to <a href="http://ottopress.com/2010/wordpress-3-0-and-custom-post-types/" title="WordPress 3.0 and Custom Post Types, by Otto [ottopress.com]">Otto on custom post-types</a>.</dd>

<dt>2010-06-09</dt>
<dd>Improvements, additions, new links.  WP/MU/MS terminology explanation to be corrected.
Link to <a href="http://phpdoc.wordpress.org/trunk/" title="Web interface of the Wordpress inline documenation [phpdoc.wordpress.org]">improved webif of inline docs</a>.
Link to <a href="http://wpdevel.wordpress.com/tag/30compat/" title="Posts on version 3.0 and plugin/theme compatibility at the WordPress Development Updates blog [wpdevel.wordpress.com]">wpdevel compatibility posts</a>.</dd>
</dl>

<!--ABBREVIATIONS....................................................................................................-->

<!--URIs.............................................................................................................-->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/76/&title=WordPress 3.0: What’s new">del.icio.us</a></p>
<hr />
<p>© 2010 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/76/">Permalink</a></p> ]]></content:encoded>
			<wfw:commentRss>http://op111.net/76/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.026 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-07 14:14:56 -->

