<?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>Fri, 05 Mar 2010 09:44:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-alpha</generator>
		<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><item>
		<title>Progressive enhancement of drop-down menus with the :not CSS selector</title>
		<link>http://op111.net/74</link>
		<comments>http://op111.net/74#comments</comments>
		<pubDate>Fri, 08 Jan 2010 16:50:53 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[drop-down]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[indicators]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[navmenu]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[selectors]]></category>
		<category><![CDATA[suckerfish]]></category>
		<category><![CDATA[superfish]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://op111.net/?p=74</guid>
		<description><![CDATA[Add indicators to items with subitems on your drop-down menu in three easy steps, using CSS alone.  For all browsers except IE.  <a href="http://op111.net/74" title="View post Progressive enhancement of drop-down menus with the :not CSS selector" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Progressive enhancement for drop-down menus with the :not CSS selector-->

<!--sl: -->

<!--id: xx-->

<!--INTRODUCTION -->

<p>You probably have noticed the characters—usually arrows—displayed on some navigation menus to indicate the presence of subitems under an item.  I find them helpful, and I recently looked to see if it was possible to have them displayed on a CSS drop-down menu by using only CSS (that is, without any JavaScript assistance).  In this howto I explain the solution I arrived at:  <span id="more-74"></span></p>

<p>How to display these useful indicators on a CSS drop-down menu by using the selector <code>:not</code>.</p>

<p class="insert">For a simple demo, see the menu of this site, op111.net.</p>

<p>It is a simple solution that works in all browsers except Internet Explorer, where the indicators simply do not appear at all.  Hence, it is a progressive enhancement, or, to put it the other way round, it degrades gracefully in old or wayward browsers.</p>

<p>It is also a solution that suggested to me that the <code>:not</code> selector may offer possibilities that are unexplored.  If you know of other useful applications of the <code>:not</code> selector, be kind enough to enligthen us with your comment!</p>

<h2>    Step 1</h2>

<p>To each anchor in the menu we add an indicator-character wrapped in a <code>span</code> with an appropriate class:</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;more&quot;</span>&gt;</span> <span style="color: #666666;">&amp;darr;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span></pre></div></div>


<p>For this howto I use the downward arrow as indicator, and <code>more</code> as the class name.</p>

<p>So, supposing we have a menu with two top-level items, one of which has a subitem:</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://x.net/p1&quot;</span>&gt;</span>Page1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://x.net/p2&quot;</span>&gt;</span>Page2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://x.net/p2/s1&quot;</span>&gt;</span>Subpage1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span></pre></div></div>


<p>... what we aim at is:</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://x.net/p1&quot;</span>&gt;</span>Page1<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;more&quot;</span>&gt;</span> <span style="color: #666666;">&amp;darr;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://x.net/p2&quot;</span>&gt;</span>Page2<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;more&quot;</span>&gt;</span> <span style="color: #666666;">&amp;darr;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://x.net/p2/s1&quot;</span>&gt;</span>Subpage1<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;more&quot;</span>&gt;</span> <span style="color: #666666;">&amp;darr;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span></pre></div></div>


<p>The best way to add the indicators will depend, of course, on how the markup is generated.  If you use WordPress, look at the Appendix at the end for some examples.</p>

<p>Let’s see the second step now...</p>

<h2>    Step 2</h2>

<p>We make a CSS rule to hide <strong>all</strong> indicators we added:</p>

<pre lang="">
li a .more { display: none; }
</pre>

<p>Why did we do that?</p>

<p>Because the indicators we added in the first step appear in all items, but not all items have subitems.  So, in the second step we hid the indicators, and in the third step we will instruct the browser to display indicators only in items with subitems:</p>

<h2>    Step 3</h2>

<p>We make a second CSS rule:</p>

<pre lang="">
li a:not(:last-child) .more { display: inline; }
</pre>

<p>Done!</p>

<h2>    How does this work?</h2>

<p>In items with subitems, the <code>a</code> anchor is followed by a <code>ul</code> element (which containts the subitems).  So, in items with subitems the anchor is <em>not</em> the last child of its <code>li</code> parent.  This is the condition that our <code>:not</code> rule specifies, saying, in human language:</p>

<p><em>Select <code>.more</code> within any anchor that is not the last child of its parent, and <code>display</code> it <code>inline</code>.</em></p>

<p>The <code>display:none</code> declaration of the second step is understood by all common browsers.  So, all browsers will hide the indicators from display.  Then, browsers that understand <code>:not</code> and <code>:last-child</code> will show the indicators where appropriate.</p>

<p><em>Simple, perfectly valid CSS 3, and, for this reason, future-proof too!</em></p>

<h2>    Fine... But!...</h2>

<h3>I want the helpful indicators in Internet Explorer too!</h3>

<p>That’s not possible with CSS alone, because IE (even IE8) knows nothing about CSS3 selectors like <code>:not</code> and <code>:last-child</code> (or <code>:only-child</code>, which would have the same effect here).</p>

<p>So, for Internet Explorer you will have to resort to a mixture of CSS and JavaScript.  Either use something like <a href="http://users.tpg.com.au/j_birch/plugins/superfish/" title="Superfish — Suckerfish on ’roids [users.tpg.com.au]">Superfish</a> or write some custom JavaScript.  If the site already uses a JS framework, I imagine the code would be pretty simple.  In jQuery, for example, all it takes is one line:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a:not(:last-child) .more'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p>Then, load the JavaScript snippet conditionally if the user agent is Internet Explorer, so that good browsers don’t have to download unnecessary bytes.</p>

<h3>I want different indicators for parents of different levels!</h3>

<p>I omitted that from the example on purpose, to keep the markup as simple as possible.  It’s easy to do:</p>

<ol>
<li>Add two indicators to each anchor, one for subitems that expand vertically and another for subitems that expand horizontally,
and wrap each indicator in its own span along with an appropriate class.  E.g.:  <code>more-v</code> and <code>more-h</code>.</li>
<li>Hide all indicators.</li>
<li>For top-level parents display the one indicator by making a selector that applies to top-level parents only.
E.g.:

<ul>
<li><code>#menu &gt; ul &gt; a:not(:last-child) .more-v</code></li>
</ul></li>
<li>For lower-level parents display the other indicator by making a selector that targets lower-level parents.
E.g.:

<ul>
<li><code>ul ul a:not(:last-child) .more-h</code></li>
</ul></li>
</ol>

<h2>    Links</h2>

<p>That’s it for now.  Thanks for reading!</p>

<p>Here are a few links to help your work and research on drop-down menu systems:</p>

<ul>
<li><a href="http://www.quirksmode.org/css/contents.html" title="CSS browser compatibility table at QuirksMode [quirksmode.org]">CSS browser compatibility table at QuirksMode</a>.  See which browsers support advanced CSS3 selectors.</li>
<li><a href="http://www.tyssendesign.com.au/articles/css/dropdown-low-down/" title="Comparative review of dropdown menus [tyssendesign.com.au]">Dropdown low down — Tyssen Design</a>.  Extensive comparative review of drop-down menus.</li>
<li><a href="http://lwis.net/free-css-drop-down-menu/" title="A free and open-source drop-down menu framework [lwis.net]">Free CSS Drop-Down Menu Framework</a>.  Popular, actively maintained, relatively easy to set up, and licensed under the GPLv3.</li>
<li><a href="http://adipalaz.awardspace.com/experiments/css/accessible_ddmenu_test.html" title="Experimental keyboard-accessible CSS menu [adipalaz.awardspace.com]">Keyboard accessible dropdown menu</a>.  Full keyboard-accessibility even without JavaScript! </li>
<li><a href="http://users.tpg.com.au/j_birch/plugins/superfish/" title="Superfish — Suckerfish on ’roids [users.tpg.com.au]">Superfish</a>.  A jQuery plugin that adds useful enhancements, including indicators, to Suckerfish-type drop-down menus.</li>
</ul>

<h2>    Appendix</h2>

<p>Here are three bits of code that show how to generate the markup for the indicators in WordPress.</p>

<p>If you are constructing a WordPress theme from scratch, simply use the <code>link_after</code> argument of <code>wp_page_menu()</code>.  If the menu is generated by <code>wp_list_pages()</code>, you can pass the exact same argument to it too.  Here is an example that uses <code>wp_page_menu()</code>:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">wp_page_menu<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'depth'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'link_after'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;span class=&quot;more&quot;&gt; &amp;darr;&lt;/span&gt;'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'sort_column'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'menu_order'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'title_li'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p><code>wp_page_menu()</code> and <code>wp_list_pages()</code> can also be modified by <strong>applying a filter</strong>, which is convenient if you do not want to edit template files directly.</p>

<p>For <code>wp_page_menu()</code> the indicator markup is added by applying a filter to <code>wp_page_menu_args()</code>:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> my_page_menu<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$args</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'link_after'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;span class=&quot;more&quot;&gt; &amp;darr;&lt;/span&gt;'</span><span style="color: #339933;">;</span>
    <span style="color: #7f7f00;">return</span> <span style="color: #000088;">$args</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_page_menu_args'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_page_menu'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p>For <code>wp_list_pages()</code> your filter will have to do a simple string replacement instead:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> my_list_pages<span style="color: #009900;">&#40;</span><span style="color: #000088;">$html</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #7f7f00;">return</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;/a&gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&lt;span class=&quot;more&quot;&gt; &amp;darr;&lt;/span&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/a&gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$html</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_list_pages'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_list_pages'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


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

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

<!--MISC.....................................................................-->

<h3>Related</h3>

<ul><li><a href="http://op111.net/73" rel="bookmark" title="31 Dec 2009">Page Lists Plus: Comprehensive control of your WordPress page menu</a></li>

<li><a href="http://op111.net/57" rel="bookmark" title="23 Sep 2008">Add any link to your WordPress navigation menu with Page Links To</a></li>

<li><a href="http://op111.net/56" rel="bookmark" title="19 Sep 2008">Five good WordPress plugins you may not know about</a></li>

<li><a href="http://op111.net/59" rel="bookmark" title="1 Oct 2008">Add meaningful tooltips to your WordPress menu links with Page Menu Editor</a></li>
</ul>

<!-- Similar Posts took 12.374 ms -->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/74&title=Progressive enhancement of drop-down menus with the :not CSS selector">del.icio.us</a></p>
<hr />
<p>© 2010 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/74">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/KEZcliFGVuI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/74/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Page Lists Plus: Comprehensive control of your WordPress page menu</title>
		<link>http://op111.net/73</link>
		<comments>http://op111.net/73#comments</comments>
		<pubDate>Thu, 31 Dec 2009 20:45:24 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[attribute]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[nav-menu]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[page-menu]]></category>
		<category><![CDATA[pages]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[title]]></category>

		<guid isPermaLink="false">http://op111.net/?p=73</guid>
		<description><![CDATA[A review of Page Lists Plus, a WordPress plugin that helps you customize your page navigation menu to make it more friendly and more useful to visitors. <a href="http://op111.net/73" title="View post Page Lists Plus: Comprehensive control of your WordPress page menu" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Page Lists Plus:  Comprehensive control of your WordPress page menu-->

<!--sl: -->

<!--id: 73-->

<p>Whether you use WordPress as a weblog tool to publish articles in reverse chronology or as a more traditional CMS to publish pages arranged in a hierarchy, your webpages probably have a page navigation menu somewhere near the top.  Sooner or later there comes a time when you need a way to manage this menu better.  In fact, if your content is hierarchically arranged pages, this time comes right at the beginning.  <span id="more-73"></span></p>

<p>There are several good plugins that help you improve your page menu.  op111.net has published quick howtos on two:  <a href="http://op111.net/57" title="Add any link to your WordPress navigation menu with Page Links To [op111.net]">Page Links To</a> and <a href="http://op111.net/59" title="Add meaningful tooltips to your WordPress menu links with Page Menu Editor [op111.net]">Page Menu Editor</a>.  A few months ago I started using another page-menu plugin, which finally replaced for me both Page Links To and Page Menu Editor, as well as Exclude Pages.  It is called Page Lists Plus and this is a small review of it.</p>

<h2>    Page Lists Plus</h2>

<p>Homepage:  <a href="http://www.technokinetics.com/plugins/page-lists-plus/">technokinetics.com/plugins/page-lists-plus</a><br />
WP.org homepage:  <a href="http://wordpress.org/extend/plugins/page-lists-plus/">wordpress.org/extend/plugins/page-lists-plus</a><br />
Author homepage:  <a href="http://www.technokinetics.com/">technokinetics.com</a><br />
Version reviewed:  Page Lists Plus v1.1.5<br />
Compatibility:  Tested and works fine with WordPress v2.8, v2.9 and v3.0-dev.</p>

<p>Page Lists Plus is a plugin that offers options to customize the output of <code>wp_list_pages()</code> — this probably sounded like Greek to you, but I’m starting with it for a reason:  <code>wp_list_pages()</code> is the main WordPress function for generating a list of all pages (as opposed to posts) in a site, and it is what WordPress themes use to create page navigation menus.  What that means in practical terms is that Page Lists Plus and its array of useful options will work with essentially any WordPress theme that has a page menu.</p>

<p>What are these customization options then?</p>

<h2>    Page Lists Plus global options</h2>

<p>Page Lists Plus has about twenty options.  They are all presented on one screen, separated in two groups.  The first group is the <em>global</em> options, which you set once and forget about:</p>

<p><!--Page Lists Plus, Global options-->
<a href="http://op111.net/wp-content/uploads/2009/12/wp-plp-options-global.png" title="Page Lists Plus 1.1.5 for WordPress, Global Options" rel="lightbox[73]" rel="lightbox[73]"><img src="http://op111.net/wp-content/uploads/2009/12/wp-plp-options-global.png" alt="Page Lists Plus 1.1.5 for WordPress, Global Options" title="Page Lists Plus 1.1.5 for WordPress, Global Options" width="384" height="384" class="alignnone size-full wp-image-668" /></a></p>

<p><strong>Add “Home” link at the start of Page lists</strong> is the first option and it must be among the most useful to users of the plugin:  If your theme does not display a Home link on the page menu, or does not offer an option to add one, all it takes to add it with PLP is one click.</p>

<p><strong>Add <code>class="first_item"</code> to first list item</strong> and the four options after it make it easy to change the appearance of the page menu via CSS.</p>

<p>The last global option, <strong>Remove title attributes from anchors</strong>, is what intrigued me most the first time I tried PLP, as it indicated a concern for an area which has sometimes been singled out as the weak point of WordPress (and in which WordPress has made significant progress in the last few versions) —  <em>accessibility</em>.</p>

<p>As Tim Holt, the author of Page Lists Plus, <a href="http://www.technokinetics.com/wordpress-and-title-attribute-abuse/" title="Technokinetics &raquo; WordPress and Title Attribute Abuse [technokinetics.com]">explains in his site</a>, what WordPress does with title attributes is wrong and, unless you are manually adding meaningful and informative title attributes to your links, the best thing to do is remove the attributes completely.  Selecting <em>Remove title attributes from anchors</em> will do exactly that.</p>

<p>(Even leaving accessibility aside, a title attribute identical to the anchor text is pointless and can also be annoying.)</p>

<h2>    Page Lists Plus per-page options</h2>

<p>Next is the group of page-specific options.  They are eight in total and, since not all will be of interest to everyone, the plugin lets you select the ones you want to use:</p>

<p><!--Page Lists Plus, Page-specific options-->
<a href="http://op111.net/wp-content/uploads/2009/12/wp-plp-options-page-specific.png" title="Page Lists Plus 1.1.5 for WordPress, Page-specific Options" rel="lightbox[73]" rel="lightbox[73]"><img src="http://op111.net/wp-content/uploads/2009/12/wp-plp-options-page-specific.png" alt="Page Lists Plus 1.1.5 for WordPress, Page-specific Options" title="Page Lists Plus 1.1.5 for WordPress, Page-specific Options" width="384" height="320" class="alignnone size-full wp-image-669" /></a></p>

<p>The options you select will then appear grouped in a box on the Edit screen of your Pages:</p>

<p><!--Page Lists Plus, Metabox-->
<a href="http://op111.net/wp-content/uploads/2009/12/wp-plp-metabox.png" title="Page Lists Plus 1.1.5 for WordPress, metabox on Edit screen" rel="lightbox[73]" rel="lightbox[73]"><img src="http://op111.net/wp-content/uploads/2009/12/wp-plp-metabox.png" alt="Page Lists Plus 1.1.5 for WordPress, metabox on Edit screen" title="Page Lists Plus 1.1.5 for WordPress, metabox on Edit screen" width="284" height="284" class="alignnone size-full wp-image-667" /></a></p>

<p>As of version 1.1.5, the page-specific options of PLP are eight — one that I dislike, one that I’m indifferent to, and six I like and use:</p>

<dl>
<dt>Add Custom Classes to Individual List Items</dt>
<dd>Adding custom CSS classes to specific items makes it easy to style them individually via CSS.</dd>

<dt>Alternative Link Text</dt>
<dd>To specify, for example, a short link text for a page that has a long title.
If I had a page with the title, say, <em>Greek Cuisine Recipes by Demetris</em>, I could use just <em>Greek Recipes</em> for the page menu.</dd>

<dt>Alternative Title Attribute</dt>
<dd>To supply supplementary information that appears when a link is hovered over.  (See screenshot example below.)</dd>

<dt>Include</dt>
<dd>To specify whether a page appears on page lists and page menus.
This option is selected by default for new pages.
(In the Global options you can also specify whether children of excluded pages are excluded too.)</dd>

<dt>Link</dt>
<dd>To unlink a page.  Useful, for example, for empty pages that serve as parents to other pages.</dd>

<dt>Redirect To</dt>
<dd>To make a page that appears on page menus and redirects transparently to a specified URL.
For example, you can make a page that redirects to a category archive, by specifying the URL of the category archive.</dd>
</dl>

<p><!--TITLE attribute example-->
<a href="http://op111.net/wp-content/uploads/2009/12/wp-plp-title-attribute.png" title="A hyperlink’s TITLE attribute, displayed when hovering on the link" rel="lightbox[73]" rel="lightbox[73]"><img src="http://op111.net/wp-content/uploads/2009/12/wp-plp-title-attribute.png" alt="A hyperlink’s TITLE attribute, displayed when hovering on the link" title="A hyperlink’s TITLE attribute, displayed when hovering on the link" width="512" height="256" class="alignnone size-full wp-image-670" /></a></p>

<p class="wp-caption">
In this example from op111.net the link for the Archives page has a TITLE attribute that provides some supplementary information on the target.  Graphical browsers commonly display the TITLE attribute when the link is hovered over.
</p>

<h2>    Suggestions &amp; Feature requests</h2>

<p>All in all, I’m happy with Page Lists Plus.  It’s been a three-in-one plugin for me, and it has been working flawlessly.</p>

<p>The following are just a few small points that I think would help make it even better, at least for what I need:</p>

<ul>
<li>An additional Save button near the top of the Options screen.</li>
<li>An option to use page Excerpts as title attributes of links.</li>
<li>An option to use custom anchor text for the Home link.</li>
</ul>

<h2>    Questions &amp; Answers</h2>

<p>These are a few questions I had when I started using Page Lists Plus, along with the answers I can offer now:</p>

<dl>
<dt>Is PLP a replacement for Page Links To?</dt>
<dd>Page Links To is a specialized plugin that does redirections of all kinds,
but if you only need to add links to your page menu,
Page Lists Plus will do that for you just fine.</dd>

<dt>Is PLP a replacement for Page Menu Editor?</dt>
<dd>For me it has been a complete replacement, as it does everything Page Menu Editor does, and more.
Also, PLP is more economical in database queries:
While Page Menu Editor makes one query for every page that exists in a site,
Page Lists Plus only makes one query per active option that needs information from the database.
(Some of its options, like the addition of various CSS classes, do not need database information at all.)</dd>

<dt>Does PLP work with <code>wp_page_menu</code>?</dt>
<dd>It should in theory, as <code>wp_page_menu</code> is simply a wrapper for <code>wp_list_pages</code>, and it seems to work in practice too.
(At this writing, the page menu of op111.net is constructed with <code>wp_page_menu</code>,
and Page Lists Plus seems to work fine with it.)</dd>
</dl>

<h2>    Behind Page Lists Plus:  Tim Holt</h2>

<p>Page Lists Plus is made by Tim Holt, a web developer in England.  Tim Holt specializes in WordPress customization, and, as his homepage and Page Lists Plus show, has also a special interest in web accessibility.</p>

<p>Tim replied prompty and informatively to two questions I sent his way before I started writing this review.  I want to thank him for his kindness from here too.</p>

<h2>    Links</h2>

<p>All Page Lists Plus links a second time, for your convenience.</p>

<p><em>Remember that you can install the plugin directly from your WordPress dashboard too:  Go to Plugins › Add New, search for Page Lists Plus and click Install on the first result.</em></p>

<ul>
<li><a href="http://www.technokinetics.com/plugins/page-lists-plus/" title="[technokinetics.com]">Page Lists Plus, homepage</a></li>
<li><a href="http://wordpress.org/extend/plugins/page-lists-plus/" title="[wordpress.org]">Page Lists Plus, WP.org homepage</a></li>
<li><a href="http://www.technokinetics.com/" title="[technokinetics.com]">Page Lists Plus, author homepage</a></li>
</ul>

<hr />

<p>Thank you for reading!  I wish you a happy 2010!</p>

<p>/δκ</p>

<hr />

<p>CHANGES</p>

<ul>
<li>2010-01-02.  Added Questions &amp; Answers part.</li>
</ul>

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

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

<h3>Related</h3>

<ul><li><a href="http://op111.net/59" rel="bookmark" title="1 Oct 2008">Add meaningful tooltips to your WordPress menu links with Page Menu Editor</a></li>

<li><a href="http://op111.net/57" rel="bookmark" title="23 Sep 2008">Add any link to your WordPress navigation menu with Page Links To</a></li>

<li><a href="http://op111.net/about/plugins-used" rel="bookmark" title="12 Sep 2008">Plugins used</a></li>

<li><a href="http://op111.net/65" rel="bookmark" title="1 Dec 2008">Tangofy: Better icons for WordPress 2.7 and 2.8</a></li>
</ul>

<!-- Similar Posts took 9.720 ms -->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/73&title=Page Lists Plus: Comprehensive control of your WordPress page menu">del.icio.us</a></p>
<hr />
<p>© 2009 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/73">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/siBnZBdPYwQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/73/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Eight website/weblog designs I enjoy</title>
		<link>http://op111.net/72</link>
		<comments>http://op111.net/72#comments</comments>
		<pubDate>Mon, 30 Nov 2009 20:29:35 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[colors]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[habari]]></category>
		<category><![CDATA[jekyll]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[minimalism]]></category>
		<category><![CDATA[readability]]></category>
		<category><![CDATA[screenshots]]></category>
		<category><![CDATA[typography]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[white-space]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://op111.net/?p=72</guid>
		<description><![CDATA[Eight websites with good readability and attractive design:  en-ca.org, kyleslattery.com, madebyfrog.com,    melly.me, nikolay.bg, tom.preston-werner.com, whistleandfish.com, and wilsonminer.com — annotated and illustrated. <a href="http://op111.net/72" title="View post Eight website/weblog designs I enjoy" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<p>... and that I would probably try to steal from if I ever, against all reason, decided to do a proper website design myself.  I hope you’ll enjoy them too! <span id="more-72"></span></p>

<p><em>Click on the links to visit the websites or on the thumbnails to see the full-size captures.</em>
<em>You can navigate between captures by hitting the Left and Right arrow buttons on your keyboard.</em></p>

<h2>en-ca.org</h2>

<p><a href="http://en-ca.org/" title="Homepage of the book “Organizing Our Marvellous Neighbours” [en-ca.org]">en-ca.org</a> is a two-page website for a book on Canadian-English orthography.  Its front page uses a single font, Constantia.  The manicule/index image is a nice touch.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/en-ca.org-20091126-fx37-win.png" title="en-ca.org in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/en-ca.org-20091126-fx37-win-256x302.png" alt="en-ca.org in Firefox 3.7 for Windows, November 2009" title="en-ca.org in Firefox 3.7 for Windows, November 2009" width="256" height="302" class="alignnone size-medium wp-image-645" /></a></p>

<p><a href="http://en-ca.org/" title="Homepage of the book “Organizing Our Marvellous Neighbours” [en-ca.org]">Visit en-ca.org!</a></p>

<h2>kyleslattery.com</h2>

<p><a href="http://www.kyleslattery.com/" title="Website and weblog of Kyle Slattery [kyleslattery.com]">kyleslattery.com</a>, the custom-built website of Kyle Slattery, has one of the best navigation bars I’ve seen.  See the drop-down menu on the first screenshot:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/kyleslattery.com-20091126-fx35-linux.png" title="kyleslattery.com, homepage with drop-down menu activated, in Firefox 3.5 for Linux, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/kyleslattery.com-20091126-fx35-linux-256x320.png" alt="kyleslattery.com, homepage with drop-down menu activated, in Firefox 3.5 for Linux, November 2009" title="kyleslattery.com, homepage with drop-down menu activated, in Firefox 3.5 for Linux, November 2009" width="256" height="320" class="alignnone size-medium wp-image-654" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/kyleslattery.com-20091127-photopost-fx37-win.png" title="kyleslattery.com, photopost, in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/kyleslattery.com-20091127-photopost-fx37-win-256x321.png" alt="kyleslattery.com, photopost, in Firefox 3.7 for Windows, November 2009" title="kyleslattery.com, photopost, in Firefox 3.7 for Windows, November 2009" width="256" height="321" class="alignnone size-medium wp-image-652" /></a></p>

<p><a href="http://www.kyleslattery.com/" title="Website and weblog of Kyle Slattery [kyleslattery.com]">Visit kyleslattery.com!</a></p>

<h2>madebyfrog.com</h2>

<p>This is the homepage of the <a href="http://www.madebyfrog.com/" title="Homepage of the Frog CMS (Content Management System) [madebyfrog.com]">Frog CMS</a>, and it makes me want to try this CMS.  (Not something I will say for many publishing platforms.)  Built with Frog&nbsp;CMS.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/madebyfrog-20091127-fx35-linux.png" title="madebyfrog.org in Firefox 3.5 for Linux, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/madebyfrog-20091127-fx35-linux-256x192.png" alt="madebyfrog.org in Firefox 3.5 for Linux, November 2009" title="madebyfrog.org in Firefox 3.5 for Linux, November 2009" width="256" height="192" class="alignnone size-medium wp-image-658" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/madebyfrog-20091128-about-fx37-win.png" title="madebyfrog.org, About page, in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/madebyfrog-20091128-about-fx37-win-256x192.png" alt="madebyfrog.org, About page, in Firefox 3.7 for Windows, November 2009" title="madebyfrog.org, About page, in Firefox 3.7 for Windows, November 2009" width="256" height="192" class="alignnone size-medium wp-image-657" /></a></p>

<p><a href="http://www.madebyfrog.com/" title="Homepage of the Frog CMS (Content Management System) [madebyfrog.com]">Visit madebyfrog.com!</a></p>

<h2>melly.me</h2>

<p>Text shadows are often used in web design without thought or reason, with results that range from indifferent to bad.  In <a href="http://melly.me/" title="Homepage and weblog of Melissa Ward">melly.me</a> <code>text-shadow</code>—and transparency—are a successful and integral part of the design.  On the left is the home page; on the right the Archives and Tags page.  Built with Habari.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/melly.me-20091126-fx37-win.png" title="melly.me in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/melly.me-20091126-fx37-win-256x298.png" alt="melly.me in Firefox 3.7 for Windows, November 2009" title="melly.me in Firefox 3.7 for Windows, November 2009" width="256" height="298" class="alignnone size-medium wp-image-647" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/melly.me-20091126-archives-tags-fx37-win.png" title="melly.me, Archives and Tags page, in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/melly.me-20091126-archives-tags-fx37-win-256x241.png" alt="melly.me, Archives and Tags page, in Firefox 3.7 for Windows, November 2009" title="melly.me, Archives and Tags page, in Firefox 3.7 for Windows, November 2009" width="256" height="241" class="alignnone size-medium wp-image-646" /></a></p>

<p><a href="http://melly.me/" title="Homepage and weblog of Melissa Ward">Visit melly.me!</a></p>

<h2>nikolay.bg</h2>

<p>Black/Red/White schemes are common but they are also difficult to get right;  the result can easily get jarring or too stark.  <a href="http://nikolay.bg/" title="The website/weblog of Nikolay Bachiyski [nikolay.bg]">nikolay.bg</a>, the website of Nikolay Bachiyski, gets it right.  Also, like all designs in this selection, it makes good use of white space.  Built with WordPress.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/nikolay.bg-20091126-fx37-win.png" title="nikolay.bg in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/nikolay.bg-20091126-fx37-win-256x384.png" alt="nikolay.bg in Firefox 3.7 for Windows, November 2009" title="nikolay.bg in Firefox 3.7 for Windows, November 2009" width="256" height="384" class="alignnone size-medium wp-image-660" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/nikolay.bg-20091127-archives-fx35-linux.png" title="nikolay.bg, part of Archives page, in Firefox 3.5 for Linux, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/nikolay.bg-20091127-archives-fx35-linux-256x256.png" alt="nikolay.bg, part of Archives page, in Firefox 3.5 for Linux, November 2009" title="nikolay.bg, part of Archives page, in Firefox 3.5 for Linux, November 2009" width="256" height="256" class="alignnone size-medium wp-image-659" /></a></p>

<p><a href="http://nikolay.bg/" title="The website/weblog of Nikolay Bachiyski [nikolay.bg]">Visit nikolay.bg!</a></p>

<h2>tom.preston-werner.com</h2>

<p><a href="http://tom.preston-werner.com/" title="The personal website of Tom Preston-Werner [tom.preston-werner.com]">tom.preston-werner.com</a> has a functional and inviting front page:  Just a series of title links that you want to click on.  (Why aren’t more blogs like this?)  Its individual article pages use full paragraph justification without hyphenation but they somehow <em>almost</em> get away with it thanks to the relatively wide lines.  Built with Jekyll.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/tom.preston-werner.com-20091126-fx37-win.png" title="tom.preston-werner.com in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/tom.preston-werner.com-20091126-fx37-win-256x276.png" alt="tom.preston-werner.com in Firefox 3.7 for Windows, November 2009" title="tom.preston-werner.com in Firefox 3.7 for Windows, November 2009" width="256" height="276" class="alignnone size-medium wp-image-651" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/tom.preston-werner.com-20091127-article-fx35-linux.png" title="tom.preston-werner.com, part of Article page, in Firefox 3.5 for Linux, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/tom.preston-werner.com-20091127-article-fx35-linux-256x192.png" alt="tom.preston-werner.com, part of Article page, in Firefox 3.5 for Linux, November 2009" title="tom.preston-werner.com, part of Article page, in Firefox 3.5 for Linux, November 2009" width="256" height="192" class="alignnone size-medium wp-image-661" /></a></p>

<p><a href="http://tom.preston-werner.com/" title="The personal website of Tom Preston-Werner [tom.preston-werner.com]">Visit tom.preston-werner.com!</a></p>

<h2>whistleandfish.com</h2>

<p><a href="http://whistleandfish.com/" title="The website of Harry Haller [whistleandfish.com]">whistleandfish.com</a> has a beautiful header, while its paragraphs are among the most readable I’ve seen.  Its typography also serves as a reminder that fancy font options is not something good design can’t live without.  The fonts on the left are Liberation Serif and Liberation Sans (the fallback defaults for serif and sans-serif in my Linux desktop).  The page on the right uses Georgia and Verdana (Verdana is second after Helvetica Neue in the sans-serif stack).  Built with WordPress.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/whistleandfish.com-20091127-article-fx35-linux.png" title="whistleandfish.com, Article page, in Firefox 3.5 for Linux, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/whistleandfish.com-20091127-article-fx35-linux-256x371.png" alt="whistleandfish.com, Article page, in Firefox 3.5 for Linux, November 2009" title="whistleandfish.com, Article page, in Firefox 3.5 for Linux, November 2009" width="256" height="371" class="alignnone size-medium wp-image-662" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/whistleandfish.com-20091128-fx37-win.png" title="whistleandfish.com in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/whistleandfish.com-20091128-fx37-win-256x240.png" alt="whistleandfish.com in Firefox 3.7 for Windows, November 2009" title="whistleandfish.com in Firefox 3.7 for Windows, November 2009" width="256" height="240" class="alignnone size-medium wp-image-663" /></a></p>

<p><a href="http://whistleandfish.com/" title="The website of Harry Haller [whistleandfish.com]">Visit whistleandfish.com!</a></p>

<h2>wilsonminer.com</h2>

<p>I never would have thought that I would enjoy a site whose front page is in a shade of violet (amethyst in this case).  Yet the colour is what I like most in <a href="http://www.wilsonminer.com/" title="The personal website of Wilson Miner [wilsonminer.com]">wilsonminer.com</a>.  I would like its individual pages more if they didn’t use indentation to distinguish paragraphs.  Built with Django.</p>

<p><a href="http://op111.net/wp-content/uploads/2009/11/wilsonminer.com-20091127-fx35-linux.png" title="wilsonminer.com in Firefox 3.5 for Linux, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/wilsonminer.com-20091127-fx35-linux-256x510.png" alt="wilsonminer.com in Firefox 3.5 for Linux, November 2009" title="wilsonminer.com in Firefox 3.5 for Linux, November 2009" width="256" height="510" class="alignnone size-medium wp-image-648" /></a>
<a href="http://op111.net/wp-content/uploads/2009/11/wilsonminer.com-20091126-article-fx37-win.png" title="wilsonminer.com, part of Article page, in Firefox 3.7 for Windows, November 2009" rel="lightbox[72]" rel="lightbox[72]"><img src="http://op111.net/wp-content/uploads/2009/11/wilsonminer.com-20091126-article-fx37-win-256x384.png" alt="wilsonminer.com, part of Article page, in Firefox 3.7 for Windows, November 2009" title="wilsonminer.com, part of Article page, in Firefox 3.7 for Windows, November 2009" width="256" height="384" class="alignnone size-medium wp-image-649" /></a></p>

<p><a href="http://www.wilsonminer.com/" title="The personal website of Wilson Miner [wilsonminer.com]">Visit wilsonminer.com!</a></p>

<h2>Notes</h2>

<p>Screenshots are from Firefox 3.5 for Linux and Firefox 3.7 for Windows.  (Hover over the images to see which is which.)</p>

<h3>Related</h3>

<ul><li><a href="http://op111.net/63" rel="bookmark" title="3 Nov 2008">WordPress 2.7: Ten useful new features</a></li>

<li><a href="http://op111.net/60" rel="bookmark" title="5 Oct 2008">An easy style-switcher for WordPress. How-to</a></li>

<li><a href="http://op111.net/65" rel="bookmark" title="1 Dec 2008">Tangofy: Better icons for WordPress 2.7 and 2.8</a></li>

<li><a href="http://op111.net/53" rel="bookmark" title="28 Aug 2008">How to make a child theme for WordPress: A pictorial introduction for beginners</a></li>
</ul>

<!-- Similar Posts took 9.914 ms -->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/72&title=Eight website/weblog designs I enjoy">del.icio.us</a></p>
<hr />
<p>© 2009 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/72">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/ycoFpYwhDxE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/72/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8: What’s new</title>
		<link>http://op111.net/71</link>
		<comments>http://op111.net/71#comments</comments>
		<pubDate>Sat, 23 May 2009 14:00:03 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[screenshots]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wp2.7]]></category>
		<category><![CDATA[wp2.8]]></category>
		<category><![CDATA[αγγλικά]]></category>

		<guid isPermaLink="false">http://op111.net/?p=71</guid>
		<description><![CDATA[An illustrated tour of the new features and improvements in WordPress 2.8. <a href="http://op111.net/71" title="View post WordPress 2.8: What’s new" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: WordPress 2.8: What’s new-->

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

<!--id: 71-->

<!--INTRODUCTION -->

<p>After six months in preparation, the first beta version of WordPress 2.8 was released on 16 May 2009.  Following WordPress 2.7, which focused mainly on the UI, WordPress 2.8 brings changes that are more evenly distributed across all areas.  There are big improvements in the user interface, but there is a much larger amount of not immediately obvious improvements in two main areas: <span id="more-71"></span></p>

<ul>
<li>Extensibility</li>
<li>Optimization/Performance</li>
</ul>

<p>Also, many bug fixes and enhancements, big and small:  <a href="http://groups.google.com/group/wp-hackers/browse_thread/thread/73238e6074c60218" title="New milestone: 10000 tickets, by Xavier Borderie at the wp-hackers list [groups.google.com]">This version saw more tickets opened and, most importantly, closed than any other version of WordPress before.</a>  The closed tickets are almost 800 at this moment. — All in all, WordPress 2.8 is a <em>better</em> tool than WordPress 2.7.</p>

<p>A NOTE ON COMPATIBILITY</p>

<p>In general, backward compatibility seems good.  With two exceptions (one theme that broke itself and another that broke WordPress) all themes I’ve tried work well.  Same with plugins:  A few have problems but most work well.  If it is any indication, <a href="http://op111.net/about/plugins-used" title="WordPress plugins used in op111.net [op111.net]">of the plugins used in op111.net</a> only one explicitly supports WP 2.8 at this moment;  yet, all work without problems.  (op111.net has been running on development snapshots of v.&nbsp;2.8 since March.)</p>

<p>On to what’s new, in alphabetical order&hellip;</p>

<h3>Accessibility improvements</h3>

<p>WordPress 2.8 brings several improvements, big and small, to accessibility.  A lot of work went into two areas in particular:</p>

<ol>
<li>Adding labels and alternative text to input elements that did not have them.</li>
<li>Making the functionality of the new Widgets UI (more on that later) fully available without JavaScript.</li>
</ol>

<h3>Authentication: more pluggable</h3>

<p>The authentication mechanism is now improved, so that authentication methods like OpenID and authorization methods like <abbr title="An Open protocol for secure Authorization">OAuth</abbr> can cooperate easier with it (without replacing it and then having to deal with other issues).  Read more:</p>

<ul>
<li><a href="http://willnorris.com/2009/03/authentication-in-wordpress-28" title="What is new in WorPress 2.8 authentication, by Will Norris [willnorris.com]">Authentication in WordPress 2.8 — Will Norris</a></li>
<li><a href="http://core.trac.wordpress.org/ticket/8938" title="[core.trac.wordpress.org]">#8938 (Use new filter for extending WordPress authentication) – WordPress Trac</a></li>
</ul>

<p>Improvements in this area also pave the way for <abbr title="An Open protocol for secure Authorization">OAuth</abbr> support in the core (which will probably come in ver.&nbsp;2.9).</p>

<h3>Columnification and pagination in Screen Options</h3>

<p>Screen Options has two new options, depending on the type of screen:</p>

<ol>
<li>Number of columns</li>
<li>Number of items per page</li>
</ol>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-screen-options-1.png" title="WordPress 2.8, Option to select number of columns in Dashboard" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-screen-options-1-160x120.png" alt="WordPress 2.8, Option to select number of columns in Dashboard" title="WordPress 2.8, Option to select number of columns in Dashboard" width="160" height="120" class="alignnone size-medium wp-image-602" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-screen-options-2.png" title="WordPress 2.8, Option to select number of columns in the Edit Post screen" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-screen-options-2-160x120.png" alt="WordPress 2.8, Option to select number of columns in the Edit Post screen" title="WordPress 2.8, Option to select number of columns in the Edit Post screen" width="160" height="120" class="alignnone size-medium wp-image-603" /> </a><a href="http://op111.net/wp-content/uploads/2009/05/wp28-screen-options-3.png" title="WordPress 2.8, Option to select number of displayed items in Edit Pages" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-screen-options-3-160x120.png" alt="WordPress 2.8, Option to select number of displayed items in Edit Pages" title="WordPress 2.8, Option to select number of displayed items in Edit Pages" width="160" height="120" class="alignnone size-medium wp-image-604" /></a></p>

<p>Items per page is the one I’ve found more useful, but I can imagine columnification would be very useful too in some situations, e.g. on a netbook with an 800×480 display.</p>

<h3>CSS: new dynamic classes with <code>body_class()</code></h3>

<p>Dynamic CSS classes were first brought to WordPress by the innovative <a href="http://www.plaintxt.org/themes/sandbox/" title="Sandbox, a theme for WordPress [plaintxt.org]">Sandbox</a> of Scott Wallick and Andy Skelton, offering a simple way to modify to any extend the appearance of a WordPress site by CSS alone.  They offer possibilities that would otherwise require JavaScript or PHP.</p>

<p>WordPress 2.7 added dynamic CSS classes for the post div(ision).  Version&nbsp;2.8 adds dynamic classes for the body element too.  Both implementations were based on Sandbox.</p>

<p><em>For theme authors</em>.  To add this to a theme, simply open the <code>body</code> element like so:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;body <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #7f7f00;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'body_class'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> body_class<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&gt;</pre></div></div>


<p>More on the <code>body_class()</code> function:</p>

<ul>
<li><a href="http://www.nathanrice.net/blog/wordpress-2-8-and-the-body_class-function/" title="Nathan Rice on dynamic CCS classes in WordPress 2.8 [nathanrice.net]">WordPress 2.8 and the body_class() function — Nathan Rice</a></li>
</ul>

<h3>Feed links for everything</h3>

<p>WordPress 2.8 automatically adds feed links specific to the page viewed.  For example, when you view the archive of the category Cooking, it adds a feed link for that category.  When you view the archive for author Cyrus, it adds a feed link for that author, etc.:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-feed-links.png" title="Automatic autodiscoverable feed links in WordPress 2.8" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-feed-links-160x128.png" alt="Automatic autodiscoverable feed links in WordPress 2.8" title="Automatic autodiscoverable feed links in WordPress 2.8" width="160" height="128" class="alignnone size-medium wp-image-596" /></a></p>

<p><em>For theme authors</em>.  The two main feed links—all posts and all comments—are not added automatically.  To let WP add them too, put the <code>automatic_feed_links()</code> function (defined in <a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/general-template.php" title="wp-includes/general-template.php at the WordPress code repository [core.trac.wordpress.org]">general-template.php</a>) in your functions.php.</p>

<p><em>Note</em>.  <a href="http://scribu.net/wordpress/extra-feed-links/" title="A WordPress plugin for extra autodiscoverable feed links [scribu.net]">Extra Feed Links</a>, a plugin by scribu, adds the same functionality to earlier WP versions.</p>

<h3>JavaScript at the bottom</h3>

<p>JavaScript files properly registered via the appropriate script <abbr title="Application Programming Interface">API</abbr> can now be placed at the bottom of the page.  In most cases this is preferable, because JavaScript blocks parallel downloads (browsers need to evaluate it before proceeding) and can delay the time by which a page is usable and also the time by which the rendering is complete.  So, unless a JavaScript file needs to be at the top, it can be moved to the bottom for better performance.</p>

<p><em>For plugin/theme authors</em>.  This is done with a new optional argument in the <code>wp_enqueue_script()</code> function.  The argument defaults to “false” (<em>not</em> in the footer). To put a script in the footer, set it to “true”.  E.g.:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">wp_enqueue_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'script_handle'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'script/url/file.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p>More:</p>

<ul>
<li><a href="http://wpdevel.wordpress.com/2009/02/06/script-loader-updates/" title="[wpdevel.wordpress.com]">Script loader updates « WordPress Development Updates</a></li>
<li><a href="http://lesterchan.net/wordpress/2009/01/26/loading-javascript-in-footer-in-wordpress-28/" title="[lesterchan.net]">Loading JavaScript In Footer In WordPress 2.8 « Lester Chan’s WordPress Plugins</a></li>
</ul>

<h3>LiveJournal Importer: Redone and improved</h3>

<p>Importing a LiveJournal blog into a WordPress 2.8 blog is easier and more complete thanks to the rewritten LiveJournal Importer, which uses the LiveJournal <abbr title="Application Programming Interface">API</abbr>.  Read more:</p>

<ul>
<li><a href="http://dentedreality.com.au/2009/02/livejournal-importer-for-wordpress/" title="The new LivJournal Importer for Wordpress [dentedreality.com.au]">The All-New LiveJournal Importer for WordPress « Dented Reality</a></li>
</ul>

<h3>Minification and concatenation of CSS and JS&hellip;</h3>

<p>&hellip; or, <em>faster admin pages</em>.</p>

<p>Most CSS and JavaScript files in the administration area are now concatenated (chained together into one file) and, depending on the server setup, compressed too.  Javascript files are also minified.  Using minification, concatenation and compression improves performance in two ways:</p>

<ol>
<li>The total size of files to get is reduced.</li>
<li>The browser requests fewer files from the server.</li>
</ol>

<p>This kind of optimization could prove even more beneficial to the frontend (the public part of a website).  Of course, things can become more complex there, but the current impementation could serve as a testing ground for applying something similar to the frontend at a later time.</p>

<p><em>What is minification?</em>  Minification is the practice of removing from a file bits useful to humans but unneeded for machine execution, like comments, spaces, line breaks and indentation.  On the web it is used mainly for CSS and JS files, to reduce the amount of bytes sent from the server to the browser.</p>

<h3>Plugin Installer</h3>

<p>The plugin browser/installer was first introduced in the previous version, six months ago.  I’m including it here for two reasons:</p>

<ol>
<li>It seems it’s not very well known yet&hellip;</li>
<li>It’s been improved in v. 2.8.  In the meantime, the search mechanism of wordpress.org was improved too, and now the whole system works much better.</li>
</ol>

<p>Here is how to install a plugin in the new way:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-1.png" title="Installing a plugin in WordPress 2.8, Step 1" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-1-160x120.png" alt="Installing a plugin in WordPress 2.8, Step 1" title="Installing a plugin in WordPress 2.8, Step 1" width="160" height="120" class="alignnone size-medium wp-image-606" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-2.png" title="Installing a plugin in WordPress 2.8, Step 2" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-2-160x120.png" alt="Installing a plugin in WordPress 2.8, Step 2" title="Installing a plugin in WordPress 2.8, Step 2" width="160" height="120" class="alignnone size-medium wp-image-607" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-3.png" title="Installing a plugin in WordPress 2.8, Step 3" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-3-160x120.png" alt="Installing a plugin in WordPress 2.8, Step 3" title="Installing a plugin in WordPress 2.8, Step 3" width="160" height="120" class="alignnone size-medium wp-image-608" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-4.png" title="Installing a plugin in WordPress 2.8, Step 4" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-4-160x120.png" alt="Installing a plugin in WordPress 2.8, Step 4" title="Installing a plugin in WordPress 2.8, Step 4" width="160" height="120" class="alignnone size-medium wp-image-609" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-5.png" title="Installing a plugin in WordPress 2.8, Step 5" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-5-160x120.png" alt="Installing a plugin in WordPress 2.8, Step 5" title="Installing a plugin in WordPress 2.8, Step 5" width="160" height="120" class="alignnone size-medium wp-image-610" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-6.png" title="Installing a plugin in WordPress 2.8, Done!" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugin-install-6-160x120.png" alt="Installing a plugin in WordPress 2.8, Done!" title="Installing a plugin in WordPress 2.8, Done!" width="160" height="120" class="alignnone size-medium wp-image-605" /></a></p>

<h3>Plugins management</h3>

<p>The plugins manager was retouched, and is still being worked on at this writing.  It now offers views/filters by plugin state, which I’ve found to be very convenient:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-plugins-manage.png" title="WordPress 2.8, Plugins management" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-plugins-manage-160x120.png" alt="WordPress 2.8, Plugins management" title="WordPress 2.8, Plugins management" width="160" height="120" class="alignnone size-medium wp-image-611" /></a></p>

<h3>Pretty permalinks for IIS 7</h3>

<p>IIS 7, the current version of the Microsoft web server, recently got an official rewrite module and can now do URL rewriting like Apache does.  WordPress 2.8 detects if the server is IIS 7 <em>with</em> the rewrite module and offers the option to use fully pretty permalinks with IIS 7 too — not just the semi-pretty ones with <em>index.php</em> in the middle.  Read more:</p>

<ul>
<li><a href="http://blogs.iis.net/ruslany/archive/2009/05/16/iis-7-url-rewrite-module-support-in-wordpress-2-8.aspx" title="[blogs.iis.net]">IIS 7 URL Rewrite Module support in WordPress 2.8 : Ruslan’s Blog : The Official Microsoft IIS Site</a></li>
</ul>

<h3>Proxy support</h3>

<p>Easy proxy support (without editing core files) had been missing from WordPress and was a frequent request.  Now it is part of the WordPress HTTP <abbr title="Application Programming Interface">API</abbr>.  You enable it by defining a few constants in wp-config.php.</p>

<p>The documentation for this, along with an example, can for now be found in the file <a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/http.php" title="wp-includes/http.php at the WordPress code repository [core.trac.wordpress.org]">wp-includes/http.php</a> (look for the <code>WP_HTTP_Proxy</code> class).</p>

<h3>Quotation marks locale-aware</h3>

<p>WordPress has a smart typography filter that, among other things, replaces ASCII quotes—&quot;like these&quot;—with proper quotation marks “like these”.  Before v.&nbsp;2.8 this filter only knew about quotation marks as used in American English.</p>

<p>Now translators can specify the appropriate quotation marks for a language, and, if you use a localized version, they will be used instead.  For example, «αβγδ» for Greek, „abcd“ for German, and so on and so forth.</p>

<h3>Relational navigation links</h3>

<p>A relational link in an HTML document points to another document and states its relation with the current document.  Examples of such links that are used for navigation are “prev” (previous in a series) and “index” (index for current).  Browsers can use them to offer an interface for navigation, much like they do when they show an icon/menu in the URL address bar for the feed links in a document.</p>

<p>WordPress 2.8 generates four types of relational navigation links:  home, index, prev, next.  If your browser supports such links (not many do, at least natively), you’ll be seeing them more often as WordPress sites upgrade to v. 2.8:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-nav-links.png" title="Relational navigation links in WordPress 2.8" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-nav-links-160x120.png" alt="Relational navigation links in WordPress 2.8" title="Relational navigation links in WordPress 2.8" width="160" height="120" class="alignnone size-medium wp-image-590" /></a></p>

<p>An interesting possibility of relational links is that browsers can also use them as hints to prefetch (predownload) a page, cache it, and then serve it from the cache, for better speed.  Firefox—<a href="http://stevesouders.com/ua/" title="UA Profiler: A community-driven project for gathering browser performance characteristics [stevesouders.com]">the only browser that does link prefetching currently</a>—<a href="https://developer.mozilla.org/en/Link_prefetching_FAQ" title="Link Prefetching FAQ at the Mozilla Developer Documentation [developer.mozilla.org]">does this with relational links of the type <code>next</code></a>. (I have not been able to verify if it works in WordPress sites.)</p>

<h3>Smilies:  Now faster!</h3>

<p>Version 2.8 cuts in half the time needed to convert text smilies to image smilies!&nbsp;:-o  The faster code is also availabe as a plugin for WordPress 2.7:  <a href="http://devel.kostdoktorn.se/faster-smilies/" title="Homepage of Faster Smilies, a plugin for WordPress [devel.kostdoktorn.se]">Faster Smilies</a></p>

<p>(Of course, you can always turn graphical smilies off in Settings › Writing › Formatting, and WordPress will be even faster!)</p>

<h3>Theme Installer</h3>

<p>Installing themes in v.&nbsp;2.8 is as quick and easy as installing plugins is in v.&nbsp;2.7:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-1.png" title="Installing themes in WordPress 2.8, Step 1" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-1-160x120.png" alt="Installing themes in WordPress 2.8, Step 1" title="Installing themes in WordPress 2.8, Step 1" width="160" height="120" class="alignnone size-medium" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-2.png" title="Installing themes in WordPress 2.8, Step 2" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-2-160x120.png" alt="Installing themes in WordPress 2.8, Step 2" title="Installing themes in WordPress 2.8, Step 2" width="160" height="120" class="alignnone size-medium" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-3.png" title="Installing themes in WordPress 2.8, Step 3" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-3-160x120.png" alt="Installing themes in WordPress 2.8, Step 3" title="Installing themes in WordPress 2.8, Step 3" width="160" height="120" class="alignnone size-medium" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-4.png" title="Installing themes in WordPress 2.8, Step 4" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-theme-installer-4-160x120.png" alt="Installing themes in WordPress 2.8, Step 4" title="Installing themes in WordPress 2.8, Step 4" width="160" height="120" class="alignnone size-medium" /></a></p>

<h3>Theme/Plugin Editor with highlighting and lookup</h3>

<p>I was never fond of this feature of WP:  I don’t see any need for it and I also think that it encourages bad habits.  But others like it.  They’ll be happy to know that the theme/plugin editor is now improved, with syntax highlighting and function lookup:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-theme-plugin-editor.png" title="Theme/Plugin Editor in WordPress 2.8" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-theme-plugin-editor-160x120.png" alt="Theme/Plugin Editor in WordPress 2.8" title="Theme/Plugin Editor in WordPress 2.8" width="160" height="120" class="alignnone size-medium wp-image-589" /></a></p>

<p><em>Note</em>.  In Chrome and Safari you’ll see the plain old text area without fancy colours.  These two browsers (that share the same rendering engine) are not supported at the moment.</p>

<h3>Timezone selection and DST</h3>

<p>Settings › General had been displaying for a long time this apologetic message:</p>

<blockquote>
  <p>Unfortunately, you have to manually update this for Daylight Savings Time.
    Lame, we know, but will be fixed in the future.</p>
</blockquote>

<p>Well, the future is here! :-D  Now you only need to enter your location:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-timezone-dst.png" title="WordPress 2.8 adjusts to DST automatically" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-timezone-dst-160x80.png" alt="WordPress 2.8 adjusts to DST automatically" title="WordPress 2.8 adjusts to DST automatically" width="160" height="80" class="alignnone size-medium wp-image-588" /></a></p>

<p><em>Note</em>.  Automatic DST adjustment uses functions that were introduced in version 5.1.0 of PHP.  So, you won’t see it if your server has an older version.  (The minimum requirement to use WordPress remains PHP 4.3.)</p>

<ul>
<li><a href="http://ottodestruct.com/blog/wordpress-plugins/automatic-timezone/" title="Automatic timezone and DST adjustment for WordPress 2.5, 2.6 and 2.7 [ottodestruct.com]">Automatic Timezone</a> is the plugin on which this enchancement was based.  It adds the same functionality to WordPress 2.5, 2.6 and 2.7.</li>
</ul>

<h3>Widgets <abbr title="Application Programming Interface">API</abbr>: new and multiple-instance</h3>

<p>Another part rewritten in v. 2.8 is the Widgets <abbr title="Application Programming Interface">API</abbr>.  Writing widgets is now simpler and, importantly, widgets based on the new <abbr title="Application Programming Interface">API</abbr> are multiple-instance by default, like the Text/HTML widget in previous versions.  (Writing multiple-instance widgets was already possible but convoluted.)  Read more in this announcement by Ryan Boren:</p>

<ul>
<li><a href="http://groups.google.com/group/wp-hackers/browse_thread/thread/25dd6a6424b71fcb" title="New Widgets API on the wp-hackers list, by Ryan Boren [groups.google.com]">New Widgets <abbr title="Application Programming Interface">API</abbr> - wp-hackers | Google Groups</a></li>
</ul>

<p>As a bonus, the new function <code>the_widget()</code> lets you display the output of a widget anywhere in a template.</p>

<h3>Widgets management UI: Redone, much improved</h3>

<p>This took a lot of work and is, in my estimation, the most important improvement in the user interface of WordPress 2.8.</p>

<p>The new Widgets manager:</p>

<ol>
<li>Does everything by simple drag ’n’ drop (and is fully functional without JavaScript too).</li>
<li>Has better memory/storage:  You can deactivate a widget without losing its configuration, and widgets that are deactivated automatically retain their configurations too.</li>
</ol>

<p>Also, thanks to the new Widgets <abbr title="Application Programming Interface">API</abbr>, widgets can now have multiple instances.  You can add a widget as many times as you wish.</p>

<p>See the screenshots:</p>

<p><a href="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-1-overview.png" title="Widgets management in WordPress 2.8, Overview" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-1-overview-160x120.png" alt="Widgets management in WordPress 2.8, Overview" title="Widgets management in WordPress 2.8, Overview" width="160" height="120" class="alignnone size-medium wp-image-598" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-2-help.png" title="Widgets management in WordPress 2.8, Contextual help" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-2-help-160x120.png" alt="Widgets management in WordPress 2.8, Contextual help" title="Widgets management in WordPress 2.8, Contextual help" width="160" height="120" class="alignnone size-medium wp-image-599" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-3-drag.png" title="Widgets management in WordPress 2.8, Drag ’n’ Drop" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-3-drag-160x120.png" alt="Widgets management in WordPress 2.8, Drag ’n’ Drop" title="Widgets management in WordPress 2.8, Drag ’n’ Drop" width="160" height="120" class="alignnone size-medium wp-image-600" /></a> <a href="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-4-inactive.png" title="Widgets management in WordPress 2.8, Inactive Widgets area" rel="lightbox[71]" rel="lightbox[71]"><img src="http://op111.net/wp-content/uploads/2009/05/wp28-widgets-4-inactive-160x120.png" alt="Widgets management in WordPress 2.8, Inactive Widgets area" title="Widgets management in WordPress 2.8, Inactive Widgets area" width="160" height="120" class="alignnone size-medium wp-image-601" /></a></p>

<h3>That was it!</h3>

<p>If you think I left out some important feature, please leave a comment to say so.  If you want to try test versions of WordPress 2.8 as they come out, watch the official blog:  <a href="http://wordpress.org/development/" title="The official WordPress blog [wordpress.org]">wordpress.org/development</a> — Usual warnings apply, of course:  This is not a final product!  Do <strong>not</strong> install on a live website unless you are prepared to spend time investigating and reporting bugs!</p>

<p><em>Note</em>.  The menu icons on the screenshots are not the default ones.  <a href="http://op111.net/65" title="Tangofy: Better admin menu icons for WordPress 2.7 and 2.8 [op111.net]">If you like them, you can have them too!</a></p>

<p>Thanks for reading!</p>

<p>/δκ</p>

<h3>Changes</h3>

<ul>
<li>2009-06-18.  Added <code>function_exists</code> condition to <code>body_class</code> example.</li>
<li>2009-06-11.  Locale-aware quotation marks by <code>wptexturize</code>.</li>
<li>2009-06-02.  Link to <a href="http://groups.google.com/group/wp-hackers/browse_thread/thread/73238e6074c60218" title="New milestone: 10000 tickets, by Xavier Borderie at the wp-hackers list [groups.google.com]">X. Borderie on 10.000 tickets and 2.8 dev stats</a>.  Link to <a href="http://ottodestruct.com/blog/wordpress-plugins/automatic-timezone/" title="Automatic timezone and DST adjustment for WordPress 2.5, 2.6 and 2.7 [ottodestruct.com]">Automatic Timezone</a>.</li>
<li>2009-06-01.  Link to <a href="http://www.nathanrice.net/blog/wordpress-2-8-and-the-body_class-function/" title="Nathan Rice on dynamic CCS classes in WordPress 2.8 [nathanrice.net]">N. Rice on the <code>body_class()</code> function</a>.</li>
</ul>

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

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

<!--

*   Latitude and longitude

*   LINKS TO ADD
    *   http://justintadlock.com/archives/2009/05/26/the-complete-guide-to-creating-widgets-in-wordpress-28
    *   http://perishablepress.com/press/2009/05/26/dynamic-body-class-id-php-wordpress/
    *   http://pressedwords.com/stuff-new-in-wp-2-8-for-coders/

*   Tags
*   Taxonomies : Custom
    *   http://justintadlock.com/archives/2009/05/06/custom-taxonomies-in-wordpress-28
    *   http://core.trac.wordpress.org/changeset/10557
*   wptexturize.  Quotation marks per locale.
*   Escaping API.  http://markjaquith.wordpress.com/2009/06/12/escaping-api-updates-for-wordpress-2-8/
*   jQuery

..-->

<h3>Related</h3>

<ul><li><a href="http://op111.net/63" rel="bookmark" title="3 Nov 2008">WordPress 2.7: Ten useful new features</a></li>

<li><a href="http://op111.net/74" rel="bookmark" title="8 Jan 2010">Progressive enhancement of drop-down menus with the :not CSS selector</a></li>

<li><a href="http://op111.net/56" rel="bookmark" title="19 Sep 2008">Five good WordPress plugins you may not know about</a></li>

<li><a href="http://op111.net/73" rel="bookmark" title="31 Dec 2009">Page Lists Plus: Comprehensive control of your WordPress page menu</a></li>
</ul>

<!-- Similar Posts took 7.403 ms -->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/71&title=WordPress 2.8: What’s new">del.icio.us</a></p>
<hr />
<p>© 2009 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/71">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/1RPtqQA1haQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/71/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Basic WordPress plugins</title>
		<link>http://op111.net/70</link>
		<comments>http://op111.net/70#comments</comments>
		<pubDate>Thu, 09 Apr 2009 17:38:28 +0000</pubDate>
		<dc:creator>demetris</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[beginners]]></category>
		<category><![CDATA[best]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[ellak]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[lang-en]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[pda]]></category>
		<category><![CDATA[planet-wp-en]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[recommended]]></category>
		<category><![CDATA[selection]]></category>
		<category><![CDATA[useful]]></category>
		<category><![CDATA[wp2.7]]></category>
		<category><![CDATA[wp2.8]]></category>
		<category><![CDATA[αγγλικά]]></category>
		<category><![CDATA[αρχάριοι]]></category>
		<category><![CDATA[βασικά]]></category>
		<category><![CDATA[πρόσθετα]]></category>
		<category><![CDATA[χρήσιμα]]></category>

		<guid isPermaLink="false">http://op111.net/?p=70</guid>
		<description><![CDATA[A selection of plugins that extend and improve WordPress in basic ways and that every WordPress user should know about. <a href="http://op111.net/70" title="View post Basic WordPress plugins" rel="bookmark">More...</a>]]></description>
			<content:encoded><![CDATA[<!--nm: Basic WordPress plugins-->

<!--sl: wp-plugins-basic-->

<!--id: 70-->

<p>UPDATED 2009-06-17</p>

<p>WordPress plugins are like Firefox extensions:  there are thousands—literally!—and there is one for everything.  If you can think of a way to modify or extend Firefox or WordPress, most likely someone else has already thought about it and made it into an extension or a plugin. <span id="more-70"></span></p>

<p>This is great, but it can also be confusing, especially when you start:  “I found 5 plugins for this or that.  Good!  Which one to use now?”  Or:  “What plugins to install to make my site better for me and my visitors?”  This list of plugins is meant to answer questions like these, questions that beginners in WordPress usually have.</p>

<p>I put together a selection of <em>plugins that improve and extend WordPress in basic ways</em> and that I think every WordPress user should know about.  That is, not “the best plugins” (although all are among the best) or “must-have plugins” (no plugin is a “must-have” in general), but plugins I consider just that:  <em>Basic!</em></p>

<p>Since a selection like this is bound to be subjective to a point, I also included the ratings from WordPress.org for a quick objectivity check.</p>

<p>Enjoy, and ask away if you have questions!</p>

<p>GENERAL NOTES</p>

<ul>
<li>All plugins are plug-and-play; <em>no</em> editing of templates needed</li>
<li>All are free to use and licenced under the GNU <abbr title="General Public Licence">GPL</abbr></li>
<li>All are installed with a few clicks via the WordPress Dashboard (Plugins › Add new › Search for the plugin name and click Install)</li>
<li>All work well with WordPress 2.7 and 2.8.</li>
<li>Ratings from WordPress.org are as of 7 April 2009</li>
</ul>

<p>QUICK LINKS to the <em>homepages</em> of all plugins:</p>

<ul>
<li><a href="http://www.bad-behavior.ioerror.us/" title="“Home of the Web’s premier link-spam killer” [ioerror.us]">Bad Behavior</a></li>
<li><a href="http://urbangiraffe.com/plugins/headspace2/" title="HeadSpace2, a WordPress plugin to manage metadata and more [urbangiraffe.com]">HeadSpace2</a></li>
<li><a href="http://dancameron.org/wordpress" title="Homepage of Search Everything, a WordPress plugin [dancameron.org]">Search Everything</a></li>
<li><a href="http://www.laptoptips.ca/javascripts/shutter-reloaded/" title="Home of Shutter Reloaded, a Lightbox-type plugin for WordPress [laptoptips.ca]">Shutter Reloaded</a> (or <a href="http://transientmonkey.com/wp-slimbox2" title="Home of WP-Slimbox2, a Lightbox-type plugin for WordPress [transientmonkey.com]">WP-Slimbox2</a> or <a href="http://stimuli.ca/lightbox/" title="Homepage of Lightbox 2 plugin for WordPress [stimuli.ca]">Lightbox 2</a>)</li>
<li><a href="http://rmarsh.com/plugins/similar-posts/" title="Homepage of Similar Posts, a plugin for WordPress [rmarsh.com]">Similar Posts</a> (or <a href="http://mitcho.com/code/yarpp/" title="Homepage of Yet Another Related Posts Plugin, a plugin for WordPress [mitcho.com]">YARPP</a>)</li>
<li><a href="http://txfx.net/code/wordpress/subscribe-to-comments/" title="E-mail notifications for commenters on your blog [txfx.net]">Subscribe to Comments</a></li>
<li><a href="http://www.ilfilosofo.com/blog/wp-db-backup/" title="Manual and automated backups for your WordPress database [ilfilosofo.com]">WordPress Database Backup</a></li>
<li><a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" title="Homepage of XML Sitemap Generator, a plugin for WordPress [arnebrachhold.de]">XML Sitemap Generator</a></li>
<li>Contact Form (<a href="http://wordpress.org/extend/plugins/easy-contact/" title="Easy Contact at the official WordPress repository [wordpress.org]">Easy Contact</a> or <a href="http://ideasilo.wordpress.com/2007/04/30/contact-form-7/" title="Homepage of Contact Form 7 for WordPress [ideasilo.wordpress.com]">Contact Form 7</a>)</li>
<li>Mobile WordPress (<a href="http://mobilepress.co.za/" title="Homepage of MobilePress, a plugin for WordPress [mobilepress.co.za]">MobilePress</a> or <a href="http://crowdfavorite.com/wordpress/" title="Homepage of WordPress Mobile Edition, a plugin for WordPress [crowdfavorite.com]">WordPress Mobile Edition</a> or <a href="http://imthi.com/wp-pda" title="Homepage of WordPress PDA &amp; iPhone, a WordPress plugin [imthi.com]">Wordpress PDA &amp; iPhone</a> or <a href="http://www.bravenewcode.com/wptouch/" title="WPtouch: WordPress on iPhone, iPod &amp; Android [bravenewcode.com]">WPtouch</a>)</li>
</ul>

<h3>Bad Behavior</h3>

<p>Home:  <a href="http://www.bad-behavior.ioerror.us/" title="“Home of the Web’s premier link-spam killer” [ioerror.us]">Bad Behavior</a><br />
What:  Blocks automated spam<br />
By:  <a href="http://www.ioerror.us" title="Webpage of Michael Hampton [ioerror.us]">Michael Hampton</a><br />
Version:  2.0.26<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/bad-behavior/" title="Bad Behavior at the official WordPress repository [wordpress.org]">75/100</a> by 47 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-bb2-settings.png" title="Bad Behavior 2 for WordPress, Settings" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-bb2-settings-192x173.png" alt="Bad Behavior 2 for WordPress, Settings" title="Bad Behavior 2 for WordPress, Settings" width="192" height="173" class="alignnone size-medium wp-image-573" /></a></p>

<p><a href="http://www.bad-behavior.ioerror.us/" title="“Home of the Web’s premier link-spam killer” [ioerror.us]">Bad Behavior</a> is an antispam solution that takes a different approach.  Instead of looking at the message, it examines the messenger and the delivery method:  If they are not legitimate, they are simply blocked, before they even get to submit a message.  Since most—almost all—comment spam is delivered by automated bots, this is a clever approach, and it seems to be effective too.  Bad Behavior virtually eliminates comment spam.  Optionally, it can also consult the blacklists of harversters and comment spammers maintained by the Project Honey Pot, and with this option it is even more effective.</p>

<p>One type of spam that Bad Behavior is not designed to catch is <em>manual</em> spam:  spam messages submitted by hand by humans.  For this reason, it is often used as a first line of defense in front of a plugin like Akismet.  But if you don’t receive a lot of manual spam, you may be fine with Bad Behavior alone.</p>

<p>LEARN MORE</p>

<ul>
<li><a href="http://www.bad-behavior.ioerror.us/documentation/spam-prevention-strategy/" title="[bad-behavior.ioerror.us]">Spam Prevention Strategy</a>.  The developer of Bad Behavior explains how to use the plugin as a part of an antispam strategy.</li>
<li><a href="http://www.projecthoneypot.org/?rf=52343" title="Stop Spam Harvesters, Join Project Honey Pot [projecthoneypot.org]">Project Honey Pot</a>.  To activate the http Black List in Bad Behavior, you need to register to Project Honey Pot (it’s free) and get an http:BL Access Key (it’s free).</li>
</ul>

<h3>HeadSpace2</h3>

<p>Home:  <a href="http://urbangiraffe.com/plugins/headspace2/" title="HeadSpace2, a WordPress plugin to manage metadata and more [urbangiraffe.com]">HeadSpace2</a><br />
What:  Search-engine optimization and more<br />
By:  <a href="http://urbangiraffe.com/" title="Webpage of John Godley [urbangiraffe.com]">John Godley</a><br />
Version:  3.6.19<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/headspace2/" title="HeadSpace2 at the official WordPress repository [wordpress.org]">75/100</a> by 65 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-headspace-page-settings.png" title="HeadSpace2 for WordPress, Page Settings" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-headspace-page-settings-143x192.png" alt="HeadSpace2 for WordPress, Page Settings" title="HeadSpace2 for WordPress, Page Settings" width="143" height="192" class="alignnone size-medium wp-image-568" /></a> <a href="http://op111.net/wp-content/uploads/2009/04/d70-headspace-page-modules.png" title="HeadSpace2 for WordPress, Page Modules" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-headspace-page-modules-192x179.png" alt="HeadSpace2 for WordPress, Page Modules" title="HeadSpace2 for WordPress, Page Modules" width="192" height="179" class="alignnone size-medium wp-image-567" /></a></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-headspace-site-modules.png" title="HeadSpace2 for WordPress, Site Modules" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-headspace-site-modules-192x190.png" alt="HeadSpace2 for WordPress, Site Modules" title="HeadSpace2 for WordPress, Site Modules" width="192" height="190" class="alignnone size-medium wp-image-566" /></a></p>

<p>All in all, WordPress is well optimized for search engines.  It does not need fixing and there are only a few things you can do here and here, like <a href="http://op111.net/67" title="The manual Excerpt in WordPress: What, why, how, tips and plugins [op111.net]">generating meta descriptions from post and page excerpts</a>, or adding <a href="http://www.robotstxt.org/meta.html" title="Read about the robots META tag at the Web Robots Pages [robotstxt.org]"><code>noindex</code> tags</a> to Archives, Categories etc.</p>

<p><a href="http://urbangiraffe.com/plugins/headspace2/" title="HeadSpace2, a WordPress plugin to manage metadata and more [urbangiraffe.com]">HeadSpace2</a> is perfect for this:  By default it does <em>nothing</em>, while, at the same time, it is powerful and versatile, more than any other plugin for WordPress <abbr title="Search Engine Optimization">SEO</abbr>.  So, you can use it to apply as few or as many optimizations as you want.</p>

<p>It also offers an array of extra features not directly related to <abbr title="Search Engine Optimization">SEO</abbr> but handy nevertheless, like an option to activate themes or plugins per page, or an option to display a different number of articles on the home page and on archive pages.</p>

<h3>Search Everything</h3>

<p>Home:  <a href="http://dancameron.org/wordpress" title="Homepage of Search Everything, a WordPress plugin [dancameron.org]">Search Everything</a><br />
What:  Extends the WordPress search<br />
By:  <a href="http://dancameron.org/" title="Homepage of Dan Cameron [dancameron.org]">Dan Cameron</a> and many contributors<br />
Version: 5<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/search-everything/" title="Search Everything at the official WordPress repository [wordpress.org]">78/100</a> by 93 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-search-everything.png" title="Search Everything 5 for WordPress, Options page" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-search-everything-121x192.png" alt="Search Everything 5 for WordPress, Options page" title="Search Everything 5 for WordPress, Options page" width="121" height="192" class="alignnone size-medium wp-image-565" /></a></p>

<p>The built-in search mechanism of WordPress is limited:  it only looks in the content of posts.  <a href="http://dancameron.org/wordpress" title="Homepage of Search Everything, a WordPress plugin [dancameron.org]">Search Everything</a> extends the WordPress search to pages, comments, excerpts, tags and more, and it’s very easy to configure.  To use it in its default configuration, you just activate it.  You can modify its default settings by ticking or unticking a few check boxes.</p>

<h3>Shutter Reloaded</h3>

<p>Home:  <a href="http://www.laptoptips.ca/javascripts/shutter-reloaded/" title="Home of Shutter Reloaded, a Lightbox-type plugin for WordPress [laptoptips.ca]">Shutter Reloaded</a><br />
What:  Lightbox effect for images and galleries of pictures<br />
By:  <a href="http://www.laptoptips.ca/" title="Personal homepage of Andrew Ozz [laptoptips.ca]">Andrew Ozz</a><br />
Version:  2.2<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/shutter-reloaded/" title="Shutter Reloaded at the official WordPress repository [wordpress.org]">73/100</a> by 49 people</p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-shutter-reloaded-options.png" title="Shutter Reloaded 2.2 for WordPress, Options" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-shutter-reloaded-options-168x192.png" alt="Shutter Reloaded 2.2 for WordPress, Options" title="Shutter Reloaded 2.2 for WordPress, Options" width="168" height="192" class="alignnone size-medium wp-image-572" /></a> <a href="http://op111.net/wp-content/uploads/2009/04/d70-shutter-reloaded.png" title="Shutter Reloaded 2.2 for WordPress in action" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-shutter-reloaded-192x148.png" alt="Shutter Reloaded 2.2 for WordPress in action" title="Shutter Reloaded 2.2 for WordPress in action" width="192" height="148" class="alignnone size-medium wp-image-571" /></a></p>

<p>The Lightbox effect is one of the best things JavaScript has brought to the web:  a pleasant, unobtrusive way of going from thumbnail to full-size image and of viewing slideshows.</p>

<p>Since the original Lightbox appeared in 2005, many alternative implementations have been developed and there are several plugins that adapt Lightbox implementations to WordPress.  <a href="http://www.laptoptips.ca/javascripts/shutter-reloaded/" title="Home of Shutter Reloaded, a Lightbox-type plugin for WordPress [laptoptips.ca]">Shutter Reloaded</a> is different that most in that it does not require a JavaScript framework like jQuery or MooTools, and so it is very light.  Like the two alternatives below, it is also easy to setup, has many features, it is applied automatically to images (you don’t need to change anything in your posts) and it can also group images into sets.</p>

<p>ALTERNATIVES</p>

<ul>
<li><a href="http://transientmonkey.com/wp-slimbox2" title="Home of WP-Slimbox2, a Lightbox-type plugin for WordPress [transientmonkey.com]">WP-Slimbox2</a> by  Greg Yingling, rated <a href="http://wordpress.org/extend/plugins/wp-slimbox2/" title="WP-Slimbox2 at the official WordPress repository [wordpress.org]">89/100</a> by 9 people,
brings Slimbox2 to WordPress and uses the jQuery framework.
It is a relatively new plugin at this writing (April 2009) and it seems to work very well.
(It is the one currently used in op111.net.)</li>
<li><a href="http://stimuli.ca/lightbox/" title="Homepage of Lightbox 2 plugin for WordPress [stimuli.ca]">Lightbox 2</a> by Rupert Morris, rated <a href="http://wordpress.org/extend/plugins/lightbox-2/" title="Lightbox 2 at the official WordPress repository [wordpress.org]">79/100</a> by 93 people,
has a feature that I miss in both Shutter Reloaded and WP-Slimbox2:
It takes the image titles and uses them as captions on the images.
On the downside, it requires the sizeable Prototype framework.</li>
</ul>

<h3>Similar Posts</h3>

<p>Home:  <a href="http://rmarsh.com/plugins/similar-posts/" title="Homepage of Similar Posts, a plugin for WordPress [rmarsh.com]">Similar Posts</a><br />
What:  Diplays a list of similar posts/pages<br />
By:  <a href="http://rmarsh.com/" title="Webpage of Rob Marsh, SJ [rmarsh.com]">Rob Marsh, SJ</a><br />
Version:  2.6.2<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/similar-posts/" title="Similar Posts at the official WordPress repository [wordpress.org]">83/100</a> by 24 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-similar-posts-settings-general.png" title="Similar Posts 2.6.2 for WordPress, Settings, General" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-similar-posts-settings-general-192x176.png" alt="Similar Posts 2.6.2 for WordPress, Settings, General" title="Similar Posts 2.6.2 for WordPress, Settings, General" width="192" height="176" class="alignnone size-medium wp-image-564" /></a> <a href="http://op111.net/wp-content/uploads/2009/04/d70-similar-posts-settings-other.png" title="Similar Posts 2.6.2 for WordPress, Settings, Other" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-similar-posts-settings-other-192x176.png" alt="Similar Posts 2.6.2 for WordPress, Settings, Other" title="Similar Posts 2.6.2 for WordPress, Settings, Other" width="192" height="176" class="alignnone size-medium wp-image-563" /></a></p>

<p>This may be overstretching the concept of “basic plugins”, but it is a navigational aid I enjoy in websites, and I know other people do too:  <em>A list of pages similar or related to the page I am at.</em></p>

<p><a href="http://rmarsh.com/plugins/similar-posts/" title="Homepage of Similar Posts, a plugin for WordPress [rmarsh.com]">Similar Posts</a> calculates similarity on the basis of title, content and tags, and it can display a list of similar posts/pages under the content, on the sidebar, and in RSS feeds.  Also, as can be seen on the two screenshots above, it is very customizable.</p>

<p>NOTE.  Similar Posts has not been updated yet for WordPress 2.7 and 2.8, but it works well with both.</p>

<p>ALTERNATIVE</p>

<ul>
<li><a href="http://mitcho.com/code/yarpp/" title="Homepage of Yet Another Related Posts Plugin, a plugin for WordPress [mitcho.com]">Yet Another Related Posts Plugin</a> by mitcho (Michael 芳貴 Erlewine), rated <a href="http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/" title="Yet Another Related Posts Plugin at the official WordPress repository [wordpress.org]">77/100</a> by 60 people, <!--2009-04-07-->
is very much like Similar Posts in functionality and options.
Also, its current version (v2) requires more resources than Similar Options.
The coming version 3 (currently in beta) is a major rewrite that adds a caching system to deal with this and improve performance.</li>
</ul>

<h3>Subscribe to Comments</h3>

<p>Home:  <a href="http://txfx.net/code/wordpress/subscribe-to-comments/" title="E-mail notifications for commenters on your blog [txfx.net]">Subscribe to Comments</a><br />
What:  Option for commenters to be notified of new comments<br />
By:  <a href="http://www.scriptygoddess.com/" title="Website of Scriptygoddess [scriptygoddess.com]">Scriptygoddess</a> (originally), <a href="http://markjaquith.com/" title="Homepage of Mark Jaquith [markjaquith.com]">Mark Jaquith</a> (now)<br />
Version:  2.1.2<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/subscribe-to-comments/" title="Subscribe to Comments at the official WordPress repository [wordpress.org]">73/100</a> by 172 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-stc-options.png" title="WordPress 2.8, Dashboard, Subscribe to Comments 2.1.2, Options" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-stc-options-192x187.png" alt="WordPress 2.8, Dashboard, Subscribe to Comments 2.1.2, Options" title="WordPress 2.8, Dashboard, Subscribe to Comments 2.1.2, Options" width="192" height="187" class="alignnone size-medium wp-image-562" /></a> <a href="http://op111.net/wp-content/uploads/2009/04/d70-stc.png" title="Subscribe to Comments 2.1.2 in action" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-stc-192x164.png" alt="Subscribe to Comments 2.1.2 in action" title="Subscribe to Comments 2.1.2 in action" width="192" height="164" class="alignnone size-medium wp-image-561" /></a></p>

<p>If you accept comments in your WordPress site, you must install Subcribe to Comments, at least as a courtesy to your commenters.  It adds a check box that commenters can tick to get <em>e-mail</em> notifications of new comments.</p>

<p>The same can also be achieved by subscribing to the post feed.  However:</p>

<ol>
<li>Not everyone uses feeds; and</li>
<li>The convenience of Subscribe to Comments is appreciated even by those who do</li>
</ol>

<p>If you allow comments in your site, install <a href="http://txfx.net/code/wordpress/subscribe-to-comments/" title="E-mail notifications for commenters on your blog [txfx.net]">Subscribe to Comments</a>!</p>

<h3>WordPress Database Backup</h3>

<p>Home:  <a href="http://www.ilfilosofo.com/blog/wp-db-backup/" title="Manual and automated backups for your WordPress database [ilfilosofo.com]">WordPress Database Backup</a><br />
What:  Automated and on-demand database backups<br />
By:  <a href="http://skippy.net/" title="Webpage of Scott Merrill [skippy.net]">Scott Merrill</a> (originally), <a href="http://www.ilfilosofo.com/" title="Blog of Austin Matzko [ilfilosofo.com]">Austin Matzko</a> (now)<br />
Version: 2.2.2<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/wp-db-backup/" title="WordPress Database Backup at the official WordPress repository [wordpress.org]">81/100</a> by 102 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-wp-db-backup-settings.png" title="WordPress Database Backup, Options page" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-wp-db-backup-settings-149x191.png" alt="WordPress Database Backup 2.2.2, Options page" title="WordPress Database Backup, Options page" width="149" height="191" class="alignnone size-medium wp-image-557" /></a> <a href="http://op111.net/wp-content/uploads/2009/04/d70-wp-db-backup-email.png" title="WordPress Database Backup 2.2.2, E-mail delivery" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-wp-db-backup-email-192x153.png" alt="WordPress Database Backup, E-mail delivery" title="WordPress Database Backup 2.2.2, E-mail delivery" width="192" height="153" class="alignnone size-medium wp-image-558" /></a></p>

<p>Good webhosts backup automatically the sites they host.  Even so, having copies of your database sent to your inbox at regular intervals is an extra layer of protection and a nice convenience.  <a href="http://www.ilfilosofo.com/blog/wp-db-backup/" title="Manual and automated backups for your WordPress database [ilfilosofo.com]">WP DB Backup</a> does this without hassle.  You set it and then forget about it.</p>

<p>NOTE.  WP DB Backup only makes copies of the database:  posts, pages, comments, metadata and also settings of themes, plugins and of WordPress itself.  It does <em>not</em> back up the files (pictures, videos etc.) that you upload to your posts (and which are located in wp-content/uploads).</p>

<h3>XML Sitemap Generator</h3>

<p>Home:  <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" title="Homepage of XML Sitemap Generator, a plugin for WordPress [arnebrachhold.de]">XML Sitemap Generator</a><br />
What:  Generates and maintains an XML sitemap<br />
By:  <a href="http://www.arnebrachhold.de/" title="Personal website of Arne Brachhold [arnebrachhold]">Arne Brachhold</a><br />
Version:  3.1.2<br />
Rating at WP.org:  <a href="http://wordpress.org/extend/plugins/google-sitemap-generator/" title="XML Sitemap Generator at the official WordPress repository [wordpress.org]">85/100</a> by 430 people <!--2009-04-07--></p>

<p><a href="http://op111.net/wp-content/uploads/2009/04/d70-xml-sitemap-gen-options.png" title="XML Sitemap Generator for WordPress 3.1.2, Settings" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-xml-sitemap-gen-options-62x192.png" alt="XML Sitemap Generator for WordPress 3.1.2, Settings" title="XML Sitemap Generator for WordPress 3.1.2, Settings" width="62" height="192" class="alignnone size-medium wp-image-559" /></a> <a href="http://op111.net/wp-content/uploads/2009/04/d70-xml-sitemap-example.png" title="Example of XML sitemap" rel="lightbox[70]" rel="lightbox[70]"><img src="http://op111.net/wp-content/uploads/2009/04/d70-xml-sitemap-example-192x192.png" alt="Example of XML sitemap" title="Example of XML sitemap" width="192" height="192" class="alignnone size-medium wp-image-560" /></a></p>

<p>An XML sitemap is a file in the home directory of a website, e.g.:  <em>http://example.com/sitemap.xml</em>, that tells search engines where to find the pages that are available to crawl.  It is an important part of any modern website that wants to be visible by search engines, but making and maintaining one is not simple.  <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" title="Homepage of XML Sitemap Generator, a plugin for WordPress [arnebrachhold.de]">XML Sitemap Generator</a> does this automatically.  It makes an XML sitemap, it updates it every time a new post or page is added and it also notifies a few major search engines about the change.</p>

<p>NOTE.  XML sitemaps and sitemap pages, <a href="http://op111.net/sitemap" title="Sitemap page of op111.net [op111.net]">like this</a>, are <em>different</em> things.  The former are unstyled XML documents meant for machines.  The latter provide an index, an overview of the site’s content, for human visitors.</p>

<h3>Contact Form</h3>

<p>WordPress sites have comments, but often people need to contact you in private, by e-mail.  The most convenient means you can offer for this is a contact form.  There are many good contact forms for WordPress, but none I’m perfectly happy with.  Here are the two I like most:</p>

<ul>
<li><a href="http://wordpress.org/extend/plugins/easy-contact/" title="Easy Contact at the official WordPress repository [wordpress.org]">Easy Contact</a> by Scott Wallick, rated <a href="http://wordpress.org/extend/plugins/easy-contact/" title="Easy Contact at the official WordPress repository [wordpress.org]">98/100</a> by 18 people, <!--2009-04-07--> is near perfect:
It’s easy to set up and has all the basics plus two optional features that I consider essential in a contact form:
a quiz (for antispam protection) and a check box that senders can tick to receive a carbon copy of their messages.
— It also does something bad:  By design, upon deactivation it deletes automatically all its settings from the database.</li>
<li><a href="http://ideasilo.wordpress.com/2007/04/30/contact-form-7/" title="Homepage of Contact Form 7 for WordPress [ideasilo.wordpress.com]">Contact Form 7</a> by Takayuki Miyoshi, rated <a href="http://wordpress.org/extend/plugins/contact-form-7/" title="Contact Form 7 at the official WordPress repository [wordpress.org]">82/100</a> by 199 people, <!--2009-04-07-->
is more advanced, supports more fields and also multiple instances, but it does not offer a <abbr title="Carbon Copy">CC</abbr> option.</li>
</ul>

<p>op111.net uses Easy Contact:  <a href="http://op111.net/contact" title="Send e-mail to op111.net! [op111.net]">op111.net/contact</a> — You are welcome to try it if you want;  just remember to put [TEST] somewhere in the subject.</p>

<h3>Mobile WordPress</h3>

<p>As more and more people browse the web through mobile devices, it is becoming essential for websites to look good in mobile browsers.  One way to do this in WordPress is a plugin that, when it detects a mobile browser, activates a theme tailored for mobile devices.  Here are four that I’m looking at:</p>

<ul>
<li><a href="http://mobilepress.co.za/" title="Homepage of MobilePress, a plugin for WordPress [mobilepress.co.za]">MobilePress</a> by Younique (rated <a href="http://wordpress.org/extend/plugins/mobilepress/" title="MobilePress at the official WordPress repository [wordpress.org]">79/100</a> by 41 people).</li>
<li><a href="http://crowdfavorite.com/wordpress/" title="Homepage of WordPress Mobile Edition, a plugin for WordPress [crowdfavorite.com]">WordPress Mobile Edition</a> by Crowd Favorite (rated <a href="http://wordpress.org/extend/plugins/wordpress-mobile-edition/" title="WordPress Mobile Edition at the official WordPress repository [wordpress.org]">66/100</a> by 22 people).</li>
<li><a href="http://imthi.com/wp-pda" title="Homepage of WordPress PDA &amp; iPhone, a WordPress plugin [imthi.com]">Wordpress PDA &amp; iPhone</a> by Imthiaz Rafiq (rated <a href="http://wordpress.org/extend/plugins/wp-pda/" title="WordPress PDA &amp; iPhone at the official WordPress repository [wordpress.org]">75/100</a> by 34 people).</li>
<li><a href="http://www.bravenewcode.com/wptouch/" title="WPtouch: WordPress on iPhone, iPod &amp; Android [bravenewcode.com]">WPtouch</a> by BraveNewCode (rated <a href="http://wordpress.org/extend/plugins/wptouch/" title="WPtouch at the official WordPress repository [wordpress.org]">80/100</a> by 39 people).</li>
</ul>

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

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

<h3>Related</h3>

<ul><li><a href="http://op111.net/about/plugins-used" rel="bookmark" title="12 Sep 2008">Plugins used</a></li>

<li><a href="http://op111.net/56" rel="bookmark" title="19 Sep 2008">Five good WordPress plugins you may not know about</a></li>

<li><a href="http://op111.net/62" rel="bookmark" title="18 Oct 2008">WordPress: 20 answers</a></li>

<li><a href="http://op111.net/67" rel="bookmark" title="17 Feb 2009">The manual Excerpt in WordPress: What, why, how, tips and plugins</a></li>
</ul>

<!-- Similar Posts took 46.013 ms -->
<hr />
<p>Add to <a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://op111.net/70&title=Basic WordPress plugins">del.icio.us</a></p>
<hr />
<p>© 2009 <a href="http://op111.net">op111.net</a> | <a href="http://op111.net/70">Permalink</a></p> <img src="http://feeds.feedburner.com/~r/op111net_english/~4/iHtvMsHQPGE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://op111.net/70/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
