<?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 » English</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_english" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="op111net_english" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">op111net_english</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/op111net_english" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fop111net_english" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><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> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/4LktRGbLtLs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit the PATH environment variable in Windows without pain</title>
		<link>http://op111.net/82/</link>
		<comments>http://op111.net/82/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 09:00:03 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[alternatives]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[programs]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[useful]]></category>
		<category><![CDATA[variables]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://op111.net/?p=82</guid>
		<description><![CDATA[Four alternative applications to edit the PATH and other environment variables in Windows. Two are CLI tools, two are GUI tools, and all are available for free. <a href="http://op111.net/82/" title="View post Edit the PATH environment variable in Windows without pain" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Edit the PATH variable in Windows without pain-->

<!--id: 82-->

<p>Editing the PATH environment variable in Windows is an unpleasant experience. First, it takes several steps to get to the interface. Second, the interface is impossible: <span id="more-82"></span></p>

<p><a href="http://op111.net/wp-content/uploads/2011/01/windows-7-edit-system-variable.png"><img src="http://op111.net/wp-content/uploads/2011/01/windows-7-edit-system-variable.png" alt="Editing a system variable in Windows 7" title="Editing a system variable in Windows 7" width="347" height="140" class="alignnone size-full wp-image-877" /></a></p>

<p>Something you can do to make the task easier is copy the whole field, edit it in a text editor and paste it back. But there are better ways.</p>

<p>Here I suggest <em>four</em> alternative tools for editing the PATH and other environment variables from a proper interface. Two are command-line tools and the other two have a graphical interface. All are available for free. I list them in order of personal preference.</p>

<h2>pathed</h2>

<p>I like <a href="http://www.p-nand-q.com/gtools/pathed.html" title="A tool for editing the PATH envinronment variable from the command line [p-nand-q.com]">pathed</a> most because it is the simplest. It is a command-line tool, part of the <a href="http://www.p-nand-q.com/gtools.html" title="GTools, an collection of open-source GUI and CLI tools for Windows [p-nand-q.com]">GTools</a> collection. Its usage is straightforward:</p>

<pre><code>C:\Users\demetris&gt;pathed --help
PATHED - Version 3.2
Freeware written by Gerson Kurz (http://p-nand-q.com)

USAGE: PATHED.EXE [OPTIONS]
OPTIONS:
      /MACHINE: print machine PATH
         /USER: print user PATH
          /ADD: add variable at the head
       /APPEND: add variable at the tail
       /REMOVE: remove path / index
         /SLIM: strip duplicate vars
          /ENV: environment variable, defaults to PATH
</code></pre>

<p>For example, say that you have your Sysinternal tools in C:\Bin\Sysinternals and you want to add them to the PATH. Simply do:</p>

<pre><code>pathed /append C:\Bin\Sysinternals /machine
</code></pre>

<p>If you want to add them to the <em>user</em> PATH system instead, then do:</p>

<pre><code>pathed /append C:\Bin\Sysinternals /user
</code></pre>

<p>If you want to know what’s in the PATH before you start editing, pathed does that equally well. Simply use <code>pathed</code>. Typing <code>pathed</code> without any arguments gives you a clean readable list of the machine PATH:</p>

<pre><code>C:\Users\demetris&gt;pathed
PATHED - Version 3.2
Freeware written by Gerson Kurz (http://p-nand-q.com)

00 C:\Windows
01 C:\Windows\system32
02 C:\Windows\System32\Wbem
03 C:\Windows\System32\WindowsPowerShell\v1.0\
04 C:\Program Files\Common Files\Microsoft Shared\Windows Live
05 C:\Program Files\SlikSvn\bin\
06 C:\Program Files\TortoiseHg\
07 C:\Program Files\TortoiseSVN\bin
08 C:\Program Files\Windows Live\Shared
09 C:\Bin
10 C:\Bin\GTools
</code></pre>

<p>NOTE. GTools does not add its own directory to the PATH automatically. I find it makes sense to add it yourself, so that you can use the individual tools quickly from everywhere.</p>

<p><a href="http://www.p-nand-q.com/gtools.html" title="GTools, an collection of open-source GUI and CLI tools for Windows [p-nand-q.com]">GTools and pathed homepage</a> · License: New BSD License · <a href="http://code.google.com/p/pserv3/" title="Code repository of GTools, a collection of tools for Windows [code.google.com]">Source code</a></p>

<h2>PathEditor</h2>

<p>If you prefer something with a graphical interface, then <a href="http://www.redfernplace.com/software-projects/patheditor/" title="PathEditor, a Windows open-source tool for editing your PATH environment variable [redfernplace.com]">PathEditor</a> is an equally simple and straightforward editor and viewer:</p>

<p><a href="http://op111.net/wp-content/uploads/2011/01/windows-7-path-editor-basic-mode.png"><img src="http://op111.net/wp-content/uploads/2011/01/windows-7-path-editor-basic-mode-192x129.png" alt="PathEditor, a simple tool for Windows" title="PathEditor, a simple tool for Windows" width="192" height="129" class="alignnone size-medium wp-image-878" /></a></p>

<p>PathEditor also offers an advanced mode, where you can do more than just editing the PATH variable. To learn about the advanced mode, look at the <a href="http://www.redfernplace.com/software-projects/patheditor/patheditor-user-manual/" title="User manual for PathEditor [redfernplace.com]">program’s manual</a>.</p>

<p><a href="http://www.redfernplace.com/software-projects/patheditor/" title="PathEditor, a Windows open-source tool for editing your PATH environment variable [redfernplace.com]">Path Editor homepage</a> · <a href="http://www.redfernplace.com/software-projects/patheditor/patheditor-user-manual/" title="User manual for PathEditor [redfernplace.com]">PathEditor manual</a> · License: Simplified BSD License · Accepts donations</p>

<h2>Rapid Environment Editor</h2>

<p>For something that can do more than either pathed or PathEditor, you can try the <a href="http://www.rapidee.com/" title="Rapid Environment Editor: Windows environment variables management [rapidee.com]">Rapid Environment Editor</a>, a feature-rich viewer and editor for all environnent variables:</p>

<p><a href="http://op111.net/wp-content/uploads/2011/01/windows-7-rapid-environment-editor.png"><img src="http://op111.net/wp-content/uploads/2011/01/windows-7-rapid-environment-editor-192x179.png" alt="Rapid Environment Editor, a tool for environment editing variables in Windows" title="Rapid Environment Editor, a tool for environment editing variables in Windows" width="192" height="179" class="alignnone size-medium wp-image-879" /></a></p>

<p>I have not used or explored Rapid Environment Editor properly, because it is more than I need. So, I can’t say how good it is in practice. But it seems to be a carefully made application, and the fact that it has been translated in 13 languages, all by volunteers, suggests that it works well and that it is appreciated by lots of people.</p>

<p><a href="http://www.rapidee.com/" title="Rapid Environment Editor: Windows environment variables management [rapidee.com]">Rapid Environment Editor homepage</a> · License: <a href="http://www.rapidee.com/en/license" title="License of Rapid Environment Editor [rapidee.com]">Freeware</a> · Accepts donations</p>

<h2>Other</h2>

<p>For Windows XP and Windows Server 2003, another alternative is pathman.exe, a command-line path manager included in the <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd" title="Windows Server 2003 Resource Kit Tools by Microsoft [microsoft.com]">Windows Server 2003 Resource Kit Tools</a> that lets you add and remove directories to and from the user PATH and the system PATH. While not as helpful as pathed, the other CLI tool in this list, pathman is certainly better than the default edit box.</p>

<p>Please note that Windows Vista, Windows Server 2008 and Windows&nbsp;7 are not officially supported by the 2003 Resource Kit Tools. For these versions of Windows select one of the other three path editors.</p>

<h2>Links</h2>

<p>To recap:</p>

<ul>
<li><a href="http://www.p-nand-q.com/gtools/pathed.html" title="A tool for editing the PATH envinronment variable from the command line [p-nand-q.com]">pathed</a> is a CLI path editor and viewer, part of the <a href="http://www.p-nand-q.com/gtools.html" title="GTools, an collection of open-source GUI and CLI tools for Windows [p-nand-q.com]">GTools</a> set</li>
<li><a href="http://www.redfernplace.com/software-projects/patheditor/" title="PathEditor, a Windows open-source tool for editing your PATH environment variable [redfernplace.com]">PathEditor</a> is a simple GUI path editor and viewer</li>
<li><a href="http://www.rapidee.com/" title="Rapid Environment Editor: Windows environment variables management [rapidee.com]">Rapid Environment Editor</a> is a feature-rich GUI editor and viewer for all environment variables </li>
<li>pathman.exe is a CLI tool by Microsoft, part of the <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd" title="Windows Server 2003 Resource Kit Tools by Microsoft [microsoft.com]">Windows Server 2003 Resource Kit Tools</a></li>
</ul>

<p>Thank you for reading!</p>

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

<!--Abbreviations....................................................................................................-->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/82/&title=Edit the PATH environment variable in Windows without pain">del.icio.us</a></p>
<hr />
<p>© 2011 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/82/">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/KpLwSAMWMfI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/82/feed/</wfw:commentRss>
		<slash:comments>1</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> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/lPuNZshcIas" height="1" width="1"/>]]></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> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/bfeJYmGynKM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/80/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What is a stupid person</title>
		<link>http://op111.net/79/</link>
		<comments>http://op111.net/79/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 09:38:45 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[definitions]]></category>
		<category><![CDATA[Demetris]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[people]]></category>

		<guid isPermaLink="false">http://op111.net/?p=79</guid>
		<description><![CDATA[A stupid person is someone who thinks other people are stupid. <a href="http://op111.net/79/" title="View post What is a stupid person" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<p><em>A stupid person is someone who thinks other people are stupid.</em></p>

<p>(This has been my working definition of stupidity for the last 10 years or so.  It has served me well.)</p>
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/79/&title=What is a stupid person">del.icio.us</a></p>
<hr />
<p>© 2010 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/79/">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/CG-IjwcJbnM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/79/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.722 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-08 21:34:24 -->

