<?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>leewillis.co.uk&#187; Lee Willis</title> <atom:link href="http://www.leewillis.co.uk/feed/" rel="self" type="application/rss+xml" /><link>http://www.leewillis.co.uk</link> <description>Building a business on Open Source</description> <lastBuildDate>Sun, 07 Mar 2010 08:49:39 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>WordPress 2.9 e-Commerce</title><link>http://www.leewillis.co.uk/wordpress-2-9-e-commerce/</link> <comments>http://www.leewillis.co.uk/wordpress-2-9-e-commerce/#comments</comments> <pubDate>Sat, 06 Mar 2010 13:11:56 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[books]]></category> <category><![CDATA[e-commerce]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=201</guid> <description><![CDATA[
WordPress 2.9 e-Commerce, has been published &#8211; the definitive guide to setting up an e-commerce site on your Wordpress blog using the WP e-Commerce plugin, of which I&#8217;m a bit of a fan.
This book provides an easy to understand, step-by-step approach to  installing, configuring, and using WP e-Commerce to run your online  store. [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fwordpress-2-9-e-commerce%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fwordpress-2-9-e-commerce%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p><a
title="Wordpress 2.9 e-Commerce" href="http://www.amazon.co.uk/WordPress-2-9-E-Commerce-Brian-Bondari/dp/1847198503?&amp;camp=2486&amp;linkCode=wey&amp;tag=leewillis-21&amp;creative=20362" target="_blank"><img
class="contentimgleft" title="WordPress 2.9 E-Commerce" src="http://ecx.images-amazon.com/images/I/41QJ6nqwXBL._SL160_AA115_.jpg" alt="WordPress 2.9 E-Commerce " width="115" height="115" /></a><a
href="http://www.amazon.co.uk/WordPress-2-9-E-Commerce-Brian-Bondari/dp/1847198503?&amp;camp=2486&amp;linkCode=wey&amp;tag=leewillis-21&amp;creative=20362" target="_blank">WordPress 2.9 e-Commerce</a>, has been published &#8211; the definitive guide to setting up an e-commerce site on your Wordpress blog using the <a
href="http://getshopped.org">WP e-Commerce</a> plugin, of which I&#8217;m a bit of a fan.</p><p>This book provides an easy to understand, step-by-step approach to  installing, configuring, and using WP e-Commerce to run your online  store. We will construct an example store in the book with enough  information and flexibility to adapt the store to your specific needs.</p><p><a
href="http://www.amazon.co.uk/WordPress-2-9-E-Commerce-Brian-Bondari/dp/1847198503?&amp;camp=2486&amp;linkCode=wey&amp;tag=leewillis-21&amp;creative=20362" target="_blank"> This book</a> is for you, if you are interested in using WordPress as the  basis for a store that can sell physical items, downloads, or services.  It is ideal for a sole proprietor or small business owner with only  basic, in-house technical skills. Some prior knowledge of WordPress will  help, but is not required. No knowledge of PHP is expected, but it will be helpful.</p><p>You can buy it from Amazon <a
href="http://www.amazon.co.uk/WordPress-2-9-E-Commerce-Brian-Bondari/dp/1847198503?&amp;camp=2486&amp;linkCode=wey&amp;tag=leewillis-21&amp;creative=20362" target="_blank">here</a>.</p><p><span
class="disclaimer">Disclaimer: I&#8217;ve linked to Amazon using affiliate links, to help fund this blog.</span></p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/wordpress-2-9-e-commerce/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Getting URL of Post Thumbnails in Wordpress 2.9</title><link>http://www.leewillis.co.uk/getting-url-post-thumbnails-wordpress/</link> <comments>http://www.leewillis.co.uk/getting-url-post-thumbnails-wordpress/#comments</comments> <pubDate>Fri, 29 Jan 2010 22:25:59 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[design]]></category> <category><![CDATA[hacks]]></category> <category><![CDATA[hints]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=197</guid> <description><![CDATA[
One of the improvements in Wordpress 2.9 is native support for thumbnail images on posts. The API is pretty good &#8211; although it assumes that you want to return the whole IMG tag. In my case I wanted to return the URL of the image (So I could wrap the actual thumbnail in a lightbox-style [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fgetting-url-post-thumbnails-wordpress%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fgetting-url-post-thumbnails-wordpress%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>One of the improvements in Wordpress 2.9 is native support for thumbnail images on posts. The API is pretty good &#8211; although it assumes that you want to return the whole IMG tag. In my case I wanted to return the URL of the image (So I could wrap the actual thumbnail in a lightbox-style link to the larger versions).</p><p>So &#8211; if you want to get the URL of your posts thumbnail &#8211; here&#8217;s the code you need:</p><pre name="code" class="php:nogutter:nocontrols">$image_id = get_post_thumbnail_id();
$image_url = wp_get_attachment_image_src($image_id,'large');
$image_url = $image_url[0];</pre><p>I hope this helps you with your theme development.</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/getting-url-post-thumbnails-wordpress/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>How to Split Test Wordpress Themes</title><link>http://www.leewillis.co.uk/how-to-split-test-wordpress-themes/</link> <comments>http://www.leewillis.co.uk/how-to-split-test-wordpress-themes/#comments</comments> <pubDate>Sat, 17 Oct 2009 09:38:37 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[design]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=162</guid> <description><![CDATA[
I recently re-worked a site for a client. He was moving over from Joomla to Wordpress, so I started from scratch with his theme design. They liked the new theme I came up with &#8211; however I&#8217;d put the menu and other navigation (Links to recent articles, etc) in a right hand sidebar, and they [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fhow-to-split-test-wordpress-themes%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fhow-to-split-test-wordpress-themes%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>I recently re-worked a site for a client. He was moving over from Joomla to Wordpress, so I started from scratch with his theme design. They liked the new theme I came up with &#8211; however I&#8217;d put the menu and other navigation (Links to recent articles, etc) in a right hand sidebar, and they weren&#8217;t too sure about that.</p><blockquote><p>&#8220;Doesn&#8217;t everyone have the menu on the left?&#8221;</p></blockquote><p>Now I&#8217;m no usability expert, and while I figured they were probably right I thought we&#8217;d run a little experiment. I trawled around a bit, and I found a nice <a
href="http://www.dellanave.com/blog/2009/07/15/how-to-split-test-your-wordpress-theme-w-plugin/" target="_blank">little post</a> by David Dellanave. While I was OK implementing David&#8217;s solution I though it was probably a little complicated for some of my other clients, especially when it came to running 3 <a
href="http://www.google.com/analytics/" target="_blank">Google analytics</a> accounts &#8211; so I did some digging.</p><p>The result is the SES <a
href="http://wordpress.org/extend/plugins/wordpress-ab-theme-split-tests/" target="_new">Split Testing plugin</a>.</p><p>To use the plugin you&#8217;ll need to be using Google Analytics tracking on your Wordpress blog already (If you&#8217;re not, then I&#8217;d recommend the &#8220;<a
href="http://wordpress.org/extend/plugins/google-analytics-for-wordpress/" target="_blank">Google Analytics for Wordpress</a>&#8221; plugin), then :</p><ul><li>Create two (or more) versions of your theme</li><li>Select them in the plugin settings</li><li>Define custom segments in Google Analytics</li><li>Sit back and watch the results roll in</li></ul><h4>Create theme variations</h4><p>In most cases, you&#8217;ll want to test two versions of 1 theme with some slight changes. Let&#8217;s assume your theme is in the folder wp-content/themes/mytheme. Take a copy of your theme and put it in fresh folder, e.g. wp-content/themes/mytheme_2. Open up the style.css file in the second folder, and change the Theme Name, e.g.</p><pre class="css:nogutter:nocontrols">/*
Theme Name: MyTheme
*/</pre><p>to</p><pre class="css:nogutter:nocontrols">/*
Theme Name: MyTheme (v2)
*/</pre><h3>Set up plugin settings</h3><p><a
rel="lightbox" href="http://www.leewillis.co.uk/wp-content/uploads/2009/10/sesthemesplittest.png"><img
class="contentimgright size-thumbnail " title="Wordpress Theme Split Testing" src="http://www.leewillis.co.uk/wp-content/uploads/2009/10/sesthemesplittest-150x137.png" alt="Wordpress Theme Split Testing" width="150" height="137" /></a>Now you can drop <a
href="http://www.leewillis.co.uk/patches/wp_splittest/ses_splittest.php">the plugin </a>into your plugin directory, activate it in the Wordpress backend, and then go to the settings page (Settings-&gt;SES Theme Split Test). The plugin will list all of your available themes, and you can choose which ones you want to be part of the test.</p><p>Once you&#8217;ve saved the settings, the split testing will kick in. Visitors will be randomly assigned one of the chosen themes, and they&#8217;ll receive that theme any time they visit in the next 30 days. Not only that, but their visit will be tagged with a special variable that you can pick up on in Google Analytics.</p><h3>Set up Custom Analytics Segments</h3><p>Google Analytics lets you define custom segments (Ways of grouping customers). In this example we want to group customers according to which theme they were shown and then we can measure our chosen metric (Purchase / sign-up / page views &#8211; whatever) for the two groups and compare them. To get started, you probably want to wait 24 hours so that Google starts to receive the tagging data.</p><p><a
rel="lightbox" href="http://www.leewillis.co.uk/wp-content/uploads/2009/10/segments_1.png"><img
class="contentimgright size-thumbnail wp-image-170" title="Setting up custom segments" src="http://www.leewillis.co.uk/wp-content/uploads/2009/10/segments_1-150x74.png" alt="Setting up custom segments" width="150" height="74" /></a>Log into your analytics account, and click on the &#8220;All Visits&#8221; dropdown (Top-right, just above the date selector), and then choose &#8220;Create a new advanced segment&#8221;. Then, you want to expand the &#8220;Visitors&#8221; dropdown under &#8220;Dimensions&#8221;</p><p><a
rel="lightbox" href="http://www.leewillis.co.uk/wp-content/uploads/2009/10/segments_2.png"><img
class="contentimg aligncenter size-medium wp-image-174" title="Custom Segment Build" src="http://www.leewillis.co.uk/wp-content/uploads/2009/10/segments_2-300x171.png" alt="Custom Segment Build" width="300" height="171" /></a></p><p>Scroll down until you find &#8220;User Defined Value&#8221; and drag it onto the right hand box that says &#8220;dimension or metric&#8221;. If Analytics has got your tagging data (See &#8211; I told you to leave it 24 hours!) then you&#8217;ll get to choose from the values being passed, e.g.</p><p><a
rel="lightbox" href="http://www.leewillis.co.uk/wp-content/uploads/2009/10/segments_3.png"><img
class="contentimg aligncenter size-medium wp-image-176" title="Analytics Custom Segments" src="http://www.leewillis.co.uk/wp-content/uploads/2009/10/segments_3-300x199.png" alt="Analytics Custom Segments" width="300" height="199" /></a></p><p>Create a segment for each of your themes, and give them a meaningful name, then you&#8217;ll be able to select them as custom segments in your reports.</p><p><a
rel="lightbox" href="http://www.leewillis.co.uk/wp-content/uploads/2009/10/finalreports.png"><img
class="contentimg aligncenter size-medium wp-image-177" title="Segmented Analytics Reports" src="http://www.leewillis.co.uk/wp-content/uploads/2009/10/finalreports-300x156.png" alt="Segmented Analytics Reports" width="300" height="156" /></a></p><p>Now it&#8217;s just time to wait, see what happens, then decide. Once you&#8217;ve got a winner then just set that as your blog&#8217;s standard theme in the normal way, and either deactivate the plugin, or unselect the themes in the settings and users will see the blog default.</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/how-to-split-test-wordpress-themes/feed/</wfw:commentRss> <slash:comments>24</slash:comments> </item> <item><title>Google edges towards local hubs</title><link>http://www.leewillis.co.uk/google-edges-towards-local-hubs/</link> <comments>http://www.leewillis.co.uk/google-edges-towards-local-hubs/#comments</comments> <pubDate>Fri, 25 Sep 2009 07:44:36 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=157</guid> <description><![CDATA[
Google has announced the launch of &#8220;Place Pages&#8221;. Essentially a local hub showing you relevant information from maps, search, business listings and so on.
It&#8217;s a fairly basic implementation right now (My local page doesn&#8217;t return any info just yet &#8211; not even businesses that I know are listed with Google) &#8211; but you can see [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fgoogle-edges-towards-local-hubs%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fgoogle-edges-towards-local-hubs%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>Google <a
href="http://googleblog.blogspot.com/2009/09/place-pages-for-google-maps-there-are.html">has announced</a> the launch of &#8220;Place Pages&#8221;. Essentially a local hub showing you relevant information from maps, search, business listings and so on.</p><p>It&#8217;s a fairly basic implementation right now (My local page doesn&#8217;t return any info just yet &#8211; not even businesses that I know are listed with Google) &#8211; but you can see that these could develop into fairly complex local hubs if Google feel that it helps relevance. Not to mention the potential for locally-targetted ads &#8230;</p><p>Is your place listed?</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/google-edges-towards-local-hubs/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>A/B Testing Your Email Marketing</title><link>http://www.leewillis.co.uk/ab-testing-your-email-marketing/</link> <comments>http://www.leewillis.co.uk/ab-testing-your-email-marketing/#comments</comments> <pubDate>Fri, 18 Sep 2009 20:32:52 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=148</guid> <description><![CDATA[
I&#8217;ve been working with a few clients to move their email marketing to a new home after most of them outgrew the limits of what they could reliably send through their existing infrastructure / hosts. Now &#8211; marketing isn&#8217;t really my strong point, and I&#8217;m definitely no designer &#8211; however I recommended and helped move [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fab-testing-your-email-marketing%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fab-testing-your-email-marketing%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>I&#8217;ve been working with a few clients to move their email marketing to a new home after most of them outgrew the limits of what they could reliably send through their existing infrastructure / hosts. Now &#8211; marketing isn&#8217;t really my strong point, and I&#8217;m definitely no designer &#8211; however I recommended and helped move over a number of campaigns to <a
href="http://www.campaignmonitor.com" target="_blank">Campaign Monitor</a> (The other key contenders appear to be <a
href="http://www.mailchimp.com" target="_blank">MailChimp </a>and <a
href="http://www.constantcontact.com" target="_blank">Constant Contact</a>).</p><p>Campaign Monitor appealed to me because of their clear, easy to understand website, and their fantastic interactive tool for creating mailings and because they generally seemed to be a good company.</p><p>Yesterday, they rolled out a new feature, conveniently coinciding with me sending a mailing out for one of my clients. <a
href="http://en.wikipedia.org/wiki/A/B_testing" target="_blank">A/B Testing</a> is something I&#8217;ve done before with web content, but never with email campaigns, so I was intrigued to find out how it would work (I was dreading segmenting my mailing list and so on &#8230;)</p><p><img
class="contentimgleft" title="A/B Split Type" src="http://www.leewillis.co.uk/wp-content/uploads/2009/09/absplittype-300x226.jpg" alt="A/B Split Type" width="300" height="226" /></p><p>The good news is, that it&#8217;s really simple. You can choose to run different Subject lines, Email Content, or From addresses.</p><p>In my case, the functionality arrived a little late for me to create 2 designs (I&#8217;m not a designer, and even making basic changes tends to take me a while!), so I plumped for the Subject Line test.</p><p>I chose my two subject lines, picked the subscriber list it was to go to (In this case it was actually a fairly small list &#8211; around 45 recipients only) and moved to the next step.</p><p>Next, I had to decide how I would pick my winner, and how many of my total list would constitute &#8220;the test&#8221;</p><p><img
class="contentimgright" title="Choosing a winner" src="http://www.leewillis.co.uk/wp-content/uploads/2009/09/abchoosewinner-288x300.jpg" alt="Choosing a winner" width="288" height="300" /></p><p>Now here came my first problem &#8211; the default that campaign monitor chose for my &#8220;test&#8221; was just two recipients, one would receive option A, and one more would receive option B. The idea then is that based on the reaction (Which got opened more, which got the most clicks overall, which got the most clicks on a specific link) the winning version will go to the rest of the list. Now &#8211; even if I ran the test on the whole of the 45 recipients it probably wouldn&#8217;t be a statistically valid test. Certainly, I think Campaign monitor should have a higher &#8220;lower limit&#8221; on how many it suggests as the sample size.</p><p>Anyway &#8211; I upped the test size (I went for five recipients for each version which I agree isn&#8217;t ideal, but I was really just seeing how the functionality worked &#8211; this wasn&#8217;t a huge marketing exercise!)</p><p>Off the test went &#8211; I set it to run for 3 hours. There came my next problem. It became a bit apparent that I really should have chosen a bigger sample size in order to get a sensible response. Unfortunately by this stage &#8220;the test&#8221; is locked &#8211; you can&#8217;t extend it to more people &#8211; or extend the time before a winner is chosen.</p><p>I&#8217;m sure there&#8217;s probably some clear guidelines about why you shouldn&#8217;t do that sort of thing anyway (It probably invalidates the whole test, or makes hurricanes in Bolivia or something &#8230;), but it struck me that it wouldn&#8217;t have been nice to have done it anyway! I&#8217;ll certainly be using the feature on my next larger scale campaigns.</p><p><span
style="color: #888888;"><em>Note: MailChimp also appears to support split A/B testing of campaigns in a similar fashion &#8211; I couldn&#8217;t tell whether Constact does or doesn&#8217;t.</em></span></p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/ab-testing-your-email-marketing/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>How to write an application for Wordpress</title><link>http://www.leewillis.co.uk/writing-a-wordpress-application/</link> <comments>http://www.leewillis.co.uk/writing-a-wordpress-application/#comments</comments> <pubDate>Mon, 07 Sep 2009 21:36:12 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[joomla]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=132</guid> <description><![CDATA[
I&#8217;ve recently been doing some work for a family member on a Wordpress blog they run, and the need came up to build a mini-app. Now historically, I&#8217;m a Joomla kind of guy, and it&#8217;s fairly clear that for a Joomla site you would build a component to implement your app.
However, in Wordpress it&#8217;s a [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fwriting-a-wordpress-application%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fwriting-a-wordpress-application%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>I&#8217;ve recently been doing some work for a family member on a Wordpress blog they run, and the need came up to build a mini-app. Now historically, I&#8217;m a Joomla kind of guy, and it&#8217;s fairly clear that for a Joomla site you would build a component to implement your app.</p><p>However, in Wordpress it&#8217;s a little different. I&#8217;ve found loads of articles about available API calls, manipulating &#8220;the loop&#8221; and all sorts of useful information. What I haven&#8217;t found though is something that explains at a fundamental level how I should approach the problem.</p><p>There isn&#8217;t a concept of an &#8220;application&#8221; under Wordpress, the only items that are accessible are &#8220;posts&#8221; and &#8220;pages&#8221;. As far as I can tell, I have two options:</p><ol><li>Publish a post/page with no content other than a special string (E.g. [my-app]) and then write a plugin that filters post content and replaces the magic string with the output from the application</li><li>Create a page, and assign it a custom template. Implement your application in that custom template</li></ol><h4>Option 1</h4><p>It works, I know because this is what I did <img
src='http://www.leewillis.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />    However there is a performance penalty, your application code is called on every post, and so you have to take steps to make sure it doesn&#8217;t run unnecessarily. The other disadvantage is that well, it just doesn&#8217;t seem clean.</p><h4>Option 2</h4><p>This seems a little nicer, but doesn&#8217;t really fit with Wordpress&#8217; nice plugin installation architecture &#8211; as far as I can tell plugins can&#8217;t auto-install into the current theme directory, and custom templates can&#8217;t live anywhere else.</p><p>So, this leaves me a little confused &#8211; can anyone point me as to how I should have solved this problem &#8211; or does Wordpress need to grow up a little and add &#8220;application&#8221; alongside posts and pages?</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/writing-a-wordpress-application/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Tracking Twitter Traffic Redux</title><link>http://www.leewillis.co.uk/tracking-twitter-traffic-redux/</link> <comments>http://www.leewillis.co.uk/tracking-twitter-traffic-redux/#comments</comments> <pubDate>Fri, 07 Aug 2009 19:34:41 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[hints]]></category> <category><![CDATA[twitter]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=116</guid> <description><![CDATA[
I wrote a previous post about how you could hack the excellent Twitter Tools plugin from Alex King to add Google Analytics tracking variables to the URLs posted to twitter when you posted a new blog post.
I submitted the patch upstream, and Alex kindly pointed out that rather than bodging around in his code &#8211; [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Ftracking-twitter-traffic-redux%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Ftracking-twitter-traffic-redux%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>I wrote a previous post about how you could hack the excellent <a
href="http://alexking.org/projects/wordpress">Twitter Tools</a> plugin from Alex King to add Google Analytics tracking variables to the URLs posted to twitter when you posted a new blog post.</p><p>I submitted the patch upstream, and Alex kindly pointed out that rather than bodging around in his code &#8211; you could achieve the same effect with a filter.</p><p>So, here it is. Simply download <a
href="http://www.leewillis.co.uk/patches/twitter-tools-tagger.php">this file</a> and save it in your wp-content/plugins directory. Activate the plugin in your Wordpress backend (It will be listed as &#8220;Twitter Tools Tagger&#8221;) and away you go. Whenever the twitter-tools plugin tweets about one of your blog posts, the URL will be tagged with analytics tracking.</p><p>As an added bonus, version 2.0 of Alex&#8217;s plugin can also pump your URLs through the http://bit.ly/ URL shortening service so your URLs will be tagged, and shortened.</p><p>So, that&#8217;s nice.</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/tracking-twitter-traffic-redux/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Custom Taxonomies In Wordpress Plugins</title><link>http://www.leewillis.co.uk/custom-taxonomies-wordpress-plugins/</link> <comments>http://www.leewillis.co.uk/custom-taxonomies-wordpress-plugins/#comments</comments> <pubDate>Fri, 07 Aug 2009 09:00:29 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[hints]]></category> <category><![CDATA[patches]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=113</guid> <description><![CDATA[
Taxonomy Support
I wrote recently about building a brand directory using a fantastic feature of Wordpress called &#8220;Taxonomies&#8221;. Now that that feature is live I&#8217;ve realised that a number of my favourite Wordpress plugins simply don&#8217;t support taxonomies.
Among the casualities were Google XML Sitemaps, and the otherwise excellent Headspace2.
Now, the beauty of open source is that [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fcustom-taxonomies-wordpress-plugins%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fcustom-taxonomies-wordpress-plugins%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><h2>Taxonomy Support</h2><p>I <a
href="http://www.leewillis.co.uk/wordpress-taxonomies-to-create-a-product-directory/" target="_blank">wrote recently</a> about building a brand directory using a fantastic feature of Wordpress called &#8220;Taxonomies&#8221;. Now that that feature is live I&#8217;ve realised that a number of my favourite Wordpress plugins simply don&#8217;t support taxonomies.</p><p>Among the casualities were <a
href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" target="_blank">Google XML Sitemaps</a>, and the otherwise excellent <a
href="http://urbangiraffe.com/plugins/headspace2/" target="_blank">Headspace2</a>.</p><p>Now, the beauty of open source is that when you get an itch like this, you can go and scratch it. So, I whipped out my coding gloves and set to work.</p><p>The results are below:</p><h2>Google XML Sitemaps</h2><p>The patch below will ensure that the pages for all of your taxonomy terms are listed in your sitemap &#8211; helping Google find the pages quicker.</p><p><a
href="/patches/google-sitemap-generator/include_taxonomies.txt">http://www.leewillis.co.uk/patches/google-sitemap-generator/include_taxonomies.txt</a></p><h2>HeadSpace2</h2><p>The patch below lets you add %%term_description%% so you can populate your META tags properly on your term pages &#8211; great for us and our product directory.</p><p><a
href="http://www.leewillis.co.uk/patches/taxonomy_support_for_headspace/patch_v2.diff" target="_blank">http://www.leewillis.co.uk/patches/taxonomy_support_for_headspace/patch_v2.diff</a></p><p>Both of these have been submitted to the plugin authors &#8211; so hopefully they&#8217;ll get included by default in a future release. If you find them useful &#8211; please add to the threads here:</p><p><a
href="http://wordpress.org/support/topic/284719?replies=4#post-1155489" target="_blank">Google XML Sitemaps</a></p><p><a
href="http://urbangiraffe.com/support/topic/taxonomy-description-for-archive-pages-in-headspace" target="_blank">Headspace2</a></p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/custom-taxonomies-wordpress-plugins/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Using Wordpress taxonomies to create a product directory</title><link>http://www.leewillis.co.uk/wordpress-taxonomies-to-create-a-product-directory/</link> <comments>http://www.leewillis.co.uk/wordpress-taxonomies-to-create-a-product-directory/#comments</comments> <pubDate>Fri, 31 Jul 2009 19:54:55 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[hints]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=95</guid> <description><![CDATA[
Background
Wordpress lets you categorise your posts according to &#8220;tag&#8221;, and &#8220;category&#8221;. Which is fine. However, for some time now Wordpress has supported a concept called &#8220;Custom Taxonomies&#8221;. Which is a long winded way of saying &#8220;We&#8217;ll let you choose how your organise and present your posts &#8211; however you want&#8221;.
This isn&#8217;t something I&#8217;ve ever felt [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fwordpress-taxonomies-to-create-a-product-directory%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2Fwordpress-taxonomies-to-create-a-product-directory%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><h2>Background</h2><p>Wordpress lets you categorise your posts according to &#8220;tag&#8221;, and &#8220;category&#8221;. Which is fine. However, for some time now Wordpress has supported a concept called &#8220;Custom Taxonomies&#8221;. Which is a long winded way of saying &#8220;We&#8217;ll let you choose how your organise and present your posts &#8211; however you want&#8221;.</p><p>This isn&#8217;t something I&#8217;ve ever felt the need to use before (I&#8217;m happy enough with tags on this blog) &#8211; however having used them recently I&#8217;ve really begun to appreciate how powerful they are &#8211; and I&#8217;m amazed that more people don&#8217;t use them to create a more sensible structure to their Wordpress sites.</p><p>That said, I&#8217;m a bit of a geek, who&#8217;s not averse to diving into code, and isn&#8217;t intimidated by a set of cryptic API documentation <img
src='http://www.leewillis.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><h2>The Business Case</h2><p>So, what can taxonomies do for you?</p><p>The site I built this for is a resource all about <a
href="http://www.getyourhandsback.co.uk/">baby slings</a>, the different types, the different brands, and people&#8217;s experiences, of finding, choosing, and using them.</p><p>Tagging just seemed to create a big, hard-to-navigate tag cloud that didn&#8217;t create an easy way for people to find the right content on the site that was going to be useful to them (Feedback has suggested that people are either looking for information about a particular brand, or a specific type of sling irrespective of brand).</p><h2>The How-To</h2><p>So, out went the &#8220;tags&#8221; (We removed them from most old posts, don&#8217;t add them to new posts, and got rid of the &#8220;tag-cloud&#8221;). Next step was to install Joost de Valk&#8217;s <a
href="http://yoast.com/wordpress/simple-taxonomies/">Simple Taxonomies</a> plugin. This is one of Joost&#8217;s simpler plugins. In general all it does is let you create a taxonomy, and manage the terms within that taxonomy.</p><blockquote><p>Actually, as an aside &#8211; I suspect this is why custom taxonomies haven&#8217;t really taken off. Out-of-the-box you have to create code to set them up and use them for effective site navigation. If the functionality provided by Joost&#8217;s plugin was in Wordpress core, and theme authors really started coding for this stuff, I&#8217;m sure it would fly, but I digress &#8230;</p></blockquote><p>So, using the plugin, we created two taxonomies &#8211; &#8220;Brands&#8221;, and &#8220;Sling Types&#8221;.</p><p><img
class="contentimg" title="Taxonomy Settings" src="http://www.leewillis.co.uk/wp-content/uploads/2009/07/taxonomysettings.jpg" alt="Taxonomy Settings" width="400" height="371" /><br
/> <br
style="clear: both;" /></p><p>Next step was to go back through our posts (Fortunately this was in the early days of the site!), and correctly &#8220;tag&#8221; the posts against the right taxonomies. So on the SnugBaby review, we set the &#8220;Brands&#8221; to &#8220;SnugBaby&#8221;, and the &#8220;Sling Types&#8221; to &#8220;Mei Tai&#8221;.</p><p><img
class="contentimg" title="Tagging Taxonomies" src="http://www.leewillis.co.uk/wp-content/uploads/2009/07/tagging.jpg" alt="Tagging Taxonomies" width="300" height="332" /><br
/> <br
style="clear: both;" /></p><p>Now we&#8217;ve got all of our posts beautifully organised, but we don&#8217;t have a way to view them. Before we get to that though, there&#8217;s just one more step. For every &#8220;term&#8221; (ie, for every brand, or sling type) we need to provide a description. Your new taxonomies can be found in the &#8220;Posts&#8221; section of the Wordpress backend, simply click on the taxonomy, e.g. &#8220;Brands&#8221;, then work your way down the list adding a useful description.<br
/> <img
class="contentimg" title="Taxonomy Descriptions" src="http://www.leewillis.co.uk/wp-content/uploads/2009/07/tax_descriptions.jpg" alt="Taxonomy Descriptions" width="520" height="204" /><br
/> <br
style="clear: both;" /> Now we can actually start presenting this information sensibly!</p><h2>Theme Work</h2><p>Now, we&#8217;re going to use that list of &#8220;terms&#8221;, and their descriptions, to create a top-level list of &#8220;brands&#8221;. Download the file below, and save it in your Wordpress theme directory. We called it &#8220;brand-directory.php&#8221;, but the name doesn&#8217;t really matter<code>.</code></p><p><a
href="http://www.leewillis.co.uk/patches/brand-directory-with-taxonomies/brand-directory.php">brand-directory.php</a></p><p>This will create a new page template called &#8220;Brand Directory&#8221; (If you want to change the name, edit the comment at the top of the file).  Now create a page in Wordpress, provide some content that you&#8217;d like to use as an introduction, and set the page template to this new file:</p><p><img
class="contentimg" title="Set Page Template" src="http://www.leewillis.co.uk/wp-content/uploads/2009/07/pagetemplate.jpg" alt="Set Page Template" width="300" height="264" /><br
style="clear: both;" /></p><p>Basically all this file does is display the page content you created:</p><blockquote><p>&lt;?php the_content(); ?&gt;&lt;/p&gt;</p></blockquote><p>followed by each one of the terms that you&#8217;ve used, along with it&#8217;s description:</p><blockquote><p>$terms = get_terms(&#8216;brands&#8217;);</p><p>foreach ($terms as $term) {</p><p>echo $term-&gt;description;</p></blockquote><p>and a link to all of the posts that have been assigned to that term:</p><blockquote><p>$wpq = array (&#8216;taxonomy&#8217;=&gt;&#8217;brands&#8217;, &#8216;term&#8217;=&gt;$term-&gt;slug);<br
/> $query = new WP_Query ($wpq);<br
/> $article_count = $query-&gt;post_count;</p><p>if ($article_count) {<br
/> echo &#8220;&lt;a class=\&#8221;taxonomy-rel-link clearfix\&#8221; href=\&#8221;/brands/&#8221;.$term-&gt;slug.&#8221;\&#8221;&gt;&#8221;.$article_count;<br
/> } else {<br
/> echo &#8220;&lt;span class=\&#8221;taxonomy-rel-link\&#8221;&gt;$article_count&#8221;;<br
/> }</p><p>echo &#8221; related article&#8221;;<br
/> if ($article_count!= 1) echo &#8220;s&#8221;; else echo  &#8220;&#8221;;<br
/> if ($article_count&gt;0) {<br
/> echo &#8221; &#8211; click to view&lt;/a&gt;&#8221;;<br
/> } else {<br
/> echo &#8220;&lt;/span&gt;&#8221;;<br
/> }<br
/> echo &#8220;&lt;br /&gt;&#8221;;;</p></blockquote><p>And there you have it, a dynamic data driven directory that keeps itself up to date whenever you &#8220;tag&#8221; a brand &#8211; all you have to do is add a description for the brand!</p><p>For an example see the &#8220;Get Your Hands Back!&#8221; brand directory <a
href="http://www.getyourhandsback.co.uk/brand-directory/">here</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/wordpress-taxonomies-to-create-a-product-directory/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>10 Essential Wordpress Plugins</title><link>http://www.leewillis.co.uk/10-essential-wordpress-plugins/</link> <comments>http://www.leewillis.co.uk/10-essential-wordpress-plugins/#comments</comments> <pubDate>Sat, 18 Jul 2009 08:54:04 +0000</pubDate> <dc:creator>Lee</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[twitter]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.leewillis.co.uk/?p=91</guid> <description><![CDATA[
I&#8217;ve been meaning to write this post for a while, but I&#8217;ve recently had to build a new Wordpress site from scratch, and I&#8217;ve also had a couple of friends ask my advice on how to get their own sites up and running &#8211; so I was spurred into action.
This list is my ten &#8220;essential&#8221; [...]]]></description> <content:encoded><![CDATA[<div
class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a
href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.leewillis.co.uk%2F10-essential-wordpress-plugins%2F"><br
/> <img
src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.leewillis.co.uk%2F10-essential-wordpress-plugins%2F&amp;source=leewillis77&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br
/> </a></div><p>I&#8217;ve been meaning to write this post for a while, but I&#8217;ve recently had to build a new Wordpress site from scratch, and I&#8217;ve also had a couple of friends ask my advice on how to get their own sites up and running &#8211; so I was spurred into action.</p><p>This list is my ten &#8220;essential&#8221; plugins, that I think every wordpress site needs, and they all get installed straight away on any new site I build, so here they are in no particular order&#8230;</p><h2>Akismet</h2><p>Akismet checks your comments against an online web service to see if they look like spam or not &#8211; and if you ask me it does a great job. If your site gets in any way popular then you will need this plugin. It comes bundled with Wordpress so there&#8217;s really no excuse for not enabling it.</p><h2>Google Analytics for WordPress</h2><p>A great plugin from the Wordpress expert Joost de Valk &#8211; this allows you to easily add Google Analytics tracking code to your blog. You can download it <a
href="http://yoast.com/wordpress/analytics/">here</a>.</p><h2>Google XML Sitemaps</h2><p><a
href="http://www.arnebrachhold.de/redir/sitemap-home/">This tool</a> allows you to automatically create an XML sitemap suitable for submission to <a
href="http://google.com/webmasters">Google Webmaster Tools</a>. An excellent opportunity to see how your site is being indexed and found by users.</p><h2>HeadSpace2</h2><p>Probably the most difficult to set up properly of the lot, <a
href="http://urbangiraffe.com/plugins/headspace2/">Headspace2</a> describes itself as a &#8220;meta-data manager on steriods&#8221;. By default Wordpress generates meta descriptions and keywords itself, but it often can&#8217;t do a great job (After all &#8211; you can probably summarise your article better than a computer &#8211; right?). Headspace2 lets you set sensible defaults for page titles, and meta-tags, and then offers you to override them for each post allowing you to put in meaningful descriptions, and keywords, and set SEO-friendly titles.</p><h2>Robots Meta</h2><p><a
href="http://yoast.com/wordpress/robots-meta/">This plugin</a> offers an easy way for you to control your robot meta tags. For the uninitiated this means you can choose which of your archives (Date, Author, Category, Tags etc.) can be indexed by Google &#8211; allowing you to choose the scheme that makes most sense or your site navigation.</p><h2>Secure Wordpress</h2><p>This is a fairly simple little plugin that takes care of hiding bits of information in the background of your site that might otherwise make your site easier to attack &#8211; and no one wants to deal with a hacked site do they! Get it <a
href="http://bueltge.de/wordpress-login-sicherheit-plugin/652/">here</a>.</p><h2>Sociable</h2><p>Another simple plugin &#8211; it adds <a
href="http://yoast.com/wordpress/sociable/">social bookmarking buttons</a> to your post so that your readers can share your musings with their friends, colleagues, and the rest of the Internet too. It offers a great selection of social sites, so you&#8217;ll be sure to find a set that match your business.</p><h2>Subscribe2</h2><p>This <a
href="http://subscribe2.wordpress.com/">plugin</a> allows your readers to subcribe to updates via email &#8211; receiving an email every time there is a new post or page. This is an essential plugin if your audience is non-technical and wouldn&#8217;t know their RSS from their elbow &#8230;</p><h2>Subscribe To Comments</h2><p>If people comment on your posts, then they&#8217;re starting a dialogue &#8211; one that you&#8217;ll want to continue. <a
href="http://txfx.net/code/wordpress/subscribe-to-comments/">This plugin</a> lets people receive notifications when other comments are made against a post they&#8217;ve commented on. There are other options for this sort of functionality (Disqus, Intense Debate etc.) &#8211; but this is a good option that works well.</p><h2>Twitter Tools</h2><p>An excellent tool that lets you join up your twitter following with your blog, turning blog posts into automatic tweets, and letting you feature your tweets in the sidebar of your blog. You can get the plugin from <a
href="http://alexking.org/projects/wordpress">here</a> &#8211; although I&#8217;d also recommend checking out my previous post about how to <a
href="http://www.leewillis.co.uk/tracking-twitter-traffic/">track your twitter traffic</a> so you can tag the tweets it produces with Google Analytics and you can see how effective it&#8217;s being.</p><h2>Roundup</h2><p>If you get all of these installed and set up you&#8217;ll have the basic of an SEO friendly blog which will allow your readers to interact with you how they want &#8211; now you just have to write engaging content!</p> ]]></content:encoded> <wfw:commentRss>http://www.leewillis.co.uk/10-essential-wordpress-plugins/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- This site's performance optimized by W3 Total Cache. Dramatically improve the speed and reliability of your blog!

Learn more about our WordPress Plugins: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)
Database Caching 13/18 queries in 0.005 seconds using disk

Served from: 89-145-93-125.as29017.net @ 2010-03-11 20:30:16 -->