<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>DQuinn.net &#187; dashboard</title>
	<atom:link href="http://www.dquinn.net/tags/dashboard/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dquinn.net</link>
	<description>Daniel J. Quinn&#039;s journal of WordPress, electronic publishing, and general geek culture.</description>
	<lastBuildDate>Thu, 22 Jul 2010 23:46:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flutter is Not Dead Says Navid, Matt Mullenweg Takes Notice</title>
		<link>http://www.dquinn.net/flutter-is-not-dead-says-navid-matt-mullenweg-takes-notice/</link>
		<comments>http://www.dquinn.net/flutter-is-not-dead-says-navid-matt-mullenweg-takes-notice/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 12:31:40 +0000</pubDate>
		<dc:creator>Daniel Quinn</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[custom write panel]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[flutter]]></category>
		<category><![CDATA[freshout]]></category>
		<category><![CDATA[fringe magazine]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[harvard common press]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[magic fields]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<category><![CDATA[media library]]></category>
		<category><![CDATA[navid safabakhsh]]></category>
		<category><![CDATA[tinymce]]></category>
		<category><![CDATA[wordpress 2.9]]></category>

		<guid isPermaLink="false">http://www.dquinn.net/?p=2074</guid>
		<description><![CDATA[We're heard <a href="http://www.google.com/#hl=en&#38;source=hp&#38;fkt=420&#38;fsdt=2316&#38;q=flutter+wordpress&#38;aq=f&#38;aqi=g-p1g6g-m2&#38;oq=&#38;fp=7d15299a959dbb33">a lot</a> about Flutter. The Flutter homepage has accumulated something like <a href="http://flutter.freshout.us/?wpc=all#comments">1,592 comments</a> since its release—a bewildering array of bug reports, praise, and feature requests—and the now defunct support forum was a mire of temporary solutions and fixes until it was abandoned by its developers and replaced with a <a href="http://groups.google.com/group/flutter-support">Google Group</a>. The only public place that exists for WP hacks like myself to confer about the plugin in its current state is this group, which has recently been beset by spammers. The Freshout guys occasionally post there, but we’ve heard little about progress on the next release of Flutter, even while bug fixes circulate among members of the community.]]></description>
			<content:encoded><![CDATA[<p>If there's one thing I'm looking forward to when it comes to WordPress other than <a href="http://wordpress.org/development/2009/07/vote-for-2-9-media-features/">2.9's new Media Library</a>, it's <a href="http://freshout.us/">Freshout</a>'s next release of <a href="http://flutter.freshout.us/">Flutter</a>, the WordPress CMS plugin.</p>
<div id="attachment_2079" class="wp-caption aligncenter" style="width: 500px"><img class="size-large wp-image-2079" title="Using Flutter at Harvard Common Press" src="http://www.dquinn.net/images/book-fields-490x395.gif" alt="Using Flutter to Establish Book-Author Relationships" width="490" height="395" /><p class="wp-caption-text">Using Flutter to Establish Book-Author Relationships</p></div>
<p>We've heard <a href="http://www.google.com/#hl=en&amp;source=hp&amp;fkt=420&amp;fsdt=2316&amp;q=flutter+wordpress&amp;aq=f&amp;aqi=g-p1g6g-m2&amp;oq=&amp;fp=7d15299a959dbb33">a lot</a> about Flutter. The Flutter homepage has accumulated something like <a href="http://flutter.freshout.us/?wpc=all#comments">1,592 comments</a> since its release—a bewildering array of bug reports, praise, and feature requests—and the now defunct support forum was a mire of temporary solutions and fixes until it was abandoned by its developers and replaced with a <a href="http://groups.google.com/group/flutter-support">Google Group</a>. The only public place that exists for WP hacks like myself to confer about the plugin in its current state is this group, which has recently been beset by spammers. The Freshout guys occasionally post there, but we’ve heard little about progress on the next release of Flutter, even while bug fixes circulate among members of the community.</p>
<div id="attachment_2081" class="wp-caption alignright" style="width: 89px"><img class="size-full wp-image-2081" title="Navid Safabakhsh" src="http://www.dquinn.net/images/1246486020navid.jpg" alt="Navid Safabakhsh" width="79" height="79" /><p class="wp-caption-text">Navid Safabakhsh</p></div>
<p>But we can’t criticize Freshout for being slow about progress, or for the hackiness of Flutter. What VP of Production and Principal of the design house Freshout Navid Safabakhsh has been up to with his team has the potential to transform WordPress into a fully fledged CMS, with content types, custom write panels, and swanky GUI’d custom fields. Even if Freshout abandoned the plugin today and left us with Flutter as is, we should be eternally grateful. <a href="http://freshout.us/notebook/path-of-flutter/">In a blog post on Freshout</a>, Navid explains how Flutter evolved from a fork of <a href="http://wordpress.org/extend/plugins/custom-write-panel/">Custom Write Panel</a> into Fresh Page, and ultimately into Flutter, not as an open source project, but as a real-time solution to Freshout’s clients’ needs. “We have been criticized quite a lot in the past year or so for being slow with support and lack of transparency with the product plan of Flutter. There is a good reason for that,” Navid writes, “It’s because there isn’t a clear product plan that’s centered around the community. The product plan is centered around what our clients ask us to build since that’s our source of revenue.” Navid remains skeptical about releasing a final version of Flutter into the GPL partly because of all the zaniness that erupted from Flutter’s overnight community, and partly because his 25-person team has a business to run and can’t deal with providing support all night for free. But that doesn’t mean Navid and Freshout aren’t open to getting the job done. “Over the next few weeks, we’re getting in touch with anyone who wants to help us put some serious energy back into Flutter. If you’re one of these people, hit me up.”</p>
<p>Now here’s the really cool news: in his post, Navid confirms the rumor that Freshout’s got the attention of Matt Mullenweg, the official king-god of WordPress. On <a href="http://groups.google.com/group/flutter-support/msg/6f9eea74f34a06c6">a post in the Google Group</a> entitled “Is Flutter dead?” (to which Navid replies enigmatically, “No, it’s not. We’ll communicate our plans soon”), Google groupie Tammy Hart writes:</p>
<blockquote><p>Matt Mullenweg was here at WordCamp Birmingham this past weekend where there ended up being a big buzz about Flutter. As he was leaving and saying a final goodbye to me with a handshake, he said, “I really like what you're doing with Flutter, but I don't like how the plugin works... So I'm gonna make it better.”</p></blockquote>
<p><img class="aligncenter size-full wp-image-2082" style="border: none;" title="post" src="http://www.dquinn.net/images/post.gif" alt="post" width="484" height="362" /></p>
<p>Wow. Could you imagine CMS functionality on the roadmap? I can’t, but I won’t lose hope. <a href="http://core.trac.wordpress.org/milestone/2.9">WordPress 2.9 is due out October 31</a> though the release date looks a little too optimistic for me (there are 623 of 776 active tickets, which sets Milestone 2.9 at 20% completion as of today). Navid writes that we could hear about the game plan for Flutter as early as “the end of October”  or see a release by “Nov 7<sup>th</sup>, which will include fixes to the most urgent bugs.” Sounds too good to be true.</p>
<div id="attachment_2084" class="wp-caption alignright" style="width: 166px"><img class="size-full wp-image-2084" title="Using Custom Write Panels" src="http://www.dquinn.net/images/write-panels.gif" alt="Custom Write Panels" width="156" height="420" /><p class="wp-caption-text">Custom Write Panels</p></div>
<p>And what about all the Flutter clones out there, borne most likely out of frustration with Freshout’s unresponsiveness or itching anticipation for what can be done with GUI’d custom fields in WordPress? Navid isn’t too pleased with dividing up the potential for open source labor: “There are a number of other CMS plugins that were released after Flutter and directly ‘compete’ with us [see <a href="http://magicfields.org/">Magic Fields</a>, developed by a couple of ex-Flutterers]. This is a concept that I just don’t understand in the GPL world. We’re not competing with any of you. We’re just sharing some of our code for other people that want to use it. That’s really it.”</p>
<p>It’s all very interesting.</p>
<p>Here’s the thing, though, for all you whining WP masses out there: There is already a lot you can do with Flutter, as buggy as it is today. If you troll through all the posts in the Google Group, you’ll find enough fixes to make Flutter usable for the time being. In a version I’ve been patching, I’ve got image uploads working reliably (cropping disabled), my categories don’t disappear, jQuery plays nicely with the Dashboard, and TinyMCE behaves in HTML mode. I’ve also created stable relationships between post “types” through Flutter fields that wouldn’t be manageable for the end user without the grouping capabilities that Flutter’s GUI allows for (see <a href="http://www.harvardcommonpress.com">Harvard Common Press</a>, for example—books and authors are intimately related thanks to Flutter. This situation is similar at <a href="http://www.fringemagazine.org">Fringe Magazine</a>).</p>
<p>So let's not lose hope or beleaguer Navid any more than we already have. I'll see you in November.</p>
<p><strong>UPDATE:</strong> Attached is <a href="http://www.dquinn.net/images/fresh-page.zip">my less buggy version of Flutter</a>, per request. I offer no support for this, as I plan to document the changes I made in a later post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dquinn.net/flutter-is-not-dead-says-navid-matt-mullenweg-takes-notice/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Replacing Search in WordPress with Google&#8217;s Custom Search Engine</title>
		<link>http://www.dquinn.net/replace-wordpress-search-with-google-custom-search/</link>
		<comments>http://www.dquinn.net/replace-wordpress-search-with-google-custom-search/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 17:36:41 +0000</pubDate>
		<dc:creator>Daniel Quinn</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google cse]]></category>
		<category><![CDATA[google custom search engine]]></category>
		<category><![CDATA[harvard common press]]></category>
		<category><![CDATA[joy of pregnancy]]></category>
		<category><![CDATA[not your mothers cookbooks]]></category>
		<category><![CDATA[relevanssi]]></category>
		<category><![CDATA[search reloaded]]></category>
		<category><![CDATA[search unleashed]]></category>

		<guid isPermaLink="false">http://www.dquinn.net/?p=1936</guid>
		<description><![CDATA[If you have a ring of web properties that are powered by WordPress, why not link them all together to drive traffic through a custom Google search? WordPress's search engine is notoriously unhelpful because it sorts search results by date instead of relevancy. If you use Google Custom Search, when you search using your souped-up Google Custom Search box, you'll land on the new search template, and Google will load the results (almost instantaneously) in a paginated iframe.]]></description>
			<content:encoded><![CDATA[<p>If you have a ring of web properties that are powered by WordPress, why not link them all together to drive traffic through a custom Google search?</p>
<p>WordPress's search engine is notoriously unhelpful because it sorts search results by date instead of relevancy. Few plugins out there solve the problem adequately, and those that do must replace the WordPress search engine altogether. (Some time ago, we had a free plugin called The Search Reloaded that sorted results by relevancy, but now it's part of a <a href="http://www.semiologic.com/software/search-reloaded/">commercial package</a>. <a href="http://urbangiraffe.com/plugins/search-unleashed/">Search Unleashed</a> and <a href="http://wordpress.org/extend/plugins/relevanssi/">Relevanssi</a> are two other solutions, but they have a tendency—in my experience—to interfere with heavily customized themes that employ complex loops.)</p>
<p>Part of overhauling the websites owned by Harvard Common Press (HCP) was the process of converting them to WordPress. You'll notice that <a href="http://www.harvardcommonpress.com">The Harvard Common Press</a> website and its microsite, <a href="http://www.notyourmotherscookbook.com">Not Your Mother's Cookbooks</a> (NYMC), search across indexed pages in the following domains:</p>
<ul>
<li>http://www.harvardcommonpress.com</li>
<li>http://www.thejoyofpregnancy.com</li>
<li>http://www.notyourmotherscookbook.com</li>
<li>http://www.nursingmotherscompanion.com</li>
</ul>
<p>So if you search for the book "The Joy of Pregnancy" you will get results from all of these sites, and Google will even suggest the other domains before calling results from within the HCP website. Potentially, we could even add Tori Kropp's personal website to these results (she is the author of the book), even though we don't control that domain.</p>
<p>(I'm still working on converting The Joy of Pregnancy and The Nursing Mother's Companion to WordPress, so those don't use Google Custom Search just yet.)</p>
<p>If your sites are already well-indexed by Google, the custom search offers a vast improvement over WordPress' built-in search (at least for the time being). Users are already accustomed to using Google's services, so the custom search will be a welcomed addition to your site, and it's free if you don't mind the ads. So let's look at integrating the search into our theme.</p>
<h2>Installing Google CSE in WordPress</h2>
<p>Go to Google Custom Search  and sign up for an account.</p>
<div style="overflow: hidden;">
<div id="attachment_1939" class="wp-caption alignleft" style="width: 420px"><img src="http://www.dquinn.net/images/hcp-sites.jpg" alt="Search Across Multiple Sites" title="CSE Sites" width="410" height="293" class="size-full wp-image-1939" /><p class="wp-caption-text">Search Across Multiple Sites</p></div>
</div>
<p>What you'll need to do is create a custom search engine on your CSE site profile for each website in your ring. So I created CSE for both the HCP website and NYMC. I then had each of these engines search across all four websites listed above in the CSE Control Panel by entering in their domains. For our purposes, we want to embed the CSE as an iframe on our site, so choose that option when you get the CSE code.</p>
<p>You can customize the "Look and Feel" for each engine to your liking, as well as the search results' box width (but keep in mind that if you position ads to the right, the search results box will force a width greater than 780 pixels even if you set the width to something smaller. The best position for ads if you want to control the width is "top and bottom").</p>
<p>Next, I created a template called "searchform.php" in my theme to override the default search bar. The default code for this template is as follows:</p>
<pre class="brush: xml;">
&lt;li id=&quot;search&quot;&gt;
  &lt;label for=&quot;s&quot;&gt;Search:&lt;/label&gt;
    &lt;form id=&quot;searchform&quot; method=&quot;get&quot; action=&quot;/index.php&quot;&gt;
      &lt;div&gt;
         &lt;input type=&quot;text&quot; name=&quot;s&quot; id=&quot;s&quot; size=&quot;15&quot; /&gt;&lt;br /&gt;
         &lt;input type=&quot;submit&quot; value=&quot;Search&quot; /&gt;
      &lt;/div&gt;
     &lt;/form&gt;
&lt;/li&gt;
</pre>
<p>Google will provide you with the following code for the search box:</p>
<pre class="brush: xml;">
&lt;form action=&quot;http://www.yourwebsite.com/search/&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;YOUR UNIQUE CODE HERE&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cof&quot; value=&quot;YOUR AD POSITION HERE&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;UTF-8&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;31&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;google.load(&quot;elements&quot;, &quot;1&quot;, {packages: &quot;transliteration&quot;});&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/coop/cse/t13n?form=cse-search-box&amp;t13n_langs=en&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en&quot;&gt;&lt;/script&gt;
</pre>
<p>To merge the two, you need to:</p>
<ul>
<li>Remove the method='get' attribute</li>
<li>Ensure the cse-search-box id is on the form tag</li>
<li>Swap out the URL for the action attribute to where you'd like the search results to appear on your site (see below)</li>
<li>Add the hidden input fields</li>
<li>Add the javascript</li>
<li>Change/add the name attributes on the submit and text inputs to match Google's</li>
</ul>
<p>Here is an example:</p>
<pre class="brush: php;">
&lt;li id=&quot;search&quot;&gt;
&lt;label for=&quot;s&quot;&gt;Search:&lt;/label&gt;
&lt;form id=&quot;cse-search-box&quot; action=&quot;&lt;?php bloginfo('url'); ?&gt;/search/&quot;&gt;
    &lt;div&gt;
        &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;PUT YOUR GOOGLE VALUE HERE&quot; /&gt;
        &lt;input type=&quot;hidden&quot; name=&quot;cof&quot; value=&quot;PUT YOUR AD POSITION HERE&quot; /&gt;
        &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;UTF-8&quot; /&gt;
        &lt;input type=&quot;text&quot; name=&quot;q&quot; id=&quot;s&quot; size=&quot;15&quot; /&gt;
        &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
        &lt;input type=&quot;text&quot; name=&quot;q&quot; id=&quot;s&quot; /&gt;
    &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;google.load(&quot;elements&quot;, &quot;1&quot;, {packages: &quot;transliteration&quot;});&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/coop/cse/t13n?form=cse-search-box&amp;amp;t13n_langs=en&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/coop/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;
&lt;/li&gt;
</pre>
<p>Great. If you did this properly, you should see Google's logo overlay on your search box. You cab modify how you want this to look in your CSE account.</p>
<p>Now for the search results template and Google' second chunk of code. In your search.php template, we need to remove the loop, the pagination, and the if/else conditionals that handle the search results in WordPress, then put in Google's second chunk of code. If you are using the Default theme, for example, your code would resemble the following:</p>
<pre class="brush: php;">
&lt;?php
/**
 * @package WordPress
 * @subpackage Default_Theme
 */
/*
Template Name: Search
*/
get_header(); ?&gt;

&lt;div id=&quot;content&quot; role=&quot;main&quot;&gt;

   &lt;h2&gt;Search Results&lt;/h2&gt;

   &lt;div id=&quot;cse-search-results&quot;&gt;&lt;/div&gt;
   &lt;script type=&quot;text/javascript&quot;&gt;
     var googleSearchIframeName = &quot;cse-search-results&quot;;
     var googleSearchFormName = &quot;cse-search-box&quot;;
     var googleSearchFrameWidth = 710; // PUT YOUR DESIRED WIDTH HERE
     var googleSearchDomain = &quot;www.google.com&quot;;
     var googleSearchPath = &quot;/cse&quot;;
   &lt;/script&gt;
   &lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/afsonline/show_afs_search.js&quot;&gt;&lt;/script&gt;

&lt;/div&gt;

&lt;?php get_sidebar(); ?&gt;
&lt;?php get_footer(); ?&gt;
</pre>
<p>Finally, you need to create a top-level page in the Dashboard called "Search" with the slug "http://www.yourwebsite.com/search/" and assign the Search template to this page via its Page Attributes.</p>
<p>Once this is complete, when you search using your souped-up Google Custom Search box, you'll land on the new search template, and Google will load the results (almost instantaneously) in a paginated iframe!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dquinn.net/replace-wordpress-search-with-google-custom-search/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>35 WordPress Plugins that Get the Job Done: Freelancing Favorites</title>
		<link>http://www.dquinn.net/35-wordpress-plugins-that-get-the-job-done-freelancing-favorites/</link>
		<comments>http://www.dquinn.net/35-wordpress-plugins-that-get-the-job-done-freelancing-favorites/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 04:29:20 +0000</pubDate>
		<dc:creator>Daniel Quinn</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[404s]]></category>
		<category><![CDATA[ad minister]]></category>
		<category><![CDATA[advanced category excluder]]></category>
		<category><![CDATA[advanced excerpt]]></category>
		<category><![CDATA[all in one seo pack]]></category>
		<category><![CDATA[codesnippet]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[disable wordpress core update]]></category>
		<category><![CDATA[disable wordpress plugin update]]></category>
		<category><![CDATA[email users]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[gd star rating]]></category>
		<category><![CDATA[google sitemap generator]]></category>
		<category><![CDATA[google webmaster tools]]></category>
		<category><![CDATA[lifestream]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[member access]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[new tag cloud]]></category>
		<category><![CDATA[nextgen gallery]]></category>
		<category><![CDATA[page excerpt]]></category>
		<category><![CDATA[popular posts plugin]]></category>
		<category><![CDATA[post plugin library]]></category>
		<category><![CDATA[ps auto sitemap]]></category>
		<category><![CDATA[random posts plugin]]></category>
		<category><![CDATA[recent posts plugin]]></category>
		<category><![CDATA[redirection plugin]]></category>
		<category><![CDATA[register plus]]></category>
		<category><![CDATA[rokkyuu magazine]]></category>
		<category><![CDATA[search and replace]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[similar posts plugin]]></category>
		<category><![CDATA[sitemap generator]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[spiders]]></category>
		<category><![CDATA[subscribe to comments]]></category>
		<category><![CDATA[subscribe2]]></category>
		<category><![CDATA[the_excerpt()]]></category>
		<category><![CDATA[user photo]]></category>
		<category><![CDATA[viper's video quicktags]]></category>
		<category><![CDATA[visual editor]]></category>
		<category><![CDATA[wordpress 2.6]]></category>
		<category><![CDATA[wordpress plugins]]></category>
		<category><![CDATA[wp-ban]]></category>
		<category><![CDATA[wp-commentnavi]]></category>
		<category><![CDATA[wp-db-backup]]></category>
		<category><![CDATA[wp-pagenavi]]></category>
		<category><![CDATA[wp-useronline]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.dquinn.net/?p=1383</guid>
		<description><![CDATA[Here's quick list of my favorite WordPress plugins that I've come back to time and time again on client projects. Each of these plugins have withstood the test of time (when it comes to new versions of WordPress), have diligent support in the community, and remain stable to date. I'll be returning to this post from time to time to provide hacks wherever mentioned.]]></description>
			<content:encoded><![CDATA[<p>Here's quick list of my favorite WordPress plugins that I've come back to time and time again on client projects. Each of these plugins have a) withstood the test of time (when it comes to new versions of WordPress), b) have excellent support in the community, and c) remain stable to date. I'll be returning to this post from time to time to provide hacks wherever mentioned.</p>
<ol>
<li><a href="http://wordpress.org/extend/plugins/ad-minister/">Ad Minister</a>. The best tool for serving banner ads I've come across.</li>
<li><a href="http://wordpress.org/extend/plugins/advanced-excerpt/">The Advanced Excerpt</a>. WordPress' built-in excerpt function, the_excerpt() leaves a lot to be desired because it strips out HTML by default.</li>
<li><a href="http://wordpress.org/extend/plugins/advanced-category-excluder/">Advanced Category Excluder</a>. Sometimes I just don't want to go through all the trouble of making sure a particular category doesn't show up in search results or the feed. This little plugin is great because it does all the work for you.</li>
<li><a href="http://wordpress.org/extend/plugins/all-in-one-seo-pack/">All in One SEO Pack.</a> Can't live without this one. SEO-friendly page titles + automatically using post and page excerpts as meta descriptions + automatically using tags as meta keywords = better visibility on Google. It's one of the reasons why my website is on the first page of results in Google if you search for "Boston freelance web designer."</li>
<li><a href="http://wordpress.org/extend/plugins/disable-wordpress-core-update/">Disable WordPress Core Update</a>. Now now, before you chastise me: I recommend disabling WordPress' Core Update nag only if you're diligent about updating yourself. As I <a href="http://www.dquinn.net/wordpress365/">said before</a>, one of the difficulties with WordPress is that if your plugins get out of sync with your version of WordPress, this means trouble for the stability of your installation. I check <a href="http://www.wordpress.org">WordPress.org</a> regularly, and prefer to do an update and compatibility check for my plugins all at once, so the nag only ends up annoying me.</li>
<li><a href="http://wordpress.org/extend/plugins/disable-wordpress-plugin-updates/">Disable WordPress Plugin Update</a>. Same here. I often have to modify plugins to suit my needs, so this one's an eyesore.</li>
<li><a href="http://wordpress.org/extend/plugins/email-users/">Email Users</a>. A great tool to send out a quick message to all registered users.</li>
<li><a href="http://wp.gdragon.info/plugins/gd-star-rating/">GD Star Rating</a>. The slickest of the "star ratings" plugins I've seen, since it comes with sweet icon themes and scores via Ajax.</li>
<li><a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">Google Sitemap Generator.</a> A must-have for SEO purposes. The plugin generates a fully customizable XML sitemap of all your content so spiders can crawl you more easily.</li>
<li><a href="http://wordpress.org/extend/plugins/lifestream/">Lifestream</a>. A lovely way to vomit all your social media activity in one place.</li>
<li><a href="http://wordpress.org/extend/plugins/new-tag-cloud/">New Tag Cloud</a>. A classic. This plugin gives <em>just</em> a bit more granular control over the tag cloud than the default one allows.</li>
<li><span style="text-decoration: line-through;"><a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/">NextGen Gallery</a>. I personally find the Dashboard for NextGen Gallery unintuitive, but as far as galleries hosted on-site go, it's the best option available. I've hacked NextGen to suit my purposes at <a href="http://www.rokkyuu.com/fashion/galleries">Rokkyuu Magazine</a>, but out-of-box the plugin combines many of the features that I find lacking in its competition.</span> <strong>*updated 8/22/09* As of 2.7, just use WordPress' built in gallery shortcodes. You can upload a whole set of images and "Insert as Gallery," then with a bit of filtering, remove the default CSS for the gallery and use Shadowbox to display the full image as a lightbox. This way thumbnails get automatically created, and if you dump galleries into their own category of posts, you can handle a gallery as you would any other post.</strong></li>
<li><a href="http://blog.ftwr.co.uk/wordpress/page-excerpt/">Page Excerpt</a>. Why this was removed from WordPress still baffles me (<a href="http://wordpress.org/extend/ideas/topic.php?id=247">among others</a>)—in conjunction with All in One SEO Pack, Page Excerpt allows you to provide better meta descriptions for your pages, as well as prettier excerpts in search results and archives.</li>
<li><a href="http://www.web-strategy.jp/wp_plugin/ps_auto_sitemap/">PS Auto Sitemap</a>. A fancy, automagically generated sitemap with fancy icons.</li>
<li><a href="http://wordpress.org/extend/plugins/redirection/">Redirection</a>. This one's indispensable. I'm no good at writing rules for mod_rewrite in my .htaccess, so this plugin is a lifesaver. If you use <a href="http://www.google.com/webmasters/tools/">Google's Webmaster Tools</a> in conjunction with this plugin, you can have a pretty cleanly running site with no loose ends, as far as 404s and errors in your sitemap are concerned. Would be perfect if it weren't for the fact that its log files, which can't be turned off, eventually get enormous and bloat your MySQL database.</li>
<li><a href="http://subscribe2.wordpress.com/">Subscribe2</a>. The Dashboard is very clunky, but as a site-wide subscription manager, Subscribe2 does the job.</li>
<li><span style="text-decoration: line-through;"><a href="http://wordpress.org/extend/plugins/register-plus/">Register Plus</a>. After extensive experimentation with the plugins out there that extend the functionality of the user profile in WordPress, Register Plus appears to be the key to making it work without resorting to writing your own plugins. I'll be writing an article about extending the user profile (a la <a href="http://www.rokkyuu.com/subscribers/?subscriber=alkah3st">Rokkyuu Magazine</a>) to include custom fields arranged in a preferred order and user-selected color themes. Great when combined with the <a href="http://wordpress.org/extend/plugins/user-photo/">User Photo</a> plugin. (Albeit, other than for this purpose, Register Plus is somewhat useless; half of its functionality expired with WordPress 2.6.).</span><strong>*updated 8/22/09* </strong><strong>There are a few plugins out there that may make this whole setup even more interesting, such as logging in and editing your profile from the front end. <span style="text-decoration: line-through;">More to come</span>. Read my new series <a href="http://www.dquinn.net/extending-user-profiles-wordpress/">Extending User Profiles in WordPress</a> for more on this. (added *8/29/2009*)</strong></li>
<li><a href="http://wordpress.org/extend/plugins/search-and-replace/">Search and Replace.</a> Useful if you need to migrate your WordPress installation from a local environment, to a testing server, and then to its final live host. Simply search and replace http://localhost/a-temporary-path/ with the final domain path and you're done.</li>
<li><a href="http://wordpress.org/extend/plugins/subscribe-to-comments/">Subscribe to Comments</a>. A really great way to enable users to follow your comment thread without subscribing to its feed.</li>
<li><span style="text-decoration: line-through;"><a href="http://wordpress.org/extend/plugins/codesnippet-20/">Codesnippet</a>. An easier method to displaying markup or code in posts, although you'll need to hack the plugin to make it standards-compliant. Normally the plugin generates a &lt;pre&gt; with two &lt;div&gt;'s inside of that, which in turn get squashed inside of &lt;p&gt; tags; I replaced these &lt;div&gt;s with &lt;spans&gt; and then styled the &lt;span&gt;s to be <em>display: block</em>. Of course, then you still have to deal with the fact that WordPress will invariably mangle your inline code if you switch to the Visual Editor.</span> <strong>*updated 8/22/09* </strong><strong>An even better option is <a href="http://wordpress.org/extend/plugins/syntaxhighlighter/">Syntax Highlighter Evolved</a> by ViperBond.</strong></li>
<li><a href="http://wordpress.org/extend/plugins/sitemap-generator/">Sitemap Generator.</a> If you're looking for a plugin that generates a simple, unordered list of all your posts, pages, etc in a hierarchical fashion, this is it. All you do is create a page template for it and plop it in.</li>
<li><a href="http://wordpress.org/extend/plugins/member-access/">Member Access</a>. The best way to make your WordPress members-only.</li>
<li><a href="http://wordpress.org/extend/plugins/user-photo/">User Photo</a>. A wonderful enhancement for the user profile. If you don't want to approve each user when he/she changes her photo, though, you'll need to cripple the plugin to remove this functionality, and then also rip out the chunk of code that sends you an email (even after you've disabled the moderation feature). More on this later.</li>
<li><a href="http://wordpress.org/extend/plugins/vipers-video-quicktags/">Viper's Video Quickags</a>. Simply the best way to insert YouTube videos.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-ban/">WP-Ban</a>. Easy as pie. You can ban by IP, referrer, or host name, and display a custom page to blocked users.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-commentnavi/">WP-Commentnavi</a>. Lester "Gamerz" Chan is one of the great plugin masters. I've had to alter his plugin's markup a bit to suit my purposes (which I'll be sure to share), but otherwise his plugins are almost prescient when it comes to much-needed WordPress functionality.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-db-backup/">WP-DB-Backup</a>. Nothing beats having your WordPress database delivered to you by email once a week.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-pagenavi/">WP-Pagenavi</a>. Another of Lester's, which I use in almost every project.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-polls/">WP-Polls</a>. A nice, ajax-powered polling system (also Lester's). I'll discuss the related tw-sack.js problem later, but otherwise a solid piece of code.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-useronline/">WP-UserOnline</a>. Displays a list of spiders and users (anonymous as well as logged in) who are currently browsing your site (as well as what page[s] they're viewing).</li>
<li><a href="http://wordpress.org/extend/plugins/post-plugin-library/">Posts Plugin Library</a>. And finally, one of the sweetest plugins out there: bypass dealing with multiple loops in a template by making single-line calls to the Posts Plugin Library, which grabs exactly the posts you need. And the great news is, there's a whole suite of options:
<ul>
<li><a href="http://rmarsh.com/plugins/similar-posts/">Similar Posts</a></li>
<li><a href="http://rmarsh.com/plugins/random-posts/">Random Posts Plugin</a></li>
<li><a href="http://rmarsh.com/plugins/popular-posts-plugin/">Popular Posts Plugin</a></li>
<li><a href="http://rmarsh.com/plugins/recent-comments/">Recent Comments Plugin</a></li>
</ul>
</li>
</ol>
<p>That's all, folks! Should I come across some other sweet plugins, or if you recommend them, I'll add them here. Stay tuned.</p>
<h2>Addendum</h2>
<p>So here are a number of plugins I forgot:</p>
<ol>
<li><strong><a href="http://wordpress.org/extend/plugins/lastfm-rps/">Last.fm RPS</a>. *added 8/22/09* </strong>After trying out numerous Last.fm plugins, this is without a doubt the best out there. Allows you to display information from your latest tracks/albums on Last.fm. Used in conjunction with <a href="http://www.last.fm/download">Last.fm's Scrobbler for iTunes/Windows Media Player</a>.</li>
<li><strong><a href="http://sourceforge.net/projects/role-manager/">Role Manager</a>. </strong><strong>*added 8/22/09*</strong><strong> </strong>Sometimes you need more granular control over what users can do in the back-end of WordPress, and that's where Role Manager comes in. What's great is that when used in conjunction with Flutter, you can restrict access to Custom Write Panels you create on a user level basis.</li>
<li><strong><a href="http://urbangiraffe.com/plugins/search-unleashed/">Search Unleashed</a>. </strong><strong>*added 8/22/09*</strong><strong> </strong>Use this plugin to beef up the relevancy of the WordPress search function. Since <a href="http://www.semiologic.com/software/search-reloaded/">Search Reloaded</a> went commercial, this is the only plugin left that will allow you to search by relevancy reliably.</li>
<li><strong><a href="http://yoast.com/wordpress-search/">Search Excerpt</a>. </strong><strong>*added 8/22/09*</strong><strong> </strong>To further beef up WordPress' search function, why not use Yoast's quick Search Excerpt plugin to return excerpts on the search results page that highlight only the relevant portion of the post that the user requested.</li>
<li><strong><a href="http://www.nateomedia.com/wares/downloads/wordpress/wp-snap/">WP Snap</a>.</strong><strong>*added 8/22/09*</strong><strong> </strong>I use this plugin when I need to display posts in an alphabetical index. Great for glossaries, indexes, and encyclopedias. Also check out my post about <a href="http://www.dquinn.net/sort-posts-by-last-name-using-nate-olsens-wp-snap-plugin-for-wordpress/">sorting by last name</a> when using this plugin.</li>
<li><strong><a href="http://wordpress.org/extend/plugins/picasa-images-express/">Picasa Images Express</a>. </strong><strong>*added 8/22/09*</strong><strong> </strong>The alternative to storing all your photo albums on your web server is hosting them off-site, at Picasa or Flickr. Most people prefer Flickr because of its enormous community and sweet photo management features, but I use Picasa because it allows me to create unlimited albums of my photos and the feed for each album is unlimited, as opposed to limited to 200 photos (for free). So if Picasa is the way to go for you, this plugin will integrate with TinyMCE and provide its own upload management library like the Media Library. Then with one click, you can dump linked thumbnails to all your Picasa photos (an album at a time, or photo at a time, whichever you prefer) into your posts.</li>
<li><strong><a href="http://wordpress.org/extend/plugins/netflix-x2/installation/">Netflix</a></strong> plugin for WordPress. <strong>*added 8/22/09* </strong>While I'm using <a href="http://www.albertbanks.com/2006/01/04/wordpress-netflix-plugin-2/">the original Netflix plugin</a> by Albert Banks, Eric VanBergen made a reimplementation of the plugin with new features. The plugin can display your various Netflix feeds, such as images of the movies in your queue (see my footer throughout the site).</li>
<li><strong><a href="http://wordpress.org/extend/plugins/facelift-image-replacement/">Facelift Image Replacement</a></strong> plugin, or FLIR, (<strong>*added 8/22/09*</strong>) is an image-replacement technique I use on my site to display headings in a specific font that end-users won't have on their computer. This is an alternative to the popular Flash-based image-replacement technique, sIFR. It's a bit complicated to use, in that your stylesheet needs to match up with the settings in FLIR, but it works great (and now actually functions on a local installation too!).</li>
<li><strong><a href="http://wordpress.org/extend/plugins/excerpt-editor/">Excerpt Editor</a>.</strong><strong>*added 8/22/09*</strong><strong> </strong>A very simple tool that will call up the excerpts of all posts and pages on your site, allowing you to check whether or not you made excerpts for these posts. This is especially useful if you use your excerpt as a meta description through the <a href="http://wordpress.org/extend/plugins/all-in-one-seo-pack/">All in One SEO Pack</a> plugin.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a>. Can't believe I left this one off the list! WP Super Cache turns dynamic WordPress pages into static html files, without using PHP resources to serve the files. That way WordPress (hopefully) won't implode when you're squashed by the "Digg Effect." Setup can be tricky when applying the .htaccess rules, but the plugin is otherwise very friendly.</li>
<li><strong><a href="http://wordpress.org/extend/plugins/wp-cms-post-control/">WP CMS Post Control</a>. </strong><strong>*added 8/22/09*</strong><strong> </strong>If you need to hide certain portions of the Dashboard for whatever reason, this is the easiest way to do it, short of attaching your own stylesheet and using display: none.</li>
<li><strong><a href="http://flutter.freshout.us/">Flutter</a>. </strong><strong>*added 8/22/09*</strong><strong> </strong>There's a lot to be said about this amazing plugin, which is slowly being transformed into "Breeze" by Freshout. While it requires a lot of hacks to use in production, I still use a modified version of it in most of my client projects. Flutter "styles" the GUI of custom fields, so that if you're making a WP site for clients, they won't have to deal with WordPress's custom field variable/value pairs. We definitely need to keep an eye on new developments on Flutter's end, as it has the potential to transform WP into a real CMS.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.dquinn.net/35-wordpress-plugins-that-get-the-job-done-freelancing-favorites/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
