<?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>WordPress Web Hosting &#187; WordPress Pods CMS</title>
	<atom:link href="http://www.shrewdies.net/blog/wordpress-pods/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shrewdies.net</link>
	<description>Business Web Hosting For Shrewdies Not Dummies</description>
	<lastBuildDate>Thu, 26 Aug 2010 19:11:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>WordPress Plugin: Promotion Tool</title>
		<link>http://www.shrewdies.net/1558/promotion-tools-plugins-wordpress/</link>
		<comments>http://www.shrewdies.net/1558/promotion-tools-plugins-wordpress/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 13:34:21 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Form]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[Happiness Today]]></category>
		<category><![CDATA[WordPress blogging]]></category>
		<category><![CDATA[wordpress plugin]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=1558</guid>
		<description><![CDATA[Many of you looking for a WordPress plugin promotion tool have stumbled across my Happiness Today plugin. You seem disappointed that the next version is where the real promotion potential lies, but the good news is that you do not need to wait. If you have downloaded and activated Happiness Today, then you already have [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">Many of you looking for a WordPress plugin promotion tool have stumbled across my <a href="http://www.shrewdies.net/happiness_today" title="WordPress Plugin: Promotion Tool">Happiness Today</a> plugin.</p>
<p>You seem disappointed that the next version is where the real promotion potential lies, but the good news is that you do not need to wait.</p>
<p>If you have downloaded and activated Happiness Today, then you already have a tool for displaying random (or selected) promotion messages in your WordPress posts, pages or sidebar.</p></div>
<p>The main appeal of Pods is the way it makes extending the WordPress database so easy. But stored data is of little use if you cannot present it to your visitors. My first release of Happiness Today was just to prove that, like Hello Dolly does for standard WordPress, it is very easy to build a basic plugin. That basic plugin instantly demonstrates how Pods stores and displays data. In keeping with the Hello Dolly tradition, I displayed random lyrics in the Admin area &#8211; but the real life potential was always to be able to produce something simple yet useful, that can display random promotion messages to visitors.</p>
<p>Those promotional features are included in the current release, just not obvious. Here&#8217;s how to use Pods inbuilt features to get more from the Happiness Today plugin. Start your marketing campaign now.<span id="more-1558"></span></p>
<h2>WordPress Pods Presentation Features</h2>
<p>In the plugin, I present the messages via a Pods template that is called whenever an admin page loads. That template adds formatting to match the admin color scheme, and configurable link buttons. I also present the full set of lyrics on the happiness_today information page using a very simple template that adds nothing but a line break.</p>
<p>Pods output is not restricted to templates that can be as simple or as complex as you need them. Neither is it restricted to Pods pages such as the example mentioned, where you can build a page similar to a WordPress page, but with easy access to your data. You can also include Pods output in regular WordPress posts and pages with a simple shortcode call. Like this:<br />
<!-- This site is running development Happiness Today<br />
       Released version uses different name &#038; template --></p>
<blockquote>And inbetweens don't feel left out
<br>
What makes you think that you're not proud?<br /></blockquote>
<p>That is a simple Pods shortcode wrapped in blockquote tags, but you are only limited by your imagination, and css talents. How about:</p>
<style type="text/css">
.podsdemo
{
	margin:1em 5em 1em 5em;
	padding: 1em;
	border: 1em outset red;
}
p.podsdemo:first-letter
{
	color:#ff0000;
	font-size:200%;
	float:left;
}
p.podsdemo:first-line {
	font-size:110%;
	text-transform: uppercase;
	font-weight:bold;
}</p>
</style>
<p><!-- This site is running development Happiness Today<br />
       Released version uses different name &#038; template --></p>
<div>
<p class="podsdemo">Think of happiness today
<br>
All is one in their own way<br />Think of happiness today
<br>
All is one in their own way<br /></p>
</div>
<p>In this second example, I&#8217;ve set the limit to two records. Note that records are called randomly, but I have included the chorus several times, so that will appear more frequently &#8211; just refresh your browser to see the random effect.</p>
<p>All you need to do is add the following shortcode to your post, page or text widget:</p>
<pre>&#91;pods name="happiness_today_text" order="RAND()" limit="1" template="happiness_today_list"]</pre>
<h2>WordPress Plugin Promotion Tool: Next Steps</h2>
<p>All the data in the <a href="http://www.shrewdies.net/happiness_today" title="WordPress Plugin: Promotion Tool">Happiness Today</a> plugin is easily edited using the Pods data table editing features. In my example, I use couplets from the Think Of Happiness Today lyrics. Though I limit the example text to two lines so that it displays in the admin area properly, you can use any HTML text you like. The Pods WYSIWYG editor allows the usual formatting including hyperlinks, or direct entry of HTML code.</p>
<p>Using Happiness Today for longer visitor messages might make your admin area a little cluttered. No problem &#8211; simply deactivate Happiness Today &#8211; the data management and presentation features that I have discussed here are all part of standard Pods, and will work fine.</p>
<p>In future versions, I&#8217;ll add the ability to import and export different campaign text sets, with other options to make life even easier than it is with the basic release. But you do not need to wait &#8211; the current release can be used for any promotion campaign you can think of, including random advertising. In fact, it does not even need to be random, for instance specific records can be called on specific posts. The only limit is your imagination.</p>
<p><!--more--><div style="margin-left:-1em;"><table><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-7512621270035949";
/* shrewdies 300x250, created 22/12/09 */
google_ad_slot = "4026195862";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td><td>
<script type="text/javascript"><!--
ch_client = "GoutPal";
ch_type = "mpu";
ch_width = 300;
ch_height = 250;
ch_color_bg = "ffffff";
ch_color_border = "ffffff";
ch_color_title = "00009e";
ch_color_site_link = "00009e";
ch_non_contextual = 4;
ch_vertical ="premium";
ch_sid = "ShrewdiesReward";
ch_alternate_ad_url = "http://www.shrewdies.net/ad.html";
var ch_queries = new Array( );
var ch_selected=Math.floor((Math.random()*ch_queries.length));
if ( ch_selected < ch_queries.length ) {
ch_query = ch_queries[ch_selected];
}
//--></script>
<script  src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript">
</script></td></tr></table></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/1558/promotion-tools-plugins-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Pods: Food For Thought</title>
		<link>http://www.shrewdies.net/1445/wordpress-pods-food-for-thought/</link>
		<comments>http://www.shrewdies.net/1445/wordpress-pods-food-for-thought/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 11:41:25 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Form]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=1445</guid>
		<description><![CDATA[The data-presentation link is vital. To get the best out of WordPress Pods, it pays to study the sample that is packaged with the Pods CMS plugin, and the more advanced examples in the Pods Packages directory. It is also vital to have a clear plan of the presentation outcomes that you need. When describing [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">The data-presentation link is vital. To get the best out of WordPress Pods, it pays to study the sample that is packaged with the Pods CMS plugin, and the more advanced examples in the Pods Packages directory.</p>
<p>It is also vital to have a clear plan of the presentation outcomes that you need.</p></div>
<p>When describing the <a href="http://www.shrewdies.net/1382/wordpress-database-with-pods-wings/">data aspect</a> of my first plugin, I wrote of the importance of thoroughly analyzing the relationship between the presentation of content required, and the structure of data needed to support it. Recently, I saw a question on the <a href="http://podscms.org/forums/installation/cafe-menu">Pods Support Forum</a> that seemed to relate to this area. I was particularly interested in it because the issues seemed to be similar to matters I had encountered with my <a href="http://www.shrewdies.net/shrewdbar/" title="shrewdBar WordPress Menu Bar Plugin">shrewdBar WordPress menu bar plugin</a>.</p>
<p>The difficulty with forum discussions is fully understanding what the issues are. If one is sat with a client, or even on a video link, it is easy to mock up a quick display and discuss what the presentation should actually look like. Difficulties are compounded with cultural and time-zone differences. But, &#8220;All is one in their own way,&#8221; and the power of the Internet allows the following attempt at understanding the problem and suggesting a solution.</p>
<p>I hope it solves the problem it tries to address, but even if it doesn&#8217;t, I&#8217;ve learned a neat CSS trick that I&#8217;ll be using again.</p>
<h2>Basic Pods Data Display</h2>
<p>First, create the Pod (Pods &#8211; Setup &#8211; Pods &#8211; Add new pod) using the data supplied.<img src="http://www.shrewdies.net/wp-content/uploads/wordpress-pods-table.png" alt="WordPress Pods Table" title="WordPress Pods Table" width="434" height="233" class="aligncenter size-full wp-image-1452" /><br />
Second, <span id="more-1445"></span>add some test data (Pods &#8211; Add {name_of_pod}). We could have used the Pod menu settings to make this title more meaningful, or even used a separate menu out of the Pods hierarchy.<br />
Third, create the Template (Pods &#8211; Setup &#8211; Templates &#8211; Add new template)<br />
<img src="http://www.shrewdies.net/wp-content/uploads/wordpress-pods-template.png" alt="WordPress Pods Template" title="WordPress Pods Template" width="548" height="156" class="aligncenter size-full wp-image-1454" />
<p align= "right"><sup><a href="#screenshot">Happiness Today screenshot note</a></sup></p>
<p>Fourth, test the output without any styling using
<pre>&lt;ul>&#91;pods name="shrewdies_cafe_menu"  template="shrewdies_cafe_menu"]&lt;/ul></pre>
<p><img src="http://www.shrewdies.net/wp-content/uploads/wordpress-pods-simple-output.png" alt="WordPress Pods Simple Output" title="WordPress Pods Simple Output" width="176" height="185" class="alignleft size-full wp-image-1458" />Fifth, go back to the template, change the list (li) tag to anchor (a &#8211; because we need to hover), and add the labels for the prices. Then apply some styling.</p>
<p>The span tags in the template seem redundant up to now, but they are there for a very good reason. The popup display in the &#8220;client brief&#8221; didn&#8217;t seem relevant for the small amount of information to display. Given it&#8217;s complexity, I searched for something simpler, and found <a href="http://meyerweb.com/eric/css/edge/popups/demo.html">Eric&#8217;s pure css popups</a>. So, adding some CSS styling, our list is transformed into:</p>
<style type="text/css">
<!--
div#links {width: 166px; height: 300px; font: 16px Verdana, sans-serif; z-index: 100;}
div#links a {display: block; text-align: center; font: bold 1em sans-serif; 
   padding: 5px 10px; margin: 0 0 1px; border-width: 0; 
   text-decoration: none; color: #FFC; background: #444;
   border-right: 5px solid #505050;}
div#links a:hover {color: #411; background: #AAA;
   border-right: 5px double white;}</p>
<p>div#links a span {display: none;}
div#links a > span {display: none;}
div#links a:hover span {display: block;
   position: relative; top: 0px; left: 100; width: 125px;
   padding: 5px; margin: 10px; z-index: 100;
   color: #AAA; background: black;
   font: 10px Verdana, sans-serif; text-align: center;}</p>
<p>-->
</style>
<div id="links"><a href="">Spicy Salver <span>Breakfast Price: $9.99<br />Lunch Price: $15.99<br />Dinner Price: $19.99</span></a><a href="">Golden Gutbuster <span>Breakfast Price: $19.99<br />Lunch Price: $25.99<br />Dinner Price: $29.99</span></a><a href="">Fish Fantasy <span>Breakfast Price: $12.97<br />Lunch Price: $15.97<br />Dinner Price: $19.97</span></a><a href="">Platinum Platter <span>Breakfast Price: $15.99<br />Lunch Price: $18.99<br />Dinner Price: $25.75</span></a><a href="">Bronze Buffet <span>Breakfast Price: $9.99<br />Lunch Price: $11.99<br />Dinner Price: $15.99</span></a></div>
<h3>WordPress Style Notes</h3>
<p>The transforming CSS is called by wrapping our Pods call in an appropriate div:</p>
<pre>&lt;div id="links">&#91;pods name="shrewdies_cafe_menu"  template="shrewdies_cafe_menu"]&lt;/div></pre>
<p>I&#8217;ve taken Eric&#8217;s CSS style and included it in this post, though in practice, you would probably paste it into your theme&#8217;s style sheet. Eric uses his for a menu positioned absolutely near the top left, so I have removed the container styling, and changed the span positioning to relative. I also added the bold line below &#8211; a duplicate of the preceding span line, with a greater than to signify anchor text that is a <a href="http://www.w3.org/TR/CSS21/selector.html#child-selectors">child selector</a> of a span. Without both versions, the span element refuses to hide &#8211; I assume this is a conflict with the styling from my theme.</p>
<pre>&lt;style type="text/css">
&lt;!--
div#links {width: 166px; height: 300px; font: 16px Verdana, sans-serif; z-index: 100;}
div#links a {display: block; text-align: center; font: bold 1em sans-serif;
   padding: 5px 10px; margin: 0 0 1px; border-width: 0;
   text-decoration: none; color: #FFC; background: #444;
   border-right: 5px solid #505050;}
div#links a:hover {color: #411; background: #AAA;
   border-right: 5px double white;}

div#links a span {display: none;}
<b>div#links a > span {display: none;}</b>
div#links a:hover span {display: block;
   position: relative; top: 0px; left: 100; width: 125px;
   padding: 5px; margin: 10px; z-index: 100;
   color: #AAA; background: black;
   font: 10px Verdana, sans-serif; text-align: center;}

-->
&lt;/style>
</pre>
<p><id = "screenshot" hr /></p>
<h4>Happiness Today Screenshot Note</h4>
<p>Though the two screenshots show the same lyrics from Think Of <a href="http://www.shrewdies.net/happiness_today">Happiness Today</a>, do not think that the program has stuck, or in some way does not work. Those lines are the chorus, and I have repeated them in line with the original lyrics. This means that this particular couplet will display more regularly in the display area. If you adapt the plugin for your own promotional purposes, repeat your most important messages, and they will display more frequently.</p>
<p><!--more--><div style="margin-left:-1em;"><table><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-7512621270035949";
/* shrewdies 300x250, created 22/12/09 */
google_ad_slot = "4026195862";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td><td>
<script type="text/javascript"><!--
ch_client = "GoutPal";
ch_type = "mpu";
ch_width = 300;
ch_height = 250;
ch_color_bg = "ffffff";
ch_color_border = "ffffff";
ch_color_title = "00009e";
ch_color_site_link = "00009e";
ch_non_contextual = 4;
ch_vertical ="premium";
ch_sid = "ShrewdiesReward";
ch_alternate_ad_url = "http://www.shrewdies.net/ad.html";
var ch_queries = new Array( );
var ch_selected=Math.floor((Math.random()*ch_queries.length));
if ( ch_selected < ch_queries.length ) {
ch_query = ch_queries[ch_selected];
}
//--></script>
<script  src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript">
</script></td></tr></table></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/1445/wordpress-pods-food-for-thought/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Pods Projects Going For A Song</title>
		<link>http://www.shrewdies.net/1373/wordpress-pods-projects-going-for-a-song/</link>
		<comments>http://www.shrewdies.net/1373/wordpress-pods-projects-going-for-a-song/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 16:56:45 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Function]]></category>
		<category><![CDATA[Happiness Today]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>
		<category><![CDATA[WordPress Pods Plugin Builder]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=1373</guid>
		<description><![CDATA[When I introduced my WordPress Pods Plugin Builder yesterday, I hinted at an example project to test the builder with. I can reveal that this will be an homage to the ubiquitous Hello Dolly plugin &#8211; with some extras, and some Pods magic. Just to remind you. I love Pods as it is intended to [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">When I introduced my WordPress Pods Plugin Builder yesterday, I hinted at an example project to test the builder with.</p>
<p>I can reveal that this will be an homage to the ubiquitous Hello Dolly plugin &#8211; with some extras, and some Pods magic.</p></div>
<p>Just to remind you. I love Pods as it is intended to be used &#8211; a Content Management System that extends WordPress Pages and Posts to allow developers to provide new content styles. This is extremely important to me as I develop new tools for webmasters, and new web applications to extend my health sites.</p>
<p>But for the moment, I&#8217;m hooked (pun intended) on using Pods to hook rapidly developed packages into WordPress as plugins. This series of articles explains the Pods features used to create WordPress plugin files complete with readme.txt. WordPress explains what a plugin is by way of the Hello Dolly example. In a similar way, I needed a very simple plugin application to test and demonstrate my WordPress Pods Plugin Builder.</p>
<p>Enter <a href="http://www.softcharisma.com/">Soft Charisma</a>, the music company run by Scott Kingsley Clark, one of Pods lead developers. Scott has written the perfect song to complement Hello Dolly &#8211; Think Of Happiness Today.<br />
<div id="attachment_1374" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.shrewdies.net/wp-content/uploads/happiness_today_scrn.png"><img src="http://www.shrewdies.net/wp-content/uploads/happiness_today_scrn-300x187.png" alt="Happiness Today Plugin" title="Happiness Today Plugin" width="300" height="187" class="size-medium wp-image-1374" /></a><p class="wp-caption-text">Happiness Today Plugin - click for large size</p></div></p>
<p>My plugin, Happiness Today, displays random lyrics from the song on the admin pages. So far, so Hello Dolly, but there are extras:<span id="more-1373"></span></p>
<ul>
<li>Up to 3 link buttons</li>
<li>Customizable lyrics, position &#038; links</li>
<li>Easily editable content &#038; options through the Pods interface</li>
</ul>
<p>It is currently at &#8216;proof of concept&#8217; stage. A complete, usable plugin, but incomplete readme.txt file, no deactivation routine (though easily tidied up manually via Pods administration), and untidy code structure. Also, it borrows its styling to match the selected admin scheme in a way that is best described as <strong>Borrow Code</strong>.</p>
<p><strong>Borrow Code</strong> is a semi-original term, coined by me, to explain the style of programming I borrow and use. The style of <strong>Borrow Code</strong> reflects how I use snippets of code without understanding the original concept, shape it with a big hammer until it just about works, then refine it properly for public use, or discard it in favor of suggestions from better coders.</p>
<p>I will add it to the WordPress extensions database once it is fit for public consumption, when we can also discuss potential uses and enhancement suggestions.</p>
<h3>WordPress Happiness Today Plugin</h3>
<p>Potential uses:
<ul>
<li>Promotion for musicians, poets, authors, etc to randomly present their own lyrics and links</li>
<li>Promotion for website developers to randomly present support tips and links</li>
<li>Random product benefits and links</li>
<li>Fund raising quotes &#038; links</li>
<li>Your suggestions</li>
</ul>
<p>Enhancement suggestions:
<ul>
<li>Widget support to display random messages, adverts, etc to visitors</li>
<li>Single click data import, export, delete routines</li>
<li>Remote data updates</li>
<li>Your suggestions</li>
</ul>
<h2>WordPress Pods Projects: Next Steps</h2>
<p>That&#8217;s enough background for now. In the next article I&#8217;ll explain some specific Pods techniques used in the WordPress Pods Plugin Builder, and its example project, Happiness Today.</p>
<p><!--more--><div style="margin-left:-1em;"><table><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-7512621270035949";
/* shrewdies 300x250, created 22/12/09 */
google_ad_slot = "4026195862";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td><td>
<script type="text/javascript"><!--
ch_client = "GoutPal";
ch_type = "mpu";
ch_width = 300;
ch_height = 250;
ch_color_bg = "ffffff";
ch_color_border = "ffffff";
ch_color_title = "00009e";
ch_color_site_link = "00009e";
ch_non_contextual = 4;
ch_vertical ="premium";
ch_sid = "ShrewdiesReward";
ch_alternate_ad_url = "http://www.shrewdies.net/ad.html";
var ch_queries = new Array( );
var ch_selected=Math.floor((Math.random()*ch_queries.length));
if ( ch_selected < ch_queries.length ) {
ch_query = ch_queries[ch_selected];
}
//--></script>
<script  src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript">
</script></td></tr></table></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/1373/wordpress-pods-projects-going-for-a-song/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Pods Plugin Builder Taking Shape</title>
		<link>http://www.shrewdies.net/1363/wordpress-pods-plugin-builder-taking-shape/</link>
		<comments>http://www.shrewdies.net/1363/wordpress-pods-plugin-builder-taking-shape/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 18:04:18 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Function]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[wordpress plugin]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>
		<category><![CDATA[WordPress Pods Plugin Builder]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=1363</guid>
		<description><![CDATA[WordPress Pods CMS plugin is fantastic for adding new content to websites that do not easily fit the standard Page or Post styles. With it&#8217;s easy to use interface, it is good for novice writers, but it also stands on a very powerful data management platform. This makes it a real candidate for Rapid Application [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">WordPress Pods CMS plugin is fantastic for adding new content to websites that do not easily fit the standard Page or Post styles.</p>
<p>With it&#8217;s easy to use interface, it is good for novice writers, but it also stands on a very powerful data management platform.</p>
<p>This makes it a real candidate for Rapid Application Development, but how to package and distribute those applications?</p></div>
<p>Before I present my latest project for building structured WordPress plugins, packaged with properly formatted readme file, straight from the Pods interface let me explain what Pods is.<br />
<span id="more-1363"></span><br />
<h2>WordPress Pods Background</h2>
<p>Pods builds applications by creating data tables and presenting that data on pages, using display templates to keep presentation simple. Going beyond basic table administration, Pages and Templates can include any HTML or PHP code you like to manipulate data. And going beyond that, there are Helpers that can manipulate data before during or after it has been entered.</p>
<p>This means that any extension to WordPress can be coded in Pods. Tasks that do not require data manipulation probably do not need Pods. On the other hand, most plugins do need to use the WordPress database, even if only to store some options. Using Pods makes that data easy to maintain and it&#8217;s structure means that it is very easy to build reusable code libraries.</p>
<p>I will explain Pods Data, Template, Page and Helper features in more detail when I explain how my Pods projects work. First let&#8217;s look at my current to build WordPress plugins using Pods.</p>
<h2>WordPress Pods Plugin Builder</h2>
<p>Pods already does a good job of easing distribution of projects. It is extremely easy to bundle your project components together and export them as a Pods Package. The <a href="http://podscms.org/packages/">Pods CMS site has several examples of these packages</a> which as well as being useful in their own right, can be used to learn various techniques.</p>
<p>These packages can be pasted directly into Pods, or loaded programatically, as demonstrated in the Pods UI demo. This makes distribution very easy, but there is one vital thing missing for most projects, and another missing for many.</p>
<p>The vital missing part is data. Though pods can export and import data, this is not part of the Pods package process. If you are handling a project for a client, it is very easy to move data to your clients site by exporting and importing, but it is not possible to supply a single package including code and data.</p>
<p>For most Pods projects, that data problem is the only one, and the import and export routines simply mean you have to distribute code and data separately. For many of my projects, I want to provide WordPress plugin functionality. This means that I need at least one plugin file to hook the functions into WordPress.</p>
<p>My Pods Plugin Builder produces standard format WordPress plugin files from Pods. The plugin it produces will load a Pods package, load the data, and add the hooks that WordPress needs. It also produces a correctly formatted readme.txt file which is so important if you want people to be able to find your plugin in the WordPress repository.</p>
<p>I passed a milestone today when I used the package to produce my first plugin.</p>
<h2>WordPress Pods Plugin Builder: Next Steps</h2>
<p>In the next few articles I will:</p>
<ul>
<li>Describe the package in detail, including work still to do, and potential additional features.</li>
<li>Introduce the plugin that this package has produced, and describe how key features of Pods work.</li>
<li>Apply the package to my shrewdBar &#038; shrewdChat projects.</li>
<li>Release the package for wider testing and distribution.</li>
</ul>
<p><!--more--><div style="margin-left:-1em;"><table><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-7512621270035949";
/* shrewdies 300x250, created 22/12/09 */
google_ad_slot = "4026195862";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td><td>
<script type="text/javascript"><!--
ch_client = "GoutPal";
ch_type = "mpu";
ch_width = 300;
ch_height = 250;
ch_color_bg = "ffffff";
ch_color_border = "ffffff";
ch_color_title = "00009e";
ch_color_site_link = "00009e";
ch_non_contextual = 4;
ch_vertical ="premium";
ch_sid = "ShrewdiesReward";
ch_alternate_ad_url = "http://www.shrewdies.net/ad.html";
var ch_queries = new Array( );
var ch_selected=Math.floor((Math.random()*ch_queries.length));
if ( ch_selected < ch_queries.length ) {
ch_query = ch_queries[ch_selected];
}
//--></script>
<script  src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript">
</script></td></tr></table></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/1363/wordpress-pods-plugin-builder-taking-shape/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Database Extension</title>
		<link>http://www.shrewdies.net/579/wordpress-database-extension/</link>
		<comments>http://www.shrewdies.net/579/wordpress-database-extension/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 21:25:25 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Function]]></category>
		<category><![CDATA[menu bar]]></category>
		<category><![CDATA[shrewdBar]]></category>
		<category><![CDATA[WordPress database]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=579</guid>
		<description><![CDATA[Extending the WordPress database is the first step in developing my menu bar. In most WordPress extensions, a lot of data is hidden in the code. The massive advantage of Pods is that we can easily store additional data, and manage it very efficiently. In the first installment of this series, I introduced shrewdBar, explaining [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">Extending the WordPress database is the first step in developing my menu bar.</p>
<p>In most WordPress extensions, a lot of data is hidden in the code.</p>
<p>The massive advantage of Pods is that we can easily store additional data, and manage it very efficiently.</p></div>
<p>In the first installment of this series, I introduced shrewdBar, explaining it was based on a WordPress plugin that creates a menu by outputting data in the form of a CSS LIst driven menu. This type of menu is quite common &#8211; you style a nested list to have hidden items that reveal themselves when the mouse hovers over them. The added attraction of this type of menu is that without the styling, you simply have a nested list of items that search engines can follow.</p>
<p>The CSS issues are for another time. What I need you to realize is that these menus are usually built in code, with a lot of hard-coded links. True, the original menubar, DashBar, on which shrewdBar is roughly based, does have some items that are extracted from WordPress database tables. In my first  version of the menu bar, I extended this to extract messages and topics from the Simple:Press forum.</p>
<p>Pods allowed me to put all the menu items into WordPress database tables, and I explain in this article, how I achieved this.</p>
<h3>shrewdBar Database</h3>
<p>In its current release, I have limited the menu to two tiers, so we have a Pod for the top tier, that you see across the top of the page. Optionally, each of these top level records can have a variable number of child items.</p>
<p>The schematic is:</p>
<table>
<tr valign="top">
<th>shrewdies_bar</th>
<th style="color:#9e009e;">&nbsp;&nbsp;&nbsp;link&nbsp;&nbsp;&nbsp;</th>
<th>shrewdies_bar_item</th>
</tr>
<tr valign="top">
<td>name (txt)</td>
<td></td>
<td>name (txt)</td>
</tr>
<tr valign="top">
<td>slug (slug)</td>
<td></td>
<td>slug (slug)</td>
</tr>
<tr valign="top">
<td>bartext (txt)</td>
<td align="right" style="color:#9e009e;"></td>
<td>itemtext (txt)</td>
</tr>
<tr valign="top">
<td>bartitle (txt)</td>
<td align="center" style="color:#9e009e;"></td>
<td>itemtitle (txt)</td>
</tr>
<tr valign="top">
<td>barurl (txt)</td>
<td align="center" style="color:#9e009e;"></td>
<td>itemurl (txt)</td>
</tr>
<tr valign="top">
<td>baritems (pick shrewdies_bar_item)</td>
<td style="color:#9e009e;">&nbsp;&sup1;&mdash;&mdash;&infin;</td>
<td>itembar (pick shrewdies_bar)</td>
</tr>
<tr valign="top">
<td>bardisplay (code)</td>
<td></td>
<td></td>
</tr>
<tr valign="top">
<td>barhold (bool)</td>
<td></td>
<td></td>
</tr>
</table>
<p>Pods automatically creates the name and slug fields when we create a new pod. name identifies the record, and I also use it as a sort order. slug is very useful in many Pods packages, and I&#8217;ll cover it in depth later, but it is not really required in the current version of shrewdBar.</p>
<p>The text, title and url fields are the menu links that are used to navigate to different pages. The pick fields are used to relate tables &#8211; in this case a one to many relationship.</p>
<p>The top level menu records have two additional fields. The boolean hold field allows menu items to be temporarily hidden, without deleting the record. This is not required for second level items, as it is a simple click to break or make the relationship to a top level menu. The display field allows us to enter PHP code which can programatically control the display giving us very powerful dynamic menus. I&#8217;ll be discussing this at length in the next installment.</p>
<h3>shrewdBar Options</h3>
<p>Like most plugins, shrewdBar needs options to control colors and positioning. Unlike most WordPress plugins, these options no longer have to live in the options table where they soon get lost. I put the shrewdBar options in its own table, which makes it very easy to manage. The options data could be managed using the standard Pods edit page, however I find it better to write a special page with information and instructions. I&#8217;ll be covering this in detail in a later installment.</p>
<p>In the next installment, I will explain how simple Pods procedures act on the data to produce the list output that forms the shrewdBar menu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/579/wordpress-database-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin That Isn&#8217;t</title>
		<link>http://www.shrewdies.net/509/wordpress-plugin-that-isnt/</link>
		<comments>http://www.shrewdies.net/509/wordpress-plugin-that-isnt/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 15:34:33 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Function]]></category>
		<category><![CDATA[menu bar]]></category>
		<category><![CDATA[shrewdBar]]></category>
		<category><![CDATA[wordpress plugin]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=509</guid>
		<description><![CDATA[This is about the WordPress plugin that isn&#8217;t a plugin! It might become one. It started life as one. But, for now, it is a Pods package, and this is the first part in a series that explains what a Pods package is, how it improves WordPress functionality, and how you can apply it to [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">This is about the WordPress plugin that isn&#8217;t a plugin!</p>
<p>It might become one. It started life as one.</p>
<p>But, for now, it is a Pods package, and this is the first part in a series that explains what a Pods package is, how it improves WordPress functionality, and how you can apply it to your own site.</p></div>
<p>Before we start, I was reminded earlier about the crucial importance of purpose as your first step. When you set out to add functionality to WordPress, you must be clear about why you are doing it. If you employ assistants, or ask for help on the forums here, or elsewhere, you must communicate that purpose clearly.</p>
<p>Xarzu told me earlier that she wanted to write WordPress plugins and asked if I could recommend a comprehensive list of hooks, actions and filters. I subsequently found she&#8217;d asked this in just about every forum on the Internet, irrespective of it&#8217;s subject matter. That kind of spam is best ignored, but it does serve as a prime example of what goes wrong when you do not have a clear purpose. </p>
<p>Firstly, I noticed that Xarzu had received lots of positive help, despite the poor question. People want to help, but if the goals are not clear, if the question is too vague, if there is lack of purpose, then that help is often wasted. So before you even think of adding any functionality to WordPress, think long and hard about the purpose of your plugin, and who the typical user is.</p>
<p>My latest project started when I tried the Splix theme, and found the built-in menu bar. It certainly helped me use WordPress as an application, and is a welcome feature of WordPress.com sites. It struck me that as you add functionality to your website, e.g. with forums, polls, news etc, your website becomes an application for your visitors. So I started my <a href="http://www.shrewdies.net/151/wordpress-plugin-for-forum-access-more/">WordPress menu bar plugin project</a>.</p>
<p>The purpose of the plugin is to improve navigation efficiency for 3 groups of users:<br />
<span id="more-509"></span>
<ul>
<li>Visitors. The vast majority who read your website and leave. You want them to return, so let them find your best content easily. You want them to become contributors, so let them register easily. You want them to feel welcome, so give them help to learn how your site works. The menu bar lets you display all this where it can be found easily.</li>
<li>Contributors are visitors who add comments or start new discussions. You might run a reference site that doesn&#8217;t allow visitor contributions. In that case, ignore this group, but for most websites they are crucial to the growth of your site. The plugin helps by allowing contributors to easily find and edit their own contributions.</li>
<li>Administrators. As the chief contributor, admins get all the benefits of the other groups, plus easy access to commonly used admin pages. Which pages are commonly used? That&#8217;s entirely up to you, as the menubar items are stored in an easy-to-edit Pods database.</li>
</ul>
<p>All of this raises the efficiency of your site, which is a very shrewd thing to do &#8211; that&#8217;s why the plugin is called <a href="http://www.shrewdies.net/shrewdbar/">shrewdBar</a>. I will explain the development stages in a series posts over the next few days.</p>
<p><!--more--><div style="margin-left:-1em;"><table><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-7512621270035949";
/* shrewdies 300x250, created 22/12/09 */
google_ad_slot = "4026195862";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td><td>
<script type="text/javascript"><!--
ch_client = "GoutPal";
ch_type = "mpu";
ch_width = 300;
ch_height = 250;
ch_color_bg = "ffffff";
ch_color_border = "ffffff";
ch_color_title = "00009e";
ch_color_site_link = "00009e";
ch_non_contextual = 4;
ch_vertical ="premium";
ch_sid = "ShrewdiesReward";
ch_alternate_ad_url = "http://www.shrewdies.net/ad.html";
var ch_queries = new Array( );
var ch_selected=Math.floor((Math.random()*ch_queries.length));
if ( ch_selected < ch_queries.length ) {
ch_query = ch_queries[ch_selected];
}
//--></script>
<script  src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript">
</script></td></tr></table></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/509/wordpress-plugin-that-isnt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Plugins &#8211; Developer&#8217;s Dream</title>
		<link>http://www.shrewdies.net/498/wordpress-plugins-developers-dream/</link>
		<comments>http://www.shrewdies.net/498/wordpress-plugins-developers-dream/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 13:55:22 +0000</pubDate>
		<dc:creator>Keith from shrewdies</dc:creator>
				<category><![CDATA[Function]]></category>
		<category><![CDATA[shrewdBar]]></category>
		<category><![CDATA[shrewdChat]]></category>
		<category><![CDATA[wordpress plugin]]></category>
		<category><![CDATA[wordpress plugins structure]]></category>
		<category><![CDATA[WordPress Pods CMS]]></category>

		<guid isPermaLink="false">http://www.shrewdies.net/?p=498</guid>
		<description><![CDATA[I searched for WordPress Plugins that would help me apply structure to my own efforts. A scary journey, but now the nightmare is over. Now I can dream happily of a bright WordPress development future. But, there is no time to dream. Not even time to hack together a pretty picture to decorate this article. [...]]]></description>
			<content:encoded><![CDATA[<div class="kctIntro">I searched for WordPress Plugins that would help me apply structure to my own efforts.</p>
<p>A scary journey, but now the <a href="http://www.shrewdies.net/279/wordpress-plugins-beginners-nightmare/" title="Elusive WordPress Plugins Structure">nightmare</a> is over.</p>
<p>Now I can dream happily of a bright WordPress development future.</p></div>
<p>But, there is no time to dream. Not even time to hack together a pretty picture to decorate this article. I&#8217;m fired up for developing, but there is just enough time to let you know what the plan is.</p>
<p>When I finally decided on the SCB framework, I sat down to plan how to integrate my menu system, a hack of DashBar, into that structure. It looked like a project that might also suit <a href="http://www.shrewdies.net/466/pods-wordpress-plugin/" title="WordPress Data Management">Pods</a>, as I would need somewhere to store menu item links.</p>
<p>What&#8217;s the first thing I notice in SCB? Routines to handle WordPress options and table data. But can&#8217;t I just use Pods for that?</p>
<p>Yes, I can!</p>
<p><span id="more-498"></span>To cut a long story, I knocked together a fully customizable menu system in record time. It is not finished yet, but I&#8217;m so pleased with the results, and ease of development, that I decided to feature how I have developed it over the next few days.</p>
<p>As of today, it is lurking near the foot of the page, with a list based cascading menu that doesn&#8217;t quite work (Note to CSS developers &#8211; beware inherited settings that you have assumed will not be used elsewhere). It would have been finished a day earlier, but I was trying to adapt a definition list dropdown menu. All was going really well, until I found that it is impossible to make that kind of CSS structure perform the variable width trick.</p>
<p>Variable width is really a must, as the <a href="http://www.shrewdies.net/shrewdbar/" title="WordPress Menu &#038; Login Combination Bar">shrewdBar</a> doubles as a login form. So I will get on with re-wrapping the menu in the same way as the DashBar-based version, then I&#8217;ll go through the development stages so you can see just how easy it is to get Pods to do most of your development work.</p>
<p>Once that is finished, I will convert my other plugin work-in-progress) to Pods, and also use it for a full-blown web based application that I have had in the pipeline for well over a year. <a href="http://www.shrewdies.net/shrewdbar/" title="Simple WordPress Forum">shrewdChat discussion package</a> soon, then The Big One, just as soon as I get shrewdBar &#038; shrewdChat to good, usable stage.</p>
<p><!--more--><div style="margin-left:-1em;"><table><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-7512621270035949";
/* shrewdies 300x250, created 22/12/09 */
google_ad_slot = "4026195862";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td><td>
<script type="text/javascript"><!--
ch_client = "GoutPal";
ch_type = "mpu";
ch_width = 300;
ch_height = 250;
ch_color_bg = "ffffff";
ch_color_border = "ffffff";
ch_color_title = "00009e";
ch_color_site_link = "00009e";
ch_non_contextual = 4;
ch_vertical ="premium";
ch_sid = "ShrewdiesReward";
ch_alternate_ad_url = "http://www.shrewdies.net/ad.html";
var ch_queries = new Array( );
var ch_selected=Math.floor((Math.random()*ch_queries.length));
if ( ch_selected < ch_queries.length ) {
ch_query = ch_queries[ch_selected];
}
//--></script>
<script  src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript">
</script></td></tr></table></div> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.shrewdies.net/498/wordpress-plugins-developers-dream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
