<?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>Pro Theme Design</title>
	<atom:link href="http://prothemedesign.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://prothemedesign.com</link>
	<description>Beautiful + Functional WordPress Templates</description>
	<lastBuildDate>Sun, 07 Mar 2010 12:43:59 +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>New Moderators Hired to Pro Theme</title>
		<link>http://prothemedesign.com/news/new-moderators-hired-to-pro-theme/</link>
		<comments>http://prothemedesign.com/news/new-moderators-hired-to-pro-theme/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 21:24:26 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=316</guid>
		<description><![CDATA[Traffic has increased greatly since the launch of <a href="http://prothemedesign.com/themes/elemental">Elemental</a>, <a href="http://prothemedesign.com/themes/thelocal">The Local</a> and <a href="http://prothemedesign.com/themes/accumulo">Accumulo</a> in the last 6 months, so Pro Theme has decided to bring extra help to the forums to make your support experience better and more reliable. ]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">
<p>Traffic has increased greatly since the launch of <a href="http://prothemedesign.com/themes/elemental">Elemental</a>, <a href="http://prothemedesign.com/themes/thelocal">The Local</a> and <a href="http://prothemedesign.com/themes/accumulo">Accumulo</a> in the last 6 months, so Pro Theme has decided to bring extra help to the forums to make your support experience better and more reliable.</p>
</div>
<p>Give a warm welcome to <a href="http://dustinward.com/">Dustin Ward</a> and <a href="https://www.jamesmorrisondesign.com/">James Morrison</a>, 2 talented consultants who make their living off WordPress and have done extensive work with theming. They will continue getting acquainted with the particularities of Pro Theme products while Ben and I will continue to oversee things and concentrate on future plans.</p>
<p>Ultimately we could only afford 2 moderators who met all the criteria, but we were pleased and impressed by the volume of applications we received and want to thank everyone who showed interest!</p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/news/new-moderators-hired-to-pro-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pro Theme Seeks to Hire Forum Moderators</title>
		<link>http://prothemedesign.com/news/pro-theme-seeks-to-hire-forum-moderators/</link>
		<comments>http://prothemedesign.com/news/pro-theme-seeks-to-hire-forum-moderators/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:53:48 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=315</guid>
		<description><![CDATA[Business at Pro Theme continues to grow! And this means more questions to answer <a href="http://forum.prothemedesign.com/">in the forums</a>. Since Ben and I would like to spend more time on development, we would like to hire a forum moderator to help us out, for an hour a day, Monday-Friday.]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">
<p>Business at Pro Theme continues to grow! And this means more questions to answer <a href="http://forum.prothemedesign.com/">in the forums</a>. Ben and I would like to spend more time on development so we&#8217;re looking to hire a forum moderator to help out, for an hour or so each day, Monday-Friday.</p>
</div>
<p><strong>What are the requirements?</strong> You must be talented and experienced at using CSS, PHP and general WordPress theming. You must also be familiar with the workings of<a href="http://prothemedesign.com/products/"> all Pro Theme products</a>, which you will receive for free including upgrades. Priority #1 in the forums is solving potential bugs, and Priority #2 is helping with customization.</p>
<p><strong>Sounds interesting?</strong> <a href="http://prothemedesign.com/contact">Drop us an email</a> for more details about pay and support policies.</p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/news/pro-theme-seeks-to-hire-forum-moderators/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WPVote &#8211; new site from Binary Moon</title>
		<link>http://prothemedesign.com/news/wpvote-new-site-from-binary-moon/</link>
		<comments>http://prothemedesign.com/news/wpvote-new-site-from-binary-moon/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 08:13:45 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=313</guid>
		<description><![CDATA[WPVote is a new WordPress voting site that I launched early last week.
The site is a Digg style community voting site built on the WordPress platform. Not dissimilar in function to software such as Pligg or Drigg (notice a pattern in the naming of these things?) it focuses on the WordPress community and promoting peoples [...]]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt"><a href="http://wpvote.com">WPVote</a> is a new WordPress voting site that I launched early last week.</div>
<div id="attachment_314" class="wp-caption aligncenter" style="width: 610px"><a href="http://prothemedesign.com/news/wpvote-new-site-from-binary-moon/attachment/wpvote-screenshot/" rel="attachment wp-att-314"><img src="http://prothemedesign.com/wp-content/uploads/2010/02/wpvote-screenshot.png" alt="" title="A screenshot of WPVote" width="600" height="294" class="size-full wp-image-314" /></a><p class="wp-caption-text">WPVote</p></div>
<p>The site is a Digg style community voting site built on the WordPress platform. Not dissimilar in function to software such as Pligg or Drigg (notice a pattern in the naming of these things?) it focuses on the WordPress community and promoting peoples content.</p>
<p>There is a full run down of the <a href="http://www.binarymoon.co.uk/category/web-design/wpvote/">WPVote development</a> on my personal site, Binary Moon.</p>
<p>WPVote.com was originally developed by Jean Baptiste Jeung, and he sold it to me late last year so that I could continue the development of it. As well as giving back to the community (by promoting peoples content) my hope is that I can eventually release the theme as a premium theme here on Pro Theme Design.</p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/news/wpvote-new-site-from-binary-moon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Features Added to Accumulo</title>
		<link>http://prothemedesign.com/updates/new-features-added-to-accumulo/</link>
		<comments>http://prothemedesign.com/updates/new-features-added-to-accumulo/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 02:53:30 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=306</guid>
		<description><![CDATA[We got a lot of great feedback when we <a href="http://prothemedesign.com/news/accumulo-aggregator-theme-released/">launched</a> <a href="http://prothemedesign.com/themes/accumulo/">the Accumulo theme</a> last week &#8212; thanks to everyone who offered comments and suggestions. We've started to incorporate some of those feature requests into the next version.]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">We got a lot of great feedback when we <a href="http://prothemedesign.com/news/accumulo-aggregator-theme-released/">launched</a> <a href="http://prothemedesign.com/themes/accumulo/">the Accumulo theme</a> last week &mdash; thanks to everyone who offered comments and suggestions.</div>
<p>It&#8217;s not a conventional WordPress theme for blogging, but it does come with its own custom Blog page template (<a href="http://demo.prothemedesign.com/wordpress/accumulo/blog/">live example</a>). The problem is that some users wanted to merge the blog with the homepage feeds so that it wasn&#8217;t obscured. </p>
<h2>Blog option for the homepage</h2>
<p>So what Ben did was to add an option that lets you assign which tab will display the blog on the homepage:</p>
<div id="attachment_308" class="wp-caption aligncenter" style="width: 511px"><img src="http://prothemedesign.com/wp-content/uploads/2010/01/accumulo-blog1.png" alt="" title="accumulo-blog" width="501" height="128" class="size-full wp-image-308" /><p class="wp-caption-text">New homepage blog option</p></div>
<p>In the same Options panel, you can then name that tab whatever you want (ex: &#8220;Blog&#8221;):</p>
<div id="attachment_309" class="wp-caption aligncenter" style="width: 511px"><img src="http://prothemedesign.com/wp-content/uploads/2010/01/accumulo-tab.png" alt="" title="accumulo-tab" width="501" height="349" class="size-full wp-image-309" /><p class="wp-caption-text">Assign a tab to your blog</p></div>
<p>As you can see on <a href="http://demo.prothemedesign.com/wordpress/accumulo/">the live homepage</a>, you can now display the blog in whatever tab you choose:</p>
<div id="attachment_310" class="wp-caption aligncenter" style="width: 511px"><img src="http://prothemedesign.com/wp-content/uploads/2010/01/accumulo-bloghp.png" alt="" title="accumulo-bloghp" width="501" height="249" class="size-full wp-image-310" /><p class="wp-caption-text">Optional blog tab on the homepage</p></div>
<h2>Caching</h2>
<p>By nature Accumulo is intended for aggregating outside content which means there must be some restrictions on caching or else the page-load would get very slow as it struggled to collect all those feeds. To give the user more flexibility, Ben added some caching options that can be adjusted depending on your preference:</p>
<div id="attachment_311" class="wp-caption aligncenter" style="width: 511px"><img src="http://prothemedesign.com/wp-content/uploads/2010/01/accumulo-caching.png" alt="" title="accumulo-caching" width="501" height="239" class="size-full wp-image-311" /><p class="wp-caption-text">New caching options</p></div>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/updates/new-features-added-to-accumulo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Massive Upgrades to Elemental</title>
		<link>http://prothemedesign.com/news/massive-upgrades-to-elemental/</link>
		<comments>http://prothemedesign.com/news/massive-upgrades-to-elemental/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 21:48:46 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=305</guid>
		<description><![CDATA[The <a href="http://prothemedesign.com/themes/elemental/">Elemental framework for WordPress</a> continues to be a hot-selling theme. According to the changelog, it received <strong>396 code changes</strong> this month! Some were bug fixes and some were feature additions, but overall it continues to grow simultaneously more powerful and more clean, code-wise.]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">The <a href="http://prothemedesign.com/themes/elemental/">Elemental framework for WordPress</a> continues to be a hot-selling theme. According to the changelog, it received <strong>396 code changes</strong> this month! Some were bug fixes and some were feature additions, but overall it continues to grow simultaneously more powerful and more clean, code-wise.</div>
<p><strong>Noteworthy changes:</strong></p>
<ul>
<li>Widget area descriptions, <a href="http://wpengineer.com/wordpress-widget-areas-with-description/">per  WordPress 2.9</a></li>
<li>Google Analytics code <a href=" http://analytics.blogspot.com/2009/12/google-analytics-launches-asynchronous.html">changed to Asynchronous method</a></li>
<li>New header-image upload method. Reduces reliance on problem-causing legacy code. <strong>Note:</strong> if you use the old header image method, it will be reset and you&#8217;ll need to re-upload the image. This is a one time deal, and won&#8217;t be required again. Apologies for any problems it may cause</li>
<li>New favicon upload method</li>
<li>New admin panel branding abilities. You can now add your own header image and footer text. Perfect for designing sites for clients, or for websites that require public accounts logins</li>
<li>Calendar added to <a href="http://demo.prothemedesign.com/wordpress/elemental/archives/">Archives page</a> to enable easier traversal of historical content</li>
<li>TimThumb updates to latest version which featured stack of bug fixes and improvements</li>
<li>Improved custom post options which allow for filtering via plugins or child themes</li>
<li>Fixed Google maps widget (they changed the API which broke the widget positioning &#8211; doh!)</li>
<li>Major improvements and code clean-up added to <a href="http://demo.prothemedesign.com/wordpress/elemental/sitemap/">Sitemap page template</a></li>
<li>New page numbers layout for paged content</li>
<li>Option to hide the home link</li>
<li>Subtle improvements to caching system</li>
<li>TimThumb shortcode (<a href="http://codex.wordpress.org/Shortcode_API">more</a>) can now dynamically resize images in posts. <strong>Example:</strong> [thumb width="" height=""]http://image/path[/thumb]</li>
<li>New option for &#8220;Post Details&#8221;s widget so author details can be displayed on pages OR posts OR pages and posts &#8211; it&#8217;s your website so your choice</li>
<li>Improved admin bar for logged-in users which includes gravatar and link to user account. Allows for good integration for community sites (such as the upcoming <a href="http://wpvote.com">WPVote.com</a> redesign)</li>
</ul>
<p>In general if you&#8217;re looking for information about updates, you can log into <a href="http://accounts.prothemedesign.com">your accounts panel</a> and view changelog records there. We are also working to sync up the custom Elemental dashboard widget with the Pro Theme blog. Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/news/massive-upgrades-to-elemental/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Customizing Mimbo Pro&#8217;s Category Summary Display</title>
		<link>http://prothemedesign.com/how-to/customizing-mimbo-pros-category-summary-display/</link>
		<comments>http://prothemedesign.com/how-to/customizing-mimbo-pros-category-summary-display/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 22:49:23 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[How To]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=303</guid>
		<description><![CDATA[One of the most frequent questions we get asked is how to customize the order of the homepage category summaries on Mimbo Pro. With the power of child themes and hooks this is actually incredibly straight forward. It takes just 5 lines of code to change your homepage order.]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">One of the most frequent questions we get asked is how to customize the order of the homepage category summaries on Mimbo Pro. With the power of child themes and hooks this is actually incredibly straight forward.</div>
<p>It takes just 5 lines of code, placed in your functions.php file, to change your homepage order.</p>
<p><code>function bm_alterCategoryOrder($settings) {<br />
$settings['category'] = array(1,2,3);<br />
return $settings;<br />
}<br />
add_filter('bm_categorySummaryDetails','bm_alterCategoryOrder');</code></p>
<p>All you have to do to set the different category orders is swap the 1,2,3 above for a comma separated list of category ids.</p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/how-to/customizing-mimbo-pros-category-summary-display/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accumulo Aggregator Theme Released</title>
		<link>http://prothemedesign.com/news/accumulo-aggregator-theme-released/</link>
		<comments>http://prothemedesign.com/news/accumulo-aggregator-theme-released/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 16:01:06 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=298</guid>
		<description><![CDATA[Pro Theme has added a new theme to <a href="/themes/">our products page</a> called <a href="/themes/accumulo/">Accumulo</a>. The homepage contains tabbed, custom RSS widgets for aggregating niche content. It's like a premium version of the  <a href="http://alltop.com">AllTop</a>-inspired <a href="http://www.wptopics.com/">WPTopics</a>...]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">Pro Theme has added a new theme to <a href="/themes/">our products page</a> called <a href="/themes/accumulo/">Accumulo</a>. The homepage contains tabbed, custom RSS widgets for aggregating niche content. It&#8217;s like a premium version of the  <a href="http://alltop.com">AllTop</a>-inspired <a href="http://www.wptopics.com/">WPTopics</a>:</div>
<div id="attachment_299" class="wp-caption aligncenter" style="width: 510px"><a href="http://demo.prothemedesign.com/wordpress/accumulo/" title="View Live Demo"><img src="http://prothemedesign.com/wp-content/uploads/2010/01/accumulo-screenshot.png" alt="" width="500" height="476" class="size-full wp-image-299" /></a><p class="wp-caption-text">Accumulo Live Demo &raquo;</p></div>
<h2>Who is it For?</h2>
<p>You may be a blogger who likes to write but also need a site that <strong>collects niche content</strong> from all over the web. Accumulo lets you publish it, excerpt it, categorize it and rearrange it using a custom control panel screen.</p>
<div id="attachment_300" class="wp-caption aligncenter" style="width: 510px"><a href="http://demo.prothemedesign.com/wordpress/accumulo/"><img src="http://prothemedesign.com/wp-content/uploads/2010/01/accumlo_panel.png" alt="" title="accumlo_panel" width="500" height="470" class="size-full wp-image-300" /></a><p class="wp-caption-text">Accumulo Theme Options Screen</p></div>
<p>On the front end, <strong>Accumulo</strong> provides a clean and easily-customized layout enhanced with smooth, elegant jQuery animations in the tabs, dropdown menus and &#8216;back to top&#8217; button. Set up <strong>Accumulo</strong> as as a personal content &#8216;hub&#8217; and monetize it with ease. </p>
<h2>What Can it Do?</h2>
<p>The infrastructure of <strong>Accumulo</strong> mixes <a href="http://www.darrenhoyt.com/products/gravy/">Gravy&#8217;s</a> clean markup with the premium features and widgets of <a href="http://prothemedesign.com/themes/elemental/">Elemental</a>. Additional features include:</p>
<ul>
<li>Custom page template for Blog and Archives</li>
<li>Animated multi-level dropdown menus</li>
<li>Custom control panel options to control tab names and ordering</li>
<li>Custom widgets for Twitter Updates, Popular Posts, Facebook and more.</li>
<li>Front-end admin bar for adding or editing posts</li>
<li>Smooth tab and scroll-to-top animations</li>
<li>Image thumbnail resizing</li>
<li>Support for gravatars, author comment highlighting, threaded comments and paged comments</li>
<li>Full localization and translation support</li>
<li>Widgetized sidebar and footer</li>
</ul>
<div align="center"><a href="http://demo.prothemedesign.com/wordpress/accumulo/">View Live Demo</a> | <a href="http://prothemedesign.com/themes/accumulo/">View Product Page</a></div>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/news/accumulo-aggregator-theme-released/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Pro Theme Donating to Haiti Relief</title>
		<link>http://prothemedesign.com/news/pro-theme-donating-to-haiti-relief/</link>
		<comments>http://prothemedesign.com/news/pro-theme-donating-to-haiti-relief/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 18:49:00 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=296</guid>
		<description><![CDATA[Pro Theme is currently donating <strong>100%  of proceeds</strong> from <a href="http://prothemedesign.com/products/">our themes</a> to the earthquake relief effort in Haiti. If you were already considering buying a theme, please consider doing so now and helping these two organizations...]]></description>
			<content:encoded><![CDATA[<div id="lead-excerpt">Pro Theme is currently donating <strong>100%  of proceeds</strong> from <a href="http://prothemedesign.com/products/">our themes</a> to the earthquake relief effort in Haiti. If you were already considering buying a theme, please consider doing so now and helping these two organizations:</div>
<h2>Partners in Health</h2>
<p><strong>PIH</strong> focuses on <a href="http://www.pih.org/what/PIHmodel.html">providing medical care to the poor</a> in developing countries. They need donations to continue their community-based care model which has helped many countries, <a href="http://www.pih.org/where/Haiti/Haiti.html">especially Haiti</a>, since 1987. They also provide free education programs and improvements to sanitation, clean water and economic opportunities in the communities they serve.</p>
<h2>Doctors Without Borders</h2>
<p><strong>DWB</strong> is an impartial humanitarian organization created by doctors and journalists in 1971 to serve countries suffering under war, epidemic, disaster and overall lack of healthcare access. DWB is <a href="http://www.nytimes.com/aponline/2010/01/13/world/AP-CB-Haiti-Doctors-Without-Borders.html">already on the ground</a> in Haiti but lacks sufficient &#8220;medical staff, equipment and medicine to properly care for the injured.&#8221;</p>
<div align="center">. . . .</div>
<p><strong>Related Links:</strong></p>
<ul>
<li><a href="http://www.boston.com/bigpicture/2010/01/earthquake_in_haiti.html">Boston.com Big Picture: Earthquake in Haiti</a></li>
<li><a href="http://roomfordebate.blogs.nytimes.com/2010/01/14/the-help-that-haiti-needs/?hp">The Help that Haiti Needs</a></li>
<li><a href="http://abcnews.go.com/Politics/HaitiEarthquake/haiti-earthquake-donations-haiti-relief-efforts-text-message/story?id=9551199">Text Messages Speed Donations to Haiti</a></li>
<li><a href="http://www.guardian.co.uk/news/blog/2010/jan/14/haiti-earthquake-updates">Haiti Live Blog Updates</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/news/pro-theme-donating-to-haiti-relief/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating Custom WordPress Widgets</title>
		<link>http://prothemedesign.com/how-to/creating-custom-wordpress-widgets/</link>
		<comments>http://prothemedesign.com/how-to/creating-custom-wordpress-widgets/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 19:40:20 +0000</pubDate>
		<dc:creator>darren</dc:creator>
				<category><![CDATA[How To]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=290</guid>
		<description><![CDATA[With each new version of WordPress, the argument whether or not it qualifies as a CMS gets a little quieter.  In the WordPress core we have widgets, custom fields, custom taxonomies, and with version 2.9, an expansion of <a href="http://codex.wordpress.org/Function_Reference/get_post_type">get_post_type</a>. Add a few plugins and all sorts of <a href="http://www.kevinleary.net/6-ways-to-create-custom-write-panels-in-wordpress/">post-types and custom write panels</a> become a reality. ]]></description>
			<content:encoded><![CDATA[<p>With each new version of WordPress, the argument whether or not it qualifies as a CMS gets a little quieter.  In the WordPress core we have widgets, custom fields, custom taxonomies, and with version 2.9, an expansion of <a href="http://codex.wordpress.org/Function_Reference/get_post_type">get_post_type</a>. Add a few plugins and all sorts of <a href="http://www.kevinleary.net/6-ways-to-create-custom-write-panels-in-wordpress/">post-types and custom write panels</a> become a reality. </p>
<p>All this functionality is great so long as you, the developer, implement it in a way that is tough to break. Because once in the hands of the client, anything goes.</p>
<p>Then there is the issue of layout. For clients, moving content from one column to the other can be a technical hurdle, particularly for dynamic sites which rearrange content frequently to satisfy advertisers, audience demands, and so on. Default drag-and-drop widgets are a great part of our arsenal, but adding <strong>custom</strong> widgets can really make life simpler for both developer and client.</p>
<h2>Example Custom Widgets</h2>
<p>In the quest to give more control to end users, <a href="http://prothemedesign.com">Pro Theme</a> has been experimenting with more custom widgets. Check out the demo for themes like <a href="http://demo.prothemedesign.com/wordpress/thelocal">The Local</a> and <a href="http://demo.prothemedesign.com/wordpress/elemental">Elemental</a> for examples. </p>
<p><a href="http://demo.prothemedesign.com/wordpress/thelocal"><img class="blogpic aligncenter" src="http://darrenhoyt.com/images/blog/thelocal.png" alt="the local theme" /></a></p>
<p>Below are widgets we&#8217;ve started including with most themes, including <a href="http://demo.prothemedesign.com/wordpress/mimbo-pro">Mimbo Pro</a>:</p>
<ul>
<li><strong>Google Adsense.</strong> In the control panel you enter your Adsense ID and the widgets display ads accordingly. Works in any of the <a href="https://www.google.com/adsense/static/en_US/AdFormats.html?hl=en_US&#038;gsessionid=1nqtm0jf_zeIJPX1ABVGpw">standard block sizes</a>.</li>
<li><strong>Community Tweets.</strong> Aggregates Twitter activity according to location latitude/longitude. Contains fields for <em class="hilite">Number of Tweets</em> and <em class="hilite">Mile Radius</em>.</li>
<li><strong>Latest Tweets.</strong> Contains fields for <em class="hilite">Username</em> and <em class="hilite">Number of Tweets</em></li>
<li><strong>Post Author Details.</strong> Contains author avatar, date and comments feed. </li>
<li><strong>Upcoming Posts.</strong> Displays a list of future-dated posts.</li>
<li><strong>More from this Author.</strong> For single-post pages. Displays five headlines from the same author.</li>
<li><strong>More from this Category.</strong> For single-post pages. Displays five headlines from the same category.</li>
<li><strong>Print Preview.</strong> Uses javascript to render the page print-friendly and free of images.</li>
<li><strong>Share This.</strong> Lets you post the current page to Twitter, StumbleUpon, Digg, Delicious and Facebook.</li>
<li><strong>YouTube.</strong> Displays a featured video with fields for <em class="hilite">Embed Code</em> and <em class="hilite">Description</em></li>
<li><strong>Map Your Location.</strong> A Google Maps widget with fields for <em class="hilite">Location</em>, <em class="hilite">Zoom Amount</em> and <em class="hilite">Type of Map View (Roadmap, Satellite or Terrain).</em></li>
<li><strong>Popular Posts.</strong> Displays five headlines of most-commented posts.</li>
<li><strong>Subscribe to Feed.</strong> Includes an RSS icon and feed link.</li>
</ul>
<p>In the case of <a href="http://prothemedesign.com/themes/thelocal/">The Local</a>, the entire homepage is 90% widgetized, with four columns to configure. We&#8217;ve gotten tons of great feedback from users who rely on positioning Google Adsense blocks and want to adjust their content accordingly. Not to mention writers in the hyperlocal space who write unique content, but also rely on aggregating from other sites and social media sources.</p>
<h2>How Do Custom Widgets Work</h2>
<p>At the simplest possible level, custom widgets are implemented by 1) creating a class, and 2) registering a new widget. Forget about functionality <strong>within</strong> the widget for a moment and look at the basic setup which you would paste inside <em class="hilite">functions.php</em>:</p>
<pre name="code" class="php"><code>
class My_Widget extends WP_Widget {
	function My_Widget() {
		parent::WP_Widget(false, 'Our Test Widget');
	}

	function form($instance) {
		// outputs the options form on admin
	}

	function update($new_instance, $old_instance) {
		// processes widget options to be saved
		return $new_instance;
	}

	function widget($args, $instance) {
		// outputs the content of the widget
	}

}
register_widget('My_Widget');
</code>
</pre>
<p>That&#8217;s it. We can now visit our widgets panel to confirm:</p>
<p><img src="http://darrenhoyt.com/images/blog/customwidget.png" alt="custom widget" class="blogpic aligncenter" /></p>
<p>Adding editable <strong>functionality</strong> into our widget  is another story. Using the &#8220;Popular Posts&#8221; widget as an example, my partner <a href="http://www.binarymoon.co.uk/">Ben Gillbanks</a> will walk us through creating the rest.</p>
<h2>Creating a &#8220;Popular Posts&#8221; Widget</h2>
<p>Firstly we have to name the widget class. I prefix my functions and classes with <em>bm_</em> (<a href="http://www.binarymoon.co.uk/">Binary Moon</a>) as it means there will never be any clashes with other functions and plugins. We can then name the widget in the <em>constructor</em>, which is the first function, and it should have the same name as the class. This will be called when the class is first created and it defines the name you see in the widget editor.</p>
<p>Next up, I create the <em>last method</em> which is a form function which defines what data can be editable within the widget. In this case, it&#8217;s simply the title of the widget to be displayed on the blog. The <em>update method</em> can often remain as it is, although you may want to do some data validation (make sure the data input is safe/ allowed). </p>
<p>Then finally, the <em>widget method</em>. This is where the widget itself is displayed. You&#8217;ll notice I am actually passing the arguments to another function that is elsewhere in the theme. The reason I do this is because I like to split the display out separately so that I can use the function directly in the theme <em>without</em> widgets as well.</p>
<p>Notice the <em>$args</em> parameter in the widget method. These args are actually the arguments you pass to the register sidebar method, before_widget, after_widget etc. You can read more about these and creating custom widgets on the <a href="http://codex.wordpress.org/Widgets_API">WordPress Codex Widget API</a> page. </p>
<p>Here is the final code:</p>
<pre name="code" class="php"><code>
&lt;?php
class bm_widget_popularPosts extends WP_Widget {

	function bm_widget_popularPosts() {
		parent::WP_Widget(false, 'Popular Posts');
	}

	function widget($args, $instance) {
		$args['title'] = $instance['title'];
		bm_popularPosts($args);
	}

	function update($new_instance, $old_instance) {
		return $new_instance;
	}

	function form($instance) {
		$title = esc_attr($instance['title']);
?>
		&lt;p>&lt;label for="&lt;?php echo $this->get_field_id('title'); ?>">&lt;?php _e('Title:'); ?> &lt;input class="widefat" id="&lt;?php echo $this->get_field_id('title'); ?>" name="&lt;?php echo $this->get_field_name('title'); ?>" type="text" value="&lt;?php echo $title; ?>" />&lt;/label>&lt;/p>
&lt;?php
	}

}

function bm_popularPosts($args = array(), $displayComments = TRUE, $interval = '') {

	global $wpdb;

	$postCount = 5;

	$request = 'SELECT *
		FROM ' . $wpdb->posts . '
		WHERE ';

	if ($interval != '') {
		$request .= 'post_date>DATE_SUB(NOW(), ' . $interval . ') ';
	}

	$request .= 'post_status="publish"
			AND comment_count > 0
		ORDER BY comment_count DESC LIMIT 0, ' . $postCount;

	$posts = $wpdb->get_results($request);

	if (count($posts) >= 1) {

		if (!isset($args['title']) {
			$args['title'] = 'Popular Posts';
		}

		foreach ($posts as $post) {
			wp_cache_add($post->ID, $post, 'posts');
			$popularPosts[] = array(
				'title' => stripslashes($post->post_title),
				'url' => get_permalink($post->ID),
				'comment_count' => $post->comment_count,
			);
		}

		echo $args['before_widget'] . $args['before_title'] . $args['title'] . $args['after_title'];
?>

		&lt;ol>
&lt;?php
		foreach ($popularPosts as $post) {
?>
			&lt;li>
				&lt;a href="&lt;?php echo $post['url'];?>">&lt;?php echo $post['title']; ?>&lt;/a>
&lt;?php
			if ($displayComments) {
?>
			(&lt;?php echo $post['comment_count'] . ' ' . __('comments', BM_THEMENAME); ?>)
&lt;?php
			}
?>
			&lt;/li>
&lt;?php
		}
?>
		&lt;/ol>

&lt;?php
		echo $args['after_widget'];
	}
}
?>
</code>
</pre>
<h2>Further Uses for Custom Widgets?</h2>
<p>Clients frequently need special notifications and other dynamic bits to display on their site with minimal fuss. What other content that&#8217;s frequently handled via plugins would make a great custom widget?</p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/how-to/creating-custom-wordpress-widgets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elemental Tip: Remove the Pro Theme Design Footer Link</title>
		<link>http://prothemedesign.com/how-to/elemental-quick-tip-remove-the-pro-theme-design-footer-link/</link>
		<comments>http://prothemedesign.com/how-to/elemental-quick-tip-remove-the-pro-theme-design-footer-link/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 22:51:37 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[How To]]></category>

		<guid isPermaLink="false">http://prothemedesign.com/?p=291</guid>
		<description><![CDATA[By default <a href="http://prothemedesign.com/themes/elemental/">Elemental</a> (and it's <a href="http://prothemedesign.com/themes/thelocal/">child themes such as The Local</a>) come with a link to Pro Theme Design in the footer. Obviously we'd love it if you kept this in place, but it's by no means a requirement at all.]]></description>
			<content:encoded><![CDATA[<p>By default <a href="http://prothemedesign.com/themes/elemental/">Elemental</a> (and it&#8217;s <a href="http://prothemedesign.com/themes/thelocal/">child themes such as The Local</a>) come with a link to Pro Theme Design in the footer. Obviously we&#8217;d love it if you kept this in place, but it&#8217;s by no means a requirement at all.</p>
<p>If you open up footer.php in Elemental you will see that there is no reference to Pro Theme Design, however we&#8217;re not trying to hide the links, what we&#8217;re trying to do is make the theme as flexible as possible, and so you can easily edit the links using a child theme and a simple filter in your child themes functions.php file (<a href="http://prothemedesign.com/support/general-wordpress-help/">more info on child themes here</a>).</p>
<h2>Swap the credit link for a &#8220;Powered by WordPress link&#8221;</h2>
<p><code><br />
function changeFooterLinks($footerLinks) {<br />
	$footerLinks[1] = 'Powered by &lt;a href="http://wordpress.org">WordPress</a>';<br />
	return $footerLinks;<br />
}<br />
add_filter('bm_footerContent', 'changeFooterLinks');<br />
</code></p>
<h2>Remove the credit entirely</h2>
<p><code><br />
function changeFooterLinks($footerLinks) {<br />
	unset($footerLinks[1]);<br />
	return $footerLinks;<br />
}<br />
add_filter('bm_footerContent', 'changeFooterLinks');<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://prothemedesign.com/how-to/elemental-quick-tip-remove-the-pro-theme-design-footer-link/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.354 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-14 00:12:52 -->
<!-- Compression = gzip -->