<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>More Than Scratch The Surface</title>
	
	<link>http://scratch99.com</link>
	<description>A Journey In Web Development</description>
	<lastBuildDate>Thu, 25 Apr 2013 12:13:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MoreThanScratchTheSurfaceSummary" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="morethanscratchthesurfacesummary" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Actionable Analytics (WordCamp Melbourne)</title>
		<link>http://scratch99.com/website-management/analytics/actionable-analytics-resources/</link>
		<comments>http://scratch99.com/website-management/analytics/actionable-analytics-resources/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 12:13:43 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[Web Analytics]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=416</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/website-management/analytics/actionable-analytics-resources/.This page contains resources relating to my “Actionable Analytics” talk at WordCamp Melbourne on 27 April 2013. Slides I&#8217;ll embed the SlideShare slides once they are created, but for now, you can download the slides in either of the following formats: PowerPoint PPT (26MB) PDF [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/website-management/analytics/actionable-analytics-resources/">http://scratch99.com/website-management/analytics/actionable-analytics-resources/</a>.<br /><p>This page contains resources relating to my “Actionable Analytics” talk at <a href="http://2013.melbourne.wordcamp.org/" target="_blank">WordCamp Melbourne</a> on 27 April 2013.</p>
<h2>Slides</h2>
<p>I&#8217;ll embed the SlideShare slides once they are created, but for now, you can download the slides in either of the following formats:</p>
<ul>
<li><a href="http://scratch99.com/downloads/Stephen-Cronin-Actionable-Analytics-WCMelb.ppt" target="_blank">PowerPoint PPT (26MB)</a></li>
<li><a href="http://scratch99.com/downloads/Stephen-Cronin-Actionable-Analytics-WCMelb.pdf" target="_blank">PDF (11MB)</a></li>
</ul>
<h2>Video</h2>
<p>I&#8217;ll embed the WordPress TV video once it has been uploaded. Based on past experiences, that could take some time.</p>
<h2>Questions</h2>
<p>If you have any questions about the talk, feel free to ask. I&#8217;m pretty busy, so apologies in advance for any delay in responding, but I will try to answer genuine questions.</p>
<p>I&#8217;m probably most responsive on <a href="https://twitter.com/stephencronin" target="_blank">Twitter</a>, but feel free to leave a comment here as well.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/8106tYYF3NU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/website-management/analytics/actionable-analytics-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery To Select Duplicate Posts In WordPress Admin</title>
		<link>http://scratch99.com/wordpress/hacks/duplicate-posts-in-wordpress-admin/</link>
		<comments>http://scratch99.com/wordpress/hacks/duplicate-posts-in-wordpress-admin/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 12:51:28 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress Hacks]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[WordPress admin]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=407</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/wordpress/hacks/duplicate-posts-in-wordpress-admin/.I have to wade through masses of user submitted posts and it&#8217;s always a pain to try to spot duplicate submissions. I therefore came up with the following jQuery code that identifies duplicates (based on title) and selects all but the first, so I can [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/hacks/duplicate-posts-in-wordpress-admin/">http://scratch99.com/wordpress/hacks/duplicate-posts-in-wordpress-admin/</a>.<br /><p>I have to wade through masses of user submitted posts and it&#8217;s always a pain to try to spot duplicate submissions. I therefore came up with the following jQuery code that identifies duplicates (based on title) and selects all but the first, so I can then delete them.</p>
<pre class="brush: jscript; title: ; notranslate">
jQuery(document).ready(function($){ 
	var titleArray = $('.row-title');
	for (i=0;i&lt;titleArray.length;i++) {
		var thisTitle = $(titleArray[i]).text();
		for (j=0;j&lt;titleArray.length;j++) {
			if (thisTitle == $(titleArray[j]).text() &amp;&amp; i &lt; j ){
				$('input',$(titleArray[j]).parent().parent().parent()).attr('checked', true);
			}
		}
	}
});
</pre>
<p>I just have this running in a GreaseMonkey script, which has jQuery embedded into it as well. It&#8217;s a bit hacky &#8211; it only finds duplicates in the posts on the screen, not those on other pages &#8211; but it suits my needs just fine.</p>
<p>In the ideal world (if I had time), I&#8217;d turn it into a WordPress plugin and probably do it via PHP rather than JavaScript. Maybe in future! </p>
<img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/ZJ8Gq-_2wD4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/hacks/duplicate-posts-in-wordpress-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop Category Pages From Showing No Results Message</title>
		<link>http://scratch99.com/wordpress/development/category-pages-no-results/</link>
		<comments>http://scratch99.com/wordpress/development/category-pages-no-results/#comments</comments>
		<pubDate>Sat, 12 Jan 2013 13:41:54 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress Development]]></category>
		<category><![CDATA[category pages]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=403</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/wordpress/development/category-pages-no-results/.If you have a category page which has no posts, it will normally trigger your theme&#8217;s no posts found message. Seems sensible! However, I have an edge case where I don&#8217;t want that message displayed. Background I&#8217;m writing a WordPress plugin that manipulates the category [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/development/category-pages-no-results/">http://scratch99.com/wordpress/development/category-pages-no-results/</a>.<br /><p>If you have a category page which has no posts, it will normally trigger your theme&#8217;s no posts found message. Seems sensible! However, I have an edge case where I don&#8217;t want that message displayed.</p>
<h2>Background</h2>
<p>I&#8217;m writing a WordPress plugin that manipulates the category page. It appends a list / menu of sub-categories, if they exist, to the category description. Combined with a decent category description, the category page becomes a landing page, rather than just a list of posts.</p>
<p>By default, a category page will list posts coming from that category <strong>and from all of the sub-categories</strong>. I don&#8217;t want the sub-category posts to appear. I want to keep them under them under their sub-category pages, to keeping category pages tightly focussed. </p>
<p>My plugin therefore tells WordPress to ignore sub-category posts on the category page.</p>
<div class="csstextbox1">For those interested in how I tell WordPress to ignore sub-category posts, I use <code>pre_get_posts</code> to alter the main query. For the code, see my article on <a href="http://scratch99.com/wordpress/wp-seo/siloing/#modifying-main-loop">setting up a silo structure in WordPress</a>.</div>
<h2>The Problem &#8211; Unwanted Post Not Found Message</h2>
<p>The problem occurs on category pages that don&#8217;t have posts, but which have sub-categories with do have posts. </p>
<p>In the model I&#8217;m using, it&#8217;s perfectly fine for a category page to just show a description and link to sub-categories. It doesn&#8217;t matter if it doesn&#8217;t have any posts directly under that category.</p>
<p>However, because the query does not return any posts, it fails the <code>if(have_posts())</code> test and therefore the theme displays a no results message:</p>
<p><img src="http://scratch99.com/wp-content/uploads/2013/01/default-showing-no-results-500x384.jpg" alt="Default behaviour with no results message" title="default-showing-no-results" width="500" height="384" class="shadow alignnone size-medium wp-image-404" /></p>
<p>Kind of spoils the page, doesn&#8217;t it?</p>
<div class="csstextbox1">As mentioned above, WordPress includes posts from sub-categories by default, so this won&#8217;t be a problem for most people.</div>
<h2>Finding A Solution</h2>
<p>Finding a solution was difficult.</p>
<p>If this was just for one site, I could simply edit the theme and remove the no results message. However, I needed a solution I could use within the plugin &#8211; and it needed to work with every theme ever built! I can&#8217;t ask users to edit their themes to fix this. If I did that, I&#8217;d spend the rest of my life doing support.</p>
<div class="csstextbox1">Some modern themes use: get_template_part(&#8216;no-results&#8217;,'archive&#8217;); which I may be able to hook into. </p>
<p>However, many themes (including Twenty Ten which I used for the screenshot here) just check <code>if(have_posts())</code> is true and echo a message if false. There&#8217;s no way to hook into that.</div>
<p>So I had to get creative. I didn&#8217;t want to leave the message in the source and remove / hide it with JavaScript. I wanted to do something server side to keep it out of the page entirely. I tried everything I (and others) could think of: filtering <code>pre_get_posts</code>, hooking into <code>loop_start</code>, etc. None of it worked.</p>
<p>The <strong>only way</strong> to make sure the no results message didn&#8217;t display was to make sure <code>if(have_posts())</code> was true. The <strong>only way</strong> to do that was to trick WordPress into thinking it had found a post.</p>
<h2>Solution 1 &#8211; Faking A Post Via <code>post_count</code></h2>
<p>It&#8217;s actually fairly straight forward to trick WordPress into thinking there is a post when there isn&#8217;t. Simply set <code>$wp_query-&gt;post_count</code> to 1, like so:</p>
<pre class="brush: php; title: ; notranslate">
	function siloingpro_no_posts() {
		global $wp_query;
		if ( is_category() &amp;&amp; $wp_query-&gt;post_count ##0 ) {
			$wp_query-&gt;post_count = 1;
	}
	add_action( 'wp', 'siloingpro_no_posts' );
</pre>
<p>I use the <code>wp</code> hook (it&#8217;s the first hook after the posts are selected, <code>pre_get_posts</code> is too early) to call the function that will set <code>post_count</code> to 1. </p>
<p>The function grabs the global <code>$wp_query</code> variable, checks that it&#8217;s a category page and that there are no posts and, if so, sets <code>post_count</code> to 1. The result?</p>
<p><img src="http://scratch99.com/wp-content/uploads/2013/01/no-longer-showing-not-found-500x330.jpg" alt="Screenshot of the not found message having been removed" title="no-longer-showing-not-found" width="500" height="330" class="shadow alignnone size-medium wp-image-405" /></p>
<p>We&#8217;ve gotten rid of the no posts found message, but we now have a different problem: The theme thinks there is a post so it&#8217;s trying to display it (see the &#8220;Posted on by&#8221;). Twenty Ten is actually outputting the following:</p>
<pre class="brush: xml; title: ; notranslate">	
	&lt;div id=&quot;post-&quot; class=&quot;&quot;&gt;
		&lt;h2 class=&quot;entry-title&quot;&gt;&lt;a href=&quot;&quot; title=&quot;Permalink to &quot; rel=&quot;bookmark&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

		&lt;div class=&quot;entry-meta&quot;&gt;
			&lt;span class=&quot;meta-prep meta-prep-author&quot;&gt;Posted on&lt;/span&gt; &lt;a href=&quot;&quot; title=&quot;&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;entry-date&quot;&gt;&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;meta-sep&quot;&gt;by&lt;/span&gt; &lt;span class=&quot;author vcard&quot;&gt;&lt;a class=&quot;url fn n&quot; href=&quot;http://localhost/china/author/&quot; title=&quot;View all posts by &quot;&gt;&lt;/a&gt;&lt;/span&gt;			
		&lt;/div&gt;&lt;!-- .entry-meta --&gt;

		&lt;div class=&quot;entry-summary&quot;&gt;
		&lt;/div&gt;&lt;!-- .entry-summary --&gt;

		&lt;div class=&quot;entry-utility&quot;&gt;
			&lt;span class=&quot;comments-link&quot;&gt;&lt;span&gt;Comments Off&lt;/span&gt;&lt;/span&gt;
		&lt;/div&gt;&lt;!-- .entry-utility --&gt;
	&lt;/div&gt;&lt;!-- #post-## --&gt;
</pre>
<p>Fair enough. But now we need a plan B.</p>
<h2>What Didn&#8217;t Work</h2>
<p>Once again, I tried everything I could think of to make WordPress forget the post once the <code>if(have_posts())</code> check was complete.</p>
<p>I tried hooking into <code>loop_start</code> and setting <code>post_count</code> back to 0, but it was too late. I tried to <code>break</code> out of the loop via <code>loop_start</code>, but it would&#8217;t let me. Using <code>die</code> was a little over the top &#8211; it stopped the loop, but it also stopped the sidebars and the footers!</p>
<p>I thought about trying to filter <code>the_permalink</code>, <code>the_title</code>, <code>the_title_attribute</code>, <code>the_ID</code>, <code>the_content</code> and every other function a theme might be calling at this case, but apart from being impractical it just wouldn&#8217;t work. Once the theme has passed the <code>if(have_posts())</code> check, it&#8217;s going to output some HTML one way or another.</p>
<h2>Solution 2 &#8211; Using Output Buffering To Prevent The Loop Output</h2>
<p>There was one way left to prevent any output via PHP: output buffering.</p>
<p>Your first thought may be &#8220;can&#8217;t you use output buffering to prevent the &#8216;no results&#8217; output?&#8221;. No. There are no hooks to start and stop the output buffering if there are no posts (unless I was to buffer everything).</p>
<p>If WordPress thinks there are posts however, then we can use the <code>loop_start</code> and <code>loop_end</code> hooks to start and stop the buffering. That allows us to catch everything in the loop, which in this case is our ghost post entry. We can then discard it, preventing it from being output. Here&#8217;s how.</p>
<p>First, I edited the code above to add a global variable <code>$siloingpro_ob_required</code> that indicates whether we need to buffer the loop, ie if it&#8217;s a category page with no posts:</p>
<pre class="brush: php; title: ; notranslate">
	$siloingpro_ob_required = 0;
	function siloingpro_no_posts() {
		global $wp_query, $siloingpro_ob_required;
		if ( is_category() &amp;&amp; $wp_query-&gt;post_count ##0 ) {
			$wp_query-&gt;post_count = 1;
			$siloingpro_ob_required = 1;
		}
	}
	add_action( 'wp', 'siloingpro_no_posts' );
</pre>
<p>Next I hook into <code>loop_start</code> and turn on output buffering using <code>ob_start</code> (if we&#8217;ve decided it&#8217;s required), then I hook into <code>loop_end</code> and turn it off using <code>ob_end_clean</code>:</p>
<pre class="brush: php; title: ; notranslate">
	// Start buffering before loop, if it's a category page with no posts
	function siloingpro_ob_start() {
		global $siloingpro_ob_required ;
		if ( is_category &amp;&amp; $siloingpro_ob_required )
			ob_start( );
	}
	add_action( 'loop_start', 'siloingpro_ob_start' );
	
	// Stop buffering (and throw away content) after loop, if it's a category page with no posts
	function siloingpro_ob_end() {
		global $siloingpro_ob_required ;
		if ( is_category &amp;&amp; $siloingpro_ob_required )
			ob_end_clean();
	}
	add_action( 'loop_end', 'siloingpro_ob_end', 1000 );
</pre>
<p>It&#8217;s that simple! If I use <code>ob_end_flush</code> instead of <code>ob_end_clean</code> it will output the loop contents, but by using <code>ob_end_clean</code> it will simply discard it. Voilà:</p>
<p><img src="http://scratch99.com/wp-content/uploads/2013/01/using-output-buffering-500x307.jpg" alt="Screenshot of final solution, with no problems" title="using-output-buffering" width="500" height="307" class="shadow alignnone size-medium wp-image-406" /></p>
<h2>But Isn&#8217;t Output Buffering Bad?</h2>
<p>In general, output buffering should be avoided in WordPress plugins, for a number of reasons.</p>
<p>Output buffering can interfere with what other plugins are trying to do and cause them to misbehave. In this case, any modifcations made by plugins that filter <code>the_content</code> or <code>the_title</code> etc, will be lost. No problem as there aren&#8217;t any real posts for them to filter.</p>
<p>It can also cause collisions with other output buffering, which could cause all sorts of unexepected stuff. In this specific case, the risk is minimal. Output buffering is nested, which means if another plugin is turning output buffering on before I do and off after I do, there&#8217;s no problem. Its only a problem if they turn it on before I do, but turn it off before I do. Not impossible, but unlikely given that it&#8217;s only on during the loop.</p>
<p>As far as performance goes, the impact should be minimal. It&#8217;s actually far better than the overhead of creating a new query, which is the only other way to solve this (leave the subcategory posts in the main loop and create a secondary loop without them to display).</p>
<p>And remember, this is only happening on category pages with no posts.</p>
<h2>Acknowledgements</h2>
<p>A big thanks goes to the following people who all made suggestions or offered to help:</p>
<ul>
<li><a href="http://ryanmccue.info/">Ryan McCue</a></li>
<li><a href="http://webcoder.com.au/">Stew Heckenberg</a></li>
<li><a href="http://benmay.org/">Ben May</a></li>
<li><a href="http://bigredtin.com/author/peter/">Pete Wilson</a></li>
</ul>
<p>You guys rock!</p>
<h2>Final Thoughts</h2>
<p>Although this solution seems to work really well, I&#8217;m still slightly uncomfortable about using output buffering, so let me know if there is a better way to solve this!</p>
<script type="text/javascript">Nifty("div.csstextbox1","bgcolor-#FFFFFF");</script><img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/gBCdcylu0pc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/development/category-pages-no-results/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How To Prevent Category Widget From Using Category Description As Title Attribute</title>
		<link>http://scratch99.com/wordpress/development/category-widget-title-attribute/</link>
		<comments>http://scratch99.com/wordpress/development/category-widget-title-attribute/#comments</comments>
		<pubDate>Fri, 04 Jan 2013 14:10:13 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress Development]]></category>
		<category><![CDATA[filters]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=399</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/wordpress/development/category-widget-title-attribute/.The Categories widget in WordPress uses the category description as the title attribute for the list items displayed by the widget. While this may be great for very short descriptions, it doesn&#8217;t make sense when longer descriptions are in use. Here&#8217;s an example of a [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/development/category-widget-title-attribute/">http://scratch99.com/wordpress/development/category-widget-title-attribute/</a>.<br /><p>The Categories widget in WordPress uses the category description as the title attribute for the list items displayed by the widget. While this may be great for very short descriptions, it doesn&#8217;t make sense when longer descriptions are in use.</p>
<p>Here&#8217;s an example of a medium size description which is diplayed on mouseover:</p>
<p><img src="http://scratch99.com/wp-content/uploads/2013/01/category-description-as-title-attribute.png" alt="screenshot showing a long category description as the title attribute on mouseover" width="500" height="260" class="shadow alignnone size-full wp-image-400" /></p>
<p>Ugly. There is no way to turn this off in the widget options, but it can be disabled by dropping some code into functions.php.</p>
<h2>Why Use Long Category Descriptions?</h2>
<p>Many themes display the category description on the Category archive pages. This can be useful for users, as it sets the context of the page rather than just serving them up a long list of posts. It&#8217;s also useful for SEO, as search engines are likely to rank category pages higher if they include some unique content.</p>
<div class="csstextbox1">I use long category descriptions for the reasons above, but also because my category pages are critical part of my approach to <a href="http://scratch99.com/wordpress/wp-seo/siloing/">applying a silo structure to WordPress</a>.</div>
<p>If you&#8217;re going to display the category description on the front end, then it needs to be longer than would be sensible for a title attribute. </p>
<h2>HTML In Category Descriptions</h2>
<p>Complicating matters, the category description allows some basic HTML (such as the strong tag and links). People who are displaying category descriptions on the front end often make use of this. Many even use a plugin such as <a href="http://wordpress.org/extend/plugins/allow-html-in-category-descriptions/">Allow HTML in Category Descriptions</a> by Arno Esterhuizen to allow other HTML (such as heading tags).</p>
<div class="csstextbox1">Functionality to allow HTML in category descriptions is also built into <a href="http://wordpress.org/extend/plugins/wordpress-seo/">WordPress SEO by Yoast</a> meaning many people have this functionality without realising it &#8211; not that it matters unless people actually put HTML in their category descriptions.</div>
<p>Having HTML within the title attribute is not a good idea! Not only is not semantic, we don&#8217;t know how it will be handled by:</p>
<ul>
<li>assistive technologies for disabled persons, such as screen readers</li>
<li>search engines</li>
</ul>
<p>While it probably isn&#8217;t the end of the world, we don&#8217;t want HTML in the title attributes.</p>
<h2>Solution &#8211; The <code>widget_categories_args</code> Filter</h2>
<p>Fortunately, we can use the <code>widget_categories_args</code> filter to change this. Simply add the following code to your functions.php (or functionality plugin):</p>
<pre class="brush: php; title: ; notranslate">// prevent the category widget from using the category description as the list item title attribute
function sjc_disable_cat_desc_widget_list_titles ( $cat_args ) {
	$cat_args[ 'use_desc_for_title' ] = 0;
	return $cat_args;
}
add_filter( 'widget_categories_args', 'sjc_disable_cat_desc_widget_list_titles' );</pre>
<div class="csstextbox1">The widget output is created using wp_list_categories, so you could use this technique to change any of the <a href="http://codex.wordpress.org/Template_Tags/wp_list_categories#Parameters" target="_blank">parameters accepted by wp_list_categories</a>.</div>
<p><strong>Remember to make a copy your functions.php file before adding the code, so you can copy it back if something goes wrong!</strong></p>
<h2>The Result</h2>
<p>By disabling the use of category descriptions, the title attribute returns to &#8220;View all posts filed under categoryname&#8221;, which is what&#8217;s used if there is no category description:</p>
<p><img src="http://scratch99.com/wp-content/uploads/2013/01/default-title-attribute.png" alt="screenshot showing the title attribute when the category description has been disabled" width="500" height="150" class="shadow alignnone size-full wp-image-401" /></p>
<p>Not as good as a purpose written title attribute, but far better than having War and Peace as the title!</p>
<script type="text/javascript">Nifty("div.csstextbox1","bgcolor-#FFFFFF");</script><img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/tsF_KGhi_O4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/development/category-widget-title-attribute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Create A Silo Structure In WordPress</title>
		<link>http://scratch99.com/wordpress/wp-seo/siloing/</link>
		<comments>http://scratch99.com/wordpress/wp-seo/siloing/#comments</comments>
		<pubDate>Fri, 26 Oct 2012 13:33:07 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress SEO]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[silo]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=369</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/wordpress/wp-seo/siloing/. Siloing is an SEO technique that creates strong keyword related themes on your site, improving the relevancy of your site in the eyes of the search engines. In this article, I cover the basics of the silo model and then show you how to [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/wp-seo/siloing/">http://scratch99.com/wordpress/wp-seo/siloing/</a>.<br /><p><img style="height:180px" src="http://scratch99.com/wp-content/uploads/2012/10/how-to-create-a-silo-structure-in-wordpress.jpg" alt="Image showing silos and the title &quot;How to create a silo structure in WordPress&quot;" title="how-to-create-a-silo-structure-in-wordpress" width="240" height="180" class="alignleft size-full wp-image-393" /> Siloing is an SEO technique that creates strong keyword related themes on your site, improving the relevancy of your site in the eyes of the search engines. In this article, I cover the basics of the silo model and then show you how to implement siloing in WordPress.</p>
<p>Note: This is a companion piece to my <a href="http://scratch99.com/wordpress/wp-seo/siloing-links/">Siloing Your Site For SEO Success</a> talk at WordCamp Sydney in July 2012. The video can be seen at the bottom of this article.</p>
<h2>Background &#8211; Website Structure</h2>
<p>Humans have been trying to organise things since day one. Unfortunately we haven&#8217;t always been so great at organising websites. The following site (http://www.arngren.net/) has too much on it&#8217;s home page and no organisation to speak of:</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/site-with-poor-ia.jpg"><img src="http://scratch99.com/wp-content/uploads/2012/10/site-with-poor-ia-500x371.jpg" alt="Screenshot of a site with poor structure" title="site-with-poor-ia" width="500" height="371" class="alignnone size-medium wp-image-390" /></a></p>
<p>It&#8217;s confusing for people and it&#8217;s confusing for search engines. Both will find it hard to understand what this website is about. As a result, this site is probably making less money than it could.</p>
<p>Although that&#8217;s an extreme example, many websites have a less than optimal structure. The following disciplines attempt to address this problem:</p>
<ul>
<li>Information architecture (IA), which is about organising content to give a better user experience (UX)</li>
<li>SEO, which includes organising content to give a better signal to search engines</li>
</ul>
<p>There are occasionally tensions between their competing needs, but for the most part SEO and IA align nicely around website structure. This article focuses on site structure and SEO, but there are many UX benefits as well.</p>
<h2>Introduction To Siloing</h2>
<p>Siloing is an SEO architecture technique that optimises a website&#8217;s structure, organising content into silos based on target keywords, in order to increase relevancy in the eyes of the search engines.</p>
<div class="csstextbox1">Siloing is also called theming, although that term is probably best avoided in the WordPress context, where it normally means creating WordPress themes. Theming in the siloing context means theming your content around your target keywords, to create strong keyword related silos (or themes).</div>
<p>Siloing includes:</p>
<ul>
<li>Keyword research (you need to know what keywords you want to target before you can create your silos around them)</li>
<li>Organising your content hierarchically, based on those target keywords</li>
<li>Reinforcing that structure through menus, breadcrumb, linking and URL structure</li>
</ul>
<p>This gives the search engines have a very clear idea of what your site is about, improving your keyword relevancy for the keywords you are targeting.</p>
<p>Bruce Clay use an example of marbles, which is a good way to get your head around the basics of siloing. Personally, I&#8217;m more of a fan of jellybeans, so I&#8217;ll use those.</p>
<p>First, find an orange jellybean:</p>
<p><img src="http://scratch99.com/wp-content/uploads/2012/10/unsiloed-jellybeans.jpg" alt="Image of unsorted jellybeans, representing unsorted content on a website." title="Unsiloed jellybeans" width="500" height="304" class="alignnone size-full wp-image-376" /></p>
<p>Now find an orange jellybean:</p>
<p><img src="http://scratch99.com/wp-content/uploads/2012/10/siloed-jellybeans.jpg" alt="Image of jellybeans sorted into containers in a confectionery shop" title="siloed-jellybeans" width="500" height="322" class="alignnone size-full wp-image-387" /></p>
<p>In which case was it easier to find an orange jellybean? It&#8217;s possible to find one in the first image, but it&#8217;s easier in the second image where all the orange jelly beans are grouped together.</p>
<p>Which is Google more likely to serve up to their users who are looking for orange jellybeans:</p>
<ul>
<li>An isolated page about orange jellybeans on a site that covers a lot of topics?</li>
<li>An entire section of pages about orange jellybeans, carefully interlinked, supporting each other and supporting the single keyword (orange jellybeans) around which they are built?</li>
</ul>
<p>There are other factors of course &#8211; the isolated page might be more popular (ie have a lot more backlinks) or be on a more authorative site &#8211; but the silo of orange jellybeans pages will be more relevant to the keyword and is much more likely to be served up by Google if all else is equal.</p>
<div class="csstextbox1">It&#8217;s very important to keep the silos strictly on topic. You don&#8217;t want green jellybeans in the orange jellybean silo. You want to know what you&#8217;re going to get.</div>
<h2>Siloing Theory</h2>
<p>Covering the theory in full is beyond the scope of this article, so I&#8217;ll point you to some articles that cover siloing in more detail:</p>
<ul>
<li><a href="http://www.bruceclay.com/seo/silo.htm" target="_blank">SEO Siloing: Building a Themed Website</a> by Bruce Clay</li>
<li><a href="http://www.wolf-howl.com/seo/how-to-silo-your-website/" target="_blank">How To Silo Your Website</a> series by Michael Gray (aka Graywolf)</li>
</ul>
<p>Bruce Clay&#8217;s article is very in-depth and will take you a long time to digest. A lot of the thought on siloing over the last 10 years comes from Bruce Clay. It&#8217;s also an underlying fundamental of his <a href="http://www.amazon.com/gp/product/1118024419/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1118024419&#038;linkCode=as2&#038;tag=job00-20" target="_blank">Search Engine Optimisation All In One For Dummies</a> book and the training he gives. That&#8217;s condensed into this article.</p>
<p>Graywolf&#8217;s article is the first in a series of how to implement siloing (not WordPress specific).</p>
<p>Both Bruce and Michael are big names in the SEO industry and they know what they are talking about &#8211; although some of the advice in those articles may be slightly out of date given recent changes to Google&#8217;s algorithms. I highlight some of these issues as we go through things below.</p>
<h2>Where Does Siloing Fit Into SEO?</h2>
<p>Siloing is a fundamental &#8211; you can think of it as putting down the foundations of your website. You put the ideal structure in place, then build on top of it. You still need good content to fill the silos, backlinks to that content and everything else that goes into SEO.</p>
<p>The term siloing doesn&#8217;t make it into all those Top 10 SEO Tips posts out there, although many of it&#8217;s components are mentioned. During my talk, I asked how many people had heard of Siloing. Out of about 120 people, 6 or 7 hands were raised. This indicates that some people know about it, but that there isn&#8217;t a wide spread understanding of siloing out there. Despite this, it&#8217;s used by many top-end SEO companies.</p>
<p>Siloing has been around for roughly 10 years and it&#8217;s a white hat SEO technique &#8211; it won&#8217;t get you in trouble with Google &#8211; although there are some slightly grey edges (covered later).</p>
<p>If you are starting from scratch with your SEO, then simple things like title tags and h1 tags will give you the most SEO bang for your buck. If you&#8217;re already well optimised, it&#8217;s can be key differentiator between your site and your competitor&#8217;s. Having said that, siloing is something that really needs to be built in from the start, as the whole site revolves around it and it&#8217;s complicated to retro-fit.</p>
<h2>Siloing and WordPress</h2>
<p>You won&#8217;t find siloing mentioned in WordPress SEO presentations or articles (such as Joost de Valk&#8217;s <a href="http://yoast.com/articles/wordpress-seo/" target="_blank">definitive WordPress SEO</a> article).</p>
<p>However, many of it&#8217;s elements are included &#8211; things such as breadcrumbs, permalink structure, reducing links, etc. Also, many WordPress themes use category based menus, which contribute to siloing.</p>
<p>Although it&#8217;s not mainstream, siloing is not new to WordPress. If you do a Google search for &#8220;WordPress silo&#8221; you get around 1.5 million results. If you do a search for &#8220;WordPress silo premium themes&#8221; you get around 335,000 results. People out there are trying to implement siloing in WordPress and have been for years.</p>
<p>I haven&#8217;t tried any of the premium themes or plugins, so can&#8217;t really comment on their quality. They may be great. But&#8230; Personally, I have reservations about many of these, because they mostly seem to have been created BY internet marketers FOR internet marketers. I&#8217;ve found that WordPress solutions created in these circumstances often don&#8217;t follow WordPress development best practices.</p>
<div class="csstextbox1">Disclosure, I am now creating my own siloing premium WordPress plugin. I made the above comments during my talk, before I planned releasing a competitor to the other premium solutions out there. I want to emphasise that I haven&#8217;t tried any of the other solutions, so cannot comment on their quality &#8211; some of them may be great.</div>
<p>Anyway, I decided to roll my own solution.</p>
<h2>Siloing Your Website In WordPress</h2>
<p>How do you silo your WordPress website? Let&#8217;s have a look at what&#8217;s involved, starting with keyword research.</p>
<h3>Keyword Research</h3>
<p>Siloing is based on keywords, so you need to have a good idea of the keywords you&#8217;re targeting before you start.</p>
<p>Keyword research is a whole topic in it&#8217;s own right, so I&#8217;m not going to cover it here. However, I generally use Google&#8217;s free tools. You&#8217;d be surprised how much you can accomplish by doing some simple research using these:</p>
<ul>
<li>The <a href="http://www.adwords.google.com/keywordtool">Google Adwords Keyword tool</a> to find keyword opportunities and work out which ones are worth pursuing</li>
<li>The Organic report in Google Analytics to find keywords that I wasn&#8217;t specifically targeting, but which I&#8217;m getting some search traffic for. These can be plugged back into the Adwords Keyword Tool to find more opportunites and I can build more content on those topics.</li>
<li>The SEO Queries report in Google Analytics to see keywords that I&#8217;m ranking for but not getting clicks for. There may be an opportunity to build the site out further based on these opportunities.</li>
</ul>
<p>I also look at competitors&#8217; sites to see what they rank for and to find keywords that I may be able to target.</p>
<p>I then use some complicated formulas in Excel to link these together into something that helps identify the best keywords. That&#8217;s a topic for another day.</p>
<h4>Case Study</h4>
<p>I normally wouldn&#8217;t share SEO information about one of my sites in public, but frankly, it was the only way to easily explain siloing. Therefore, I&#8217;ll talk about my one of my lower priority sites, <a href="http://www.jobsinchina.com/" target="_blank">Jobs in China</a>.</p>
<div class="csstextbox1">I&#8217;m still working on implementing the siloing model on this site. It&#8217;s just a side project. Having the time to create the content to build the site out is a problem, so don&#8217;t expect a finished example any time soon!</div>
<p>The site is around job in China and ranks fairly well for that term, in large part due to the exact match domain name. It does get some traffic for other terms, but not as much as I&#8217;d like! I want to make it rank for other terms.</p>
<div class="csstextbox1">Since writing this, my Jobs in China site has been hit by Google&#8217;s EMD (Exact Match Domain) algorithm adjustment, taking if from the top couple of results, back to the second page of results. All the more reason to concentrate on turning it into a quality site with deep content organised in a siloed structure. If I get the time&#8230;</div>
<p>The existing site was structured like this:</p>
<p><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/old-website-structure.jpg" alt="diagram showing the old structure of my website" title="old-website-structure" width="500" height="319" class="alignnone size-full wp-image-385" /></p>
<p>The jobs related content (mostly job listings) ranked well. There was a resources area which didn&#8217;t serve much purpose or get much traffic. Then there was the blog area which was a whole mess of content on different topics, all mixed up (like jellybeans!).</p>
<p>Some topics in the blog area ranked well, but most didn&#8217;t get much traffic. Those that did rank seem to indicate that there was opportunity for the site to be ranking for more. There are a lot of other things that go into ranking, but having a solid silo based structure would certainly help my efforts. </p>
<p>So I broke out my keyword research tools. After spending quite some time doing keyword research, I came up with a whole bucket load of keywords I wanted to target. Here&#8217;s just a few of them from the jobs section:</p>
<ul>
<li>how to get a job in China</li>
<li>getting a job in China</li>
<li>China jobs</li>
<li>jobs in China for Americans</li>
<li>expat jobs in China</li>
<li>international jobs in China</li>
</ul>
<p>I already rank well for job related terms, but not these particular terms, so it make sense to target these. I also have a very large list (several hundred) of keywords I want to target that are not directly related to the jobs in China term.</p>
<h3>Organising Your Content</h3>
<p>Now that you have your target keywords, the next step is to map out a high level information architecture based on those keywords.</p>
<p>If you have existing content, you need to review it and decide:</p>
<ul>
<li>what to keep</li>
<li>what to rework</li>
<li>what to remove</li>
</ul>
<p>Once you&#8217;ve done that, you need to map your content onto the new IA.</p>
<div class="csstextbox1">If you have existing content, you need to be careful about redirects, which are discussed later.</div>
<h4>Case Study</h4>
<p>For me, I grouped my big list of keywords into the following structure:</p>
<p><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/new-website-structure.jpg" alt="A diagram showing a reworked information architecture for the website" title="new-website-structure" width="500" height="327" class="alignnone size-full wp-image-384" /></p>
<p>Note that I&#8217;ve actually diverged from pure siloing principles by creating a folder called Information under Jobs. People generally don&#8217;t search for the word &#8220;information&#8221;. This actually isn&#8217;t a keyword that I&#8217;m targeting. In this case, I&#8217;ve put the users before SEO, as this term is more navigable than the keyword alternatives I came up with.</p>
<p>Having said that, I am considering changing this to &#8220;How to get a job in China&#8221;! However, I wanted to make the point that there are times when it makes sense to put your users before the search engines (and Google say to create website for your users as well).</p>
<p>The rest of my structure is mostly based on high level keywords that I want to target.</p>
<p>To decide what to do with my existing content, I created a spreadsheet listing all content on the site, then did an Excel VLOOKUP to pull in the Google Analytics search traffic data. This let me identify which pages were getting little or no traffic. I reviewed these and decided which ones I&#8217;d remove and which ones I&#8217;d rework to better align with my target keywords.</p>
<div class="csstextbox1">Throwing away content is hard! I suck at it. But is good for the site, the same as a bushfire actually helps create growth by clearing away the dead underbrush that&#8217;s restricting growth.</div>
<p>Confession: I cut WordPress founding developer, Matt Mullenweg, from my site recently. I had this photo of Matt speaking at WordCamp Beijing 2008.</p>
<p><a href="http://www.flickr.com/photos/shizhao/2878274831/"><img src="http://scratch99.com/wp-content/uploads/2012/10/remove-old-content-500x376.jpg" alt="picture of Matt Mullenweg which was on my site, but served no purpose" title="remove-old-content" width="500" height="376" class="alignnone size-medium wp-image-386" /></a></p>
<p>It wasn&#8217;t my picture (it&#8217;s by <a href="http://www.flickr.com/photos/shizhao/" target="_blank">shizhao</a>). I wasn&#8217;t at the WordCamp, but was living nearby and thought it was cool that Matt was visiting China, so I reposted the photo. When I reviewed my content, I found this post was getting no traffic. It didn&#8217;t support any of my target keywords and served no purpose for the user &#8211; it was only for me &#8211; so it had to go. Sorry Matt!</p>
<h3>Creating Your Website Structure</h3>
<p>Once you&#8217;ve mapped your content onto the new IA, you need to actually build the website structure and create / move content into it.</p>
<p>There are a couple of common models for creating a silo structure in WordPress:</p>
<h4>Use Pages (rather than Posts) to build the silos</h4>
<p>You can define a parent Page for each Page, which gives you the ability to create the hierarchical structure needed for siloing.</p>
<p>This works, although I&#8217;ve always found that managing a large number of Pages is a little cumbersome in WordPress, although there are ways to make it more manageable. It also means that as you add a new page in a silo, you need to manually update the silo page to include / link to that (although it is possible to programmatically list sub pages).</p>
<h4>Using Posts for articles and using Pages for silo pages</h4>
<p>In this model, people use Categories (which are hierarchical) as the silos, but override the Category page with a Page at the same URL. Personally I feel it&#8217;s easier manage a large number of posts than it is pages, but you still need to manually update the silo Page when you add pages to a silo. Also, what if WordPress changes in the future so that Pages no longer override Category pages?</p>
<p>I went a different way and came up with my own model.</p>
<h4>Using Posts for articles and Category pages for silo pages</h4>
<p>Instead of overriding the Category pages with Pages, I just use the Category pages for the silo page. I alter the category template so that it displays the category description, the subcategories, sticky posts (with short extract) and a list of other posts (just the title).</p>
<div class="csstextbox1">You do need to be able to add some code to make this method work. I have explained what&#8217;s needed below. You should probably be able to copy and paste these snippets to get you up and running with this method, although I&#8217;m considering to wrapping them up into a premium plugin for those who really don&#8217;t want to code.</div>
<p>The main benefit of this model is that silo landing pages are updated automatically when you post. It will automatically list new subcategories (sub silos), new articles in the silo, etc, giving the silo the benefit of Google freshness signal, while still allowing unique content on that page which is also essential for ranking. You post and the rest is taken care of. Also, because categories in WordPress have their own feed, each silo has their own feed.</p>
<p>The main problem with this model is that the long category descriptions are displayed in the WordPress admin screen, which can be cumbersome. I&#8217;m looking into ways to manage this. There is a filter on category_description, but WordPress core doesn&#8217;t apply it on the Categories screen.</p>
<div class="csstextbox1">Note: A solution can now be found in this <a href="http://core.trac.wordpress.org/ticket/21539#comment:3" target="_blank">trac ticket</a>.</div>
<p>To follow this approach, you need to rework your category structure to reflect the IA map. You then simply change the category of each existing article to move them into the appropriate silo.</p>
<p>When setting up your categories, you need to make sure that the slug matches your keyword. For example for the category &#8220;Chinese culture&#8221;, the slug should be chinese-culture. This is very important when we get to the next step (URL structure). </p>
<p>If you see a message similar to:</p>
<p><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/slug-already-in-use.jpg" alt="image showing the error message received when a slug is already used by another term" title="slug-already-in-use" width="500" height="149" class="alignnone size-full wp-image-391" /></p>
<p>that means that you have a tag, a custom taxonomy, or even another category, which is already using the slug you are trying to enter. If that happens, you need to hunt down the offending term and change the slug, so that the slug you need is freed up for you to use.</p>
<h3>URL Structure</h3>
<p>Ideally the URL structure should include your silos as folders, eg:</p>
<p class="codebox">sitename.com/silo/sub-silo/page</p>
<p>WordPress gives us an easy way to do this, using the permalink structure of:</p>
<p class="codebox">/%category%/%postname%/</p>
<p>Simply go to Settings &gt; Permalinks, select Custom Structure, enter <code>/%category%/%postname%/</code> and Save.</p>
<div class="csstextbox1">If you change the permalink structure on an existing site, you *may* need to set up 301 redirects, although WordPress mostly takes cares of things these days. Please see the redirect section below.</div>
<h4>Removing The Category Slug</h4>
<p>You&#8217;re almost there. However, the URL for your category pages won&#8217;t match the URLs for the posts in it, as WordPress adds the word category. For example:</p>
<p>a post URL will be:</p>
<p class="codebox">http://www.jobsinchina.com/living/real-estate/good-time-to-buy-beijing-apartment/</p>
<p>the Category URL will be:</p>
<p class="codebox">http://www.jobsinchina.com/category/living/real-estate/</p>
<p>but we want it to be: </p>
<p class="codebox">http://www.jobsinchina.com/living/real-estate/</p>
<p>We don&#8217;t want that extra &#8220;category&#8221; in there, as it breaks our folder model and the category URLs don&#8217;t match the URLs of posts in those categories. Fortunately, it&#8217;s easy to remove the category slug from the URL using a plugin.</p>
<p>I use <a href="http://wordpress.org/extend/plugins/wp-no-category-base/" target="_blank">WP No Category Base</a>, which I&#8217;ve used for years.</p>
<p><a href="http://wordpress.org/extend/plugins/wordpress-seo/" target="_blank">WordPress SEO by Yoast</a> also has this feature, but there is a bug with it. Sometimes, seemingly at random, your category pages start 404ing and you have to turn the parameter off then on again. This has been <a href="http://wordpress.org/support/topic/plugin-wordpress-seo-by-yoast-stripping-category-base-fails-in-upgrade-to-wp-341" target="_blank">reported</a>, but has not been fixed to date.</p>
<h4>Redirects</h4>
<p>If you change your permalink structure, the URLs for all your existing posts will change. You need to be careful about having 301 redirects in places, in order to prevent confusion for users and to prevent the loss of PageRank (or Google juice) that your site has built up over time.</p>
<p>These days WordPress mostly takes care of this for you, but not always. In a recent migration, out of 150 posts, 3 did not redirect properly (two gave a 404 and one redirected to a different site!). It&#8217;s important to at least check that your important pages are redirecting correctly and to have manual .htaccess redirects ready to use if necessary. Setting up .htaccess redirects is beyond the scope of this article and you need to be careful to do it correctly.</p>
<div class="csstextbox1">If redirects scare you, then perhaps you should use &#8216;virtual&#8217; sioling as outlined by Bruce Clay. Everything is the same, except you don&#8217;t do anything that changes the URLs of your content. You leave them the same. This isn&#8217;t as powerful, but it may be a better for you if you&#8217;re not comfortable with redirects.</div>
<h3>Menus</h3>
<p>Menus are very important, as they are the prime link to your top-level silos. The anchor text needs to be keyword terms for these silos.</p>
<div class="csstextbox1">Having said that, it&#8217;s worth noting that Bruce Clay actually puts the prime links to his silos in his footer, as we&#8217;ll see later. I believe this is so he can have longer keyword terms for the anchor text than would sensibly fit within his menu. The links in his menu are brought in via Ajax, so that they are ignored by the search engines (at least that&#8217;s what Bruce is banking on, although we know Google has some capacity to read Ajax content).</div>
<p>It&#8217;s easy to set this up in WordPress, assuming your theme supports the Menu feature in WordPress. Simply go to Appearance &gt; Menus and set up the menu so it includes the top-level silos.</p>
<h3>Breadcrumbs</h3>
<p>Breadcrumbs are another very important signal about your website structure. There are a number of plugins that can add breadcrumbs for you and some themes have breadcrumb functionality built in.</p>
<p>Personally, I use the breadcrumbs feature in the Internal Links section of Joost de Valk&#8217;s WordPress SEO plugin. I remove the blog page from the breadcrumbs (there&#8217;s no blog folder in my structure), and I show the Category in breadcrumbs for posts (the category folder is in my structure). Here are the settings I use:</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/breadcrumb-settings.jpg"><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/breadcrumb-settings-500x328.jpg" alt="screenshot of the recommended settings for breadcrumbs in WordPress SEO" title="breadcrumb-settings" width="500" height="328" class="alignnone size-medium wp-image-377" /></a></p>
<h3>Home Links</h3>
<p>Graywolf talks about not using the term &#8220;Home&#8221; for the home link in the menu or breadcrumbs. You want this link to include the main keyword for your site &#8211; you&#8217;re not trying to rank for the word &#8220;Home&#8221;. In my case, I should use &#8220;Jobs in China&#8221; as the anchor text for the home link, as that is the main keyword for my site.</p>
<p>However, putting your keyword in links to the home page can cause problems:</p>
<ul>
<li>The Home link is a common UX pattern: users expect it to contain the word home, so using your keyword term can confuse users.</li>
<li>Unless your keyword term is small, it won&#8217;t fit nicely into menus and breadcrumbs</li>
</ul>
<p>A common technique to get around this is image replacement: The anchor text for the home link has your keywords in it (eg &#8220;Jobs in China&#8221;), but this is hidden using CSS and an image saying Home is shown instead. The search engines get the link with the keywords in it, users get the image saying home.</p>
<p>I used to do something like this myself, but no longer worry about it. In most cases the name of my sites contain the main keyword terms, so I just put a keyword rich link on the site name in the header. </p>
<p><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/keyword-rich-home-link.jpg" alt="Screenshot showing the keyword rich link to the home page" title="keyword-rich-home-link" width="500" height="244" class="alignnone size-full wp-image-380" /></p>
<p>There&#8217;s research out that showing that if there are multiple links to a page, Google uses the anchor text of the first link. That&#8217;s the one in the header, so it doesn&#8217;t matter if I use Home further down.</p>
<div class="csstextbox1">If you do go down the image replacement route, make sure you are spriting your images, to reduce the number of HTTP requests. You don&#8217;t want to bog down the performance of the site.</div>
<h3>Rules About Linking Between Silos</h3>
<p>There are rules about linking between silos. These rules help prevent the dilution of a silo&#8217;s theme and sends the maximum power to the main silo pages. A page within a silo:</p>
<ul>
<li>should support that silo by linking to it</li>
<li>can link to sibling pages within that silo if appropriate</li>
<li>can link to uncle / auntie silos if appropriate</li>
<li>should not link to cousin pages in other silos</li>
</ul>
<p>If you have a need to link to a page in another silo, you should instead link to the main page of the silo it&#8217;s in.</p>
<p>That&#8217;s what the rules say anyway. I personally link where it makes sense to do so. I&#8217;m not going to send a user to a silo page if I have a more relevant page for them within that silo. I&#8217;ll link them right to the most relevant page. I may be hurting my SEO efforts slightly, but there&#8217;s a line that I won&#8217;t cross when it comes to balancing SEO and UX.</p>
<p>In the following example, I shouldn&#8217;t link the Moving to China page to the Work Permits page. Instead, I should link it to the Working in China silo. However, if I decide it&#8217;s valuable for the user, I&#8217;ll add the link.</p>
<p><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/silo-linking-rules.jpg" alt="Image showing the silo linking rules mentioned in the text" title="silo-linking-rules" width="500" height="311" class="alignnone size-full wp-image-389" /></p>
<p>Bruce Clay says that if you must link to a page in another silo, you should nofollow the link. Makes sense in relation to the silo theory and Bruce knows what he&#8217;s talking about, but to me it seems a little odd (or more correctly, I&#8217;m worried it will seem odd to Google). I just link directly without using nofollow.</p>
<p>There&#8217;s no particular way to implement this in WordPress. You just need to manually follow these linking rules. I have thought about writing a plugin that filters the content and adds nofollow to links where appropriate, but I haven&#8217;t done this because I don&#8217;t actually use this.</p>
<div class="csstextbox1">Edit: I will include this in the premium plugin I&#8217;m planning to release, although perhaps not in the initial launch.</div>
<p>Note: The SEO Ultimate plugin apparently has an auto linker which has silo mode. I&#8217;ve not used it, but according to their documentation, this: &#8221;Lets you enable &#8220;Silo Linking&#8221; mode so that posts only link to other posts in the same category&#8221;. I don&#8217;t think it works on existing links though.</p>
<h3>Limiting The Number Of Links</h3>
<p>I&#8217;m not going to go into PageRank theory, but&#8230;</p>
<p>You need to limit the number of links on a page, to preserve PageRank and flow it to your most important pages (ie to the silo landing pages).</p>
<p>You should still link out to relevant authority sites, as that is a ranking signal in it&#8217;s own right, but get rid of any links that don&#8217;t really need to be there. Let&#8217;s have a look at how Bruce Clay does this on his own site (as at 22 July 2012):</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/limiting-links-header.jpg"><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/limiting-links-header-500x220.jpg" alt="Screenshot of header of the Bruce Clay website with visual indicator of the types of links used" title="limiting-links-header" width="500" height="220" class="alignnone size-medium wp-image-383" /></a></p>
<p>In the header, we find that the main menu has been brought in via Ajax (he used to use Flash for his menu). Google can execute some Ajax, but no-one knows how it will treat links brought in via Ajax. Bruce is banking on Google not counting these links. And Bruce does research*.</p>
<div class="csstextbox1">* When I had training with Bruce, he would occasionally say something that didn&#8217;t gel with common SEO industry views. Each time I questioned him on something, he had a very believable answer and he repeatedly said &#8220;Did I tell you? We do research&#8221;. It&#8217;s one of his catch phrases.</div>
<p>The breadcrumbs are real links and the top right menu contains real links (except for Newsletter which is created via JavaScript).</p>
<p>Now lets look at his footer:</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/limiting-links-footer.jpg"><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/limiting-links-footer-500x375.jpg" alt="Screenshot of the footer of the Bruce Clay website with visual indicator of the types of links used" title="limiting-links-footer" width="500" height="375" class="alignnone size-medium wp-image-382" /></a></p>
<p>Most of the &#8216;links&#8217; in the footer aren&#8217;t &#8216;real links&#8217;. The vast majority are links within iFrames, which don&#8217;t count as links on this page. A couple are spans or divs that act like links through JavaScript. Then he has real links to his silos, using keyword rich anchor text that is too long to comfortably fit in his main menu, and a link to his sitemap and his Google profile.</p>
<p>So why is Bruce doing this? He&#8217;s limiting the number of links, in order to limit PageRank dilution, and he&#8217;s channeling that PageRank to the most important pages on his site. These are primarily his main silo pages, but he also has to link to some other pages as well (but as few as possible).</p>
<p>Now let&#8217;s look at the homepage of the Toyota website:</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/javascript-on.jpg"><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/javascript-on-500x257.jpg" alt="Image showing number of links on the Toyota website with JavaScript turned on" title="javascript-on" width="500" height="257" class="alignnone size-medium wp-image-379" /></a></p>
<p>Wow, 329 links on that page! PageRank is being split 329 ways. Or is it? Let&#8217;s look at it again, this time with JavaScript turned off:</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/javascript-off.jpg"><img src="http://scratch99.com/wp-content/uploads/2012/10/javascript-off-500x264.jpg" alt="Image showing number of links on the Toyota website with JavaScript turned off" title="javascript-off" width="500" height="264" class="alignnone size-medium wp-image-378" /></a></p>
<p>Right, now it&#8217;s down to 134 links. That&#8217;s still pretty high, but far better than 329. Toyota is creating many of it&#8217;s links through JavaScript or Ajax. Why? Will it help if I tell you that they are one of Bruce Clay&#8217;s clients? Another of his clients, AT&amp;T does something very similar.</p>
<p>Personally, I think there is a fine line here. You need to make sure that you don&#8217;t trade away too much in terms of usability and accessibility. Many of these techniques need to be considered carefully:</p>
<ul>
<li>Flash: Won&#8217;t run on iPads, iPhones, new versions Androids going forward, or on screen readers</li>
<li>iFrames: Aren&#8217;t responsive, so will break your design if it&#8217;s responsive. Also can&#8217;t be read by screen readers</li>
<li>Ajax: It&#8217;s a common technique to Ajax content in, but make sure it&#8217;s not essential content, as screen reader support is patchy</li>
<li>JavaScript: Probably fine for non essential content, but once again screen reader support is patchy</li>
</ul>
<p>Instead, I recommend keeping things as simple as possible: just limit the number of links on the page! For example, where possible, I don&#8217;t use drop down menus, or fat footers, and I keep the sidebar simple:</p>
<p><a href="http://scratch99.com/wp-content/uploads/2012/10/limiting-links.jpg"><img style="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/limiting-links.jpg" alt="Image show how I keep thenumber of links low on jobsinchina.com" title="limiting-links" width="500" height="375" class="alignnone size-full wp-image-381" /></a></p>
<p>Note: You can&#8217;t do this with all sites. There&#8217;s a tradeoff with user experience. The site above largely has visitors who are able to find what they need without the drop down menus, fat footer, etc. For many sites, UX may demand that these are necessary. If so, add them! If you have too many links, Ajax them in, but make sure your site works with JavaScript turned off.</p>
<p>Greywolf seems to favour the &#8216;limit links&#8217; approach:</p>
<blockquote><p>&#8220;If it’s what pays the bills and keeps the site running, keep it; if doesn’t convert then remove it.&#8221;</p></blockquote>
<h3>Silo Landing Pages</h3>
<p>Everything we&#8217;ve done so far has been in order to make the silo landing pages as powerful and as relevent as possible. We need to make sure the silo pages don&#8217;t let us down!</p>
<p>Ideally the silo landing pages should include a lot of unique content. Most articles on siloing leave it at that. However, I like to include some dynamic content to keep the page fresh (which Google likes). Using WordPress makes this easy, especially as we&#8217;re using the category pages as the silo landing pages.</p>
<p>The typical category page in WordPress is just a big list of posts in that category. That&#8217;s clearly not what we want. Instead, we&#8217;re going to customise our theme&#8217;s category.php to include:</p>
<ul>
<li>the category description, which is our unique content</li>
<li>a list of child silos/categories, which is our navigation to lower levels</li>
<li>a couple of featured posts, via the sticky posts feature</li>
<li>a list of other posts in this silo (but not posts in child silos/categories)</li>
</ul>
<div class="csstextbox1">Not all silo pages will have all of these. Some may have a description and some links to some child silos, but not posts. Others may have a description and a list of posts, but no child silos to link to. Some may have all of these. We&#8217;ll build category.php in a way that can cater for all of these scenarios.</div>
<p>To give you an idea of what we&#8217;re building, here is a sample (note the description is a little small in this case):</p>
<p><img class="shadow" src="http://scratch99.com/wp-content/uploads/2012/10/silo-landing-page.jpg" alt="A screenshot of a silo landing page" title="silo-landing-page" width="500" height="375" class="alignnone size-full wp-image-388" /></p>
<p>To make this work, there are some things that you need to do.</p>
<h4>Allow HTML in Category Description Field</h4>
<p>By default, the category description field does not allow any HTML. While you may be able to live with this, it&#8217;s far better if you can include HTML. That lets you include links, images, etc.</p>
<p>The simplest way to do this is to use the <a href="http://wordpress.org/extend/plugins/allow-html-in-category-descriptions/" target="_blank">Allow HTML in Category Descriptions</a> plugin by Arno Esterhuizen. At the time of writing, there is a warning against the plugin in the plugin directory saying that it hasn&#8217;t been updated in over 2 years. However, it works fine for me with WordPress 3.4.1.</p>
<p>I believe WordPress SEO by Yoast also does this.</p>
<h4 id="modifying-main-loop">Modifying The Main Loop To Ignore Sticky Posts And Child Categories</h4>
<p>We&#8217;re going to show the sticky posts before the list of other posts, so we need to remove them from the main loop to ensure they don&#8217;t appear twice.</p>
<p>We also need to tell WordPress to ignore posts in child categories. These should appear on the child category pages, but not on the parent category pages. We want articles about orange jellybeans to appear in the Orange Jellybeans category, but not in the parent Jellybeans category. By default, WordPress will show it in both places.</p>
<p>We can do both of these things together, using the following code (in functions.php or a functionality plugin):</p>
<pre class="brush: php; title: ; notranslate">
// don't show stickies or posts from child categories on category pages
function sjc_category_posts( $query = false ) {

	// Bail if not home, not a query, not main query, or if it's the admin area or a feed
	if ( ! $query-&gt;is_category || ! is_a( $query, 'WP_Query' ) || ! $query-&gt;is_main_query() || $query-&gt;is_admin || $query-&gt;is_feed )
		return;
 
	// only get posts not in sticky posts
	$query-&gt;set( 'post__not_in', get_option( 'sticky_posts' ) );
 
	// only get posts in this category (not in child categories)
	$query-&gt;set( 'category__in', get_category_by_slug( get_query_var( 'category_name' ) )-&gt;cat_ID );
 
}
add_action( 'pre_get_posts', 'sjc_category_posts' );
</pre>
<p>Note this code will only work with WordPress 3.3 and above. For some reason, although <code>category_name</code> is set at this point, <code>cat</code> isn&#8217;t set. We therefore need to get the <code>cat_ID</code> and pass it to <code>get_category_by_slug</code> ourselves.</p>
<h4>Pulling It All Together Via Category.php</h4>
<p>The pieces are falling in place, but we need to create / alter our category.php file to pull everything together to create the silo landing pages.</p>
<p>The code should look something like the below. Note, you can&#8217;t just use this code exactly &#8211; it needs to fit in with your theme so that the classes of wrapping divs, etc match the rest of your theme and the style is picked up.</p>
<pre class="brush: php; title: ; notranslate">// work out category id, then see if there are any subcategories
$main_cat_ID = get_query_var( 'cat' );
$subcats = get_categories( array( 'parent' =&gt; $main_cat_ID, 'hide_empty' =&gt; 0 ) );

// if it is page 1
if ( $paged &lt; 2 ) :

	// show the category description
	echo category_description();
	
	// if there are subcategories, loop through and show them
	if ( count( $categories ) &gt; 0 ) :
		foreach ( $subcats as $category ) : ?&gt;	
			&lt;div class=&quot;subcategory&quot;&gt;
				&lt;h2&gt;&lt;a class=&quot;subcategory-link&quot; href=&quot;&lt;?php echo get_category_link( $category-&gt;term_id ); ?&gt;&quot;&gt;
				&lt;?php echo $category-&gt;name; ?&gt;&lt;/a&gt;&lt;/h2&gt;
				&lt;?php echo wpautop( $category-&gt;description ); ?&gt;
			&lt;/div&gt;
		&lt;?php
		endforeach;
	endif;

	// get sticky posts and show them if they exist
	$args = array( 'category__in' =&gt; $main_cat_ID, 'include' =&gt; get_option( 'sticky_posts' ) );
	$myposts = get_posts( $args );
	if ( count( $myposts ) &gt; 0 ) :
		foreach ( $myposts as $value ) : ?&gt;
		&lt;div class=&quot;sticky&quot;&gt;
			&lt;h3&gt;
				&lt;a href=&quot;&lt;?php echo get_permalink( $value-&gt;ID ); ?&gt;&quot; rel=&quot;bookmark&quot; 
				title=&quot;&lt;?php echo $value-&gt;post_title; ?&gt;&quot;&gt;&lt;?php echo $value-&gt;post_title; ?&gt;&lt;/a&gt;
			&lt;/h3&gt;
			&lt;div class=&quot;entry-content&quot;&gt;
			&lt;?php 
			// if there is an excerpt, use it, otherwise roll our own (get_the_excerpt won't work outside the loop)
			if ( $value-&gt;post_excerpt ) : 
				echo wpautop( $value-&gt;post_excerpt );
			else :
				$sjc_excerpt = explode( '&lt;!--more--&gt;', $value-&gt;post_content ); 
				if ( count( $sjc_excerpt ) &gt;= 2 ) :
					echo wpautop( strip_tags( $sjc_excerpt[0] ) );
				else :
					echo wpautop( implode ( ' ', array_slice( explode( ' ', strip_tags( $sjc_excerpt[0] ) ), 0, 45 ) ) . ' ...' );
				endif;
			endif; ?&gt;
			&lt;/div&gt;
		&lt;/div&gt;
		&lt;?php
		endforeach;
	endif;

// pages 2 and onwards don't worry about cat desc or stickies, but link to main cat page
else : ?&gt;
		&lt;p&gt;For an introduction to this topic and our latest articles, please see the main 
		&lt;a href=&quot;&lt;?php echo get_category_link( $main_cat_ID ); ?&gt;&quot;&gt;&lt;?php single_cat_title(); ?&gt;&lt;/a&gt; page.&lt;/p&gt;
&lt;?php
endif;

// if we have any posts in the main loop (no stickies there)
if ( have_posts() ) : ?&gt;

	&lt;ul class=&quot;other-posts&quot;&gt;
	
	&lt;?php /* Start the Loop */ ?&gt;
	&lt;?php while ( have_posts() ) : the_post(); ?&gt;

		&lt;li&gt;&lt;a href=&quot;&lt;?php the_permalink() ?&gt;&quot; rel=&quot;bookmark&quot; 
		title=&quot;Permanent Link to &lt;?php the_title(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;

	&lt;?php endwhile; ?&gt;
	&lt;/ul&gt;

	&lt;?php 
	// you need to replace this with whatever your theme uses!
	sjc_content_nav( 'nav-below' ); 

// if no posts, and also no stickies and no categories, go with no results
elseif ( count( $myposts ) == 0 &amp;&amp; count( $subcats ) == 0 ) : 

	get_template_part( 'no-results', 'archive' ); 

endif; 
</pre>
<p>Note the <code>&#039;hide_empty&#039; =&gt; 0</code> in line 3. This forces the display of categories with no posts, which are normally hidden. We don&#8217;t really want empty categories to show up, but we do want empty categories with non empty child categories to appear (if they exist). Otherwise, there is no way to navigate to the lower levels!</p>
<p>We could go heavy with the code to do this, and if you are handing the site over to users you may need to do this, but for me it was more sensible to manage my categories: only add the category when I am going to put a post in it.</p>
<p>Also note the code rolling our own excerpt. The <code>get_the_excerpt()</code> function doesn&#8217;t work outside the loop and there&#8217;s no way to get the excerpt! I was quite surprised when I learnt that.</p>
<h3>The Home Page</h3>
<p>The home page needs to have some content around your main top level silos. </p>
<p>I just use the static home page feature in WordPress and add the home page content manually, although it may make sense to create a custom homepage.php that dynamically lists the top level categories and their description. If I create this in future, I&#8217;ll post it here.</p>
<h3>Sidebar Widgets</h3>
<p>WordPress based sites often have a latest posts widget in the sidebar. To prevent the dilution of your silos, you&#8217;d only want to list latest posts in the category / silo of the current page, not the latest posts site wide. Here&#8217;s some code to do this (add to functions.php or a functionality plugin).</p>
<pre class="brush: php; title: ; notranslate">
// initialise widget
function sjc_silo_widget_init() {
	if ( function_exists( 'register_sidebar_widget' ) &amp;&amp; function_exists( 'register_widget_control' ) ) {
		register_sidebar_widget( 'Latest Silo Posts', 'sjc_silo_latest_widget' );
	}
}
add_action( 'plugins_loaded', 'sjc_silo_widget_init' );

// create widget
function sjc_silo_latest_widget( $args ) {
	$sidebar_category = get_the_category();
	// if we have a category and we're on a normal post / page / cpt page call the function
	if ( $sidebar_category[0] &amp;&amp; ! is_front_page() &amp;&amp; is_single() ) {
		extract( $args );
		sjc_silo_latest_content( $sidebar_category[0], $before_widget, $after_widget );
	}
}

// echo the sidebar - called by widget, can also be called directly
function sjc_silo_latest_content( $this_sidebar_category = null, $before_widget = null, $after_widget = null ) {
	global $post;
	if ( ! empty( $this_sidebar_category ) ) :	
		$posts_in_this_category = get_posts( 'category__in=' . $this_sidebar_category-&gt;cat_ID . '&amp;exclude=' . $post-&gt;ID );
		if ( count( $posts_in_this_category ) &gt; 0 ) { ?&gt;
			&lt;?php echo $before_widget; ?&gt;
			&lt;h2 class=&quot;widget-title&quot;&gt;Latest from &lt;?php echo $this_sidebar_category-&gt;cat_name; ?&gt;&lt;/h2&gt;
			&lt;ul style=&quot;margin-bottom:10px;&quot;&gt;
			&lt;?php foreach ( $posts_in_this_category as $sidebar_value ) : ?&gt;
				&lt;li&gt;&lt;a href=&quot;&lt;?php echo get_permalink( $sidebar_value-&gt;ID ); ?&gt;&quot; title=&quot;&lt;?php echo $sidebar_value-&gt;post_title; ?&gt;&quot;&gt;&lt;?php echo $sidebar_value-&gt;post_title; ?&gt;&lt;/a&gt;&lt;/li&gt;
			&lt;?php endforeach; ?&gt;
			&lt;/ul&gt;
			&lt;a href=&quot;&lt;?php echo get_category_link($this_sidebar_category-&gt;term_id ); ?&gt;&quot;&gt;More from &lt;?php echo $this_sidebar_category-&gt;cat_name; ?&gt;&lt;/a&gt;
			&lt;?php echo $after_widget; ?&gt;
		&lt;?php
		}
	endif;
}
</pre>
<p>That&#8217;s the end of the coding! It&#8217;s probably not that straight forward for someone with limited technical knowledge to set up (which is why I probably will create a plugin), but the above should be a good start for you.</p>
<h2>A Word Of Caution</h2>
<p>None of these techniques <em>should</em> get you in trouble with Google <em>today</em>. However, Google do regularly change their algorithms and you need to keep up with these changes.</p>
<p>Significant changes in the last year or so, such as the Panda and Penguin updates, have rendered previously successful SEO techniques invalid and in many cases resulted in sites being penalised. This very site lost a lot of traffic when Penguin was released because one of my WordPress plugins linked back to this site (it was being run on millions of pages, most on low quality sites).</p>
<p>Because Google has targeted sites that are &#8216;overly optimised&#8217; in the past, it&#8217;s sensible to be conservative in doing anything too different from the vast majority of websites. You probably want a site that looks as normal as possible. So here are a few things to keep in mind.</p>
<p>Vary anchor text (in the body). The article by Graywolf that I linked to above says: &#8221;When you set up the links, it’s critical to use identical or nearly identical anchor text for each of the links.&#8221; Since Penguin, it&#8217;s important to vary the anchor text, so that it looks natural.</p>
<p>Go easy the iFrames. Many sites use iFrames, but very few use as many as Bruce Clay does. It won&#8217;t hurt you right now and it&#8217;s unlikely to become a signal anytime soon, but it&#8217;s probably more sensible to go with Ajax and limit the number of iFrames you use.</p>
<p>The rule about not linking between silos is fine now and would be harder for Google to detect / penalise. I can&#8217;t see them ever targeting that. There&#8217;s a very small chance that they could, in future, take action against an over abundance of nofollow tags on links to content pages in the same site.</p>
<p>With all of these, it&#8217;s worth keeping up with what Google is doing and adjusting where necessary. Keep it natural!</p>
<h2>Should You Use A Silo Structure?</h2>
<p>There are very few reasons not to use a silo structure for your WordPress site.</p>
<p>The previous section notwithstanding, it&#8217;s fairly safe. Nothing will get you penalised by Google as it stands today. As long as you don&#8217;t go too over the top, keep things fairly natural and keep your users in mind, you should be future proofed too.</p>
<p>It provides UX benefits as well as SEO benefits (assuming you don&#8217;t go over the top). The site structure model discussed above is very similar to the model used by infromation architects. It provides users with a strong information scent, with content organised into well defined sections. Also, users are more likely to trust a site (in those first few seconds) that looks well laid out. It also leads to visitors staying longer on site, because they can find related content more easily.</p>
<p>Although siloing is especially useful for large sites with lots of content, it also works for smaller sites, as long as you have enough content to put into your silos. The only time it&#8217;s probably not worth it would be for tiny sites and for meandering personal blogs that don&#8217;t have a keyword focus.</p>
<p>All in all, it&#8217;s a no brainer to use siloing for new sites. But is it worth the effort to convert existing sites? Maybe not if you have an established site that&#8217;s working well. There will be benefits, but they are not extreme, it&#8217;s complicated and you need to put a lot of time into the content. If you do decide to convert an existing site, I have a checklist below, but you need to be careful.</p>
<h2>Converting an existing site</h2>
<p>If you decide to convert an existing site, here is the checklist I used. Feel free to use it as the basis for your own, but please tailor it to your situation, not just follow blindly.</p>
<p>Note, I paused between the different implementation stages rather than do it all straight.</p>
<p><strong>Preparation</strong></p>
<ul>
<li>Do keyword research and work out the keywords you want to target.</li>
<li>Map out a high level Information Architecture based on those keywords.</li>
<li>Review existing content and map it onto new IA.</li>
<li>Create redirect rules for anything that will change, including posts, categories, custom taxonomies, tags, etc (WordPress *may* do the work for you).</li>
<li>Identify anything that might break (I had custom plugins, functions.php, hardcoded links in theme, etc).</li>
<li>Work out what will go in menu</li>
<li>Modify theme as necessary based on above</li>
</ul>
<p><strong>BACKUP EVERYTHING!!</strong></p>
<p><strong>Implementation – Stage 1</strong></p>
<ul>
<li>Create category structure and enter descriptions</li>
<li>Remove the category stem</li>
<li>Upload redirect rules for categories to .htaccess (if WordPress doesn’t do it for you)</li>
</ul>
<p><strong>Implementation – Stage 2</strong></p>
<ul>
<li>Assign posts to new category structure</li>
<li>Delete categories no longer used</li>
</ul>
<p><strong>Implementation – Stage 3</strong></p>
<ul>
<li>Implement new permalinks – /%category%/%postname%/</li>
<li>Remove www (if required)</li>
<li>Upload redirect rules for posts to .htaccess (if required)</li>
<li>Activate new theme (if required)</li>
<li>Set up menu</li>
<li>Setup breadcrumbs</li>
</ul>
<p><strong>Testing and cleanup</strong></p>
<ul>
<li>Make sure you’re not no-indexing your category pages</li>
<li>Make sure your category pages are in the sitemap.xml</li>
<li>Check major links</li>
<li>Check analytics code is running</li>
<li>Check breadcrumbs</li>
<li>Check contact form (and any other forms)</li>
<li>Check category pages</li>
<li>Update links where possible (start with those you control)</li>
<li>Run broken link checker over site and update any links (apply redirects)</li>
<li>Check Google Webmaster Tools</li>
<li>Watch Google Analytics</li>
<li>Use Hobo Googlebot plugin to monitor your crawl rate. Google re-crawled my entire site in a couple of days.</li>
</ul>
<h2>The Wrap Up</h2>
<p>Using a silo structure for your website makes a lot of sense. Not only does it provide SEO benefits, it also helps the user. Even if you don&#8217;t follow all of the advice above, organising your content into categories / silos makes a lot of sense.</p>
<p>Hopefully this article gives you a grounding in the silo model and a good start into setting it up in WordPress.</p>
<p>If you have any questions or just want to share your own experiences, please leave a comment below. I can&#8217;t promise to help you implement this, but I&#8217;ll try to answer any questions if I can.</p>
<h2>WordCamp Presentation</h2>
<p><embed type="application/x-shockwave-flash" src="http://s0.videopress.com/player.swf?v=1.03" width="500" height="280" wmode="direct" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=658zhovJ&amp;isDynamicSeeking=true"></embed></p>
<h2>Image Credits</h2>
<ul>
<li>Silos by <a href="http://www.flickr.com/photos/perry-moore-photography/2496009737/" target="_blank">Thing Three</a></li>
<li>JellyBeans_0002 by <a href="http://www.flickr.com/photos/urbanrex/3453997822/" target="_blank">Dancing Lemur</a></li>
<li>Jellybeans by <a href="http://www.flickr.com/photos/gwire/35622285" target="_blank">gwire</a></li>
<li>DSC_8179 (Matt) by <a href="http://www.flickr.com/photos/shizhao/2878274831/" target="_blank">shizhao</a></li>
</ul>
<script type="text/javascript">Nifty("div.csstextbox1","bgcolor-#FFFFFF");</script><img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/V_yNJPqbRfo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/wp-seo/siloing/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Siloing Your Site For SEO Success – Links</title>
		<link>http://scratch99.com/wordpress/wp-seo/siloing-links/</link>
		<comments>http://scratch99.com/wordpress/wp-seo/siloing-links/#comments</comments>
		<pubDate>Wed, 11 Jul 2012 05:53:17 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress SEO]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=364</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/wordpress/wp-seo/siloing-links/.Links relating to my &#8220;Siloing Your Site For SEO Success&#8221; talk at WordCamp Sydney on 22 July 2012. Video Slides You can also download a PDF (15MB) of the presentation. Siloing Theory SEO Siloing: Building a Themed Website by Bruce Clay How To Silo Your [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/wp-seo/siloing-links/">http://scratch99.com/wordpress/wp-seo/siloing-links/</a>.<br /><p>Links relating to my &#8220;Siloing Your Site For SEO Success&#8221; talk at WordCamp Sydney on 22 July 2012.</p>
<h2>Video</h2>
<p><embed type="application/x-shockwave-flash" src="http://s0.videopress.com/player.swf?v=1.03" width="500" height="280" wmode="direct" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=658zhovJ&amp;isDynamicSeeking=true"></embed></p>
<h2>Slides</h2>
<p><iframe style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://www.slideshare.net/slideshow/embed_code/13745456" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="514" height="422" ></iframe></p>
<p>You can also <a href="http://scratch99.com/downloads/siloing-your-site-for-seo-success.pdf">download a PDF</a> (15MB) of the presentation.</p>
<h2>Siloing Theory</h2>
<ul>
<li><a href="http://www.bruceclay.com/seo/silo.htm" target="_blank">SEO Siloing: Building a Themed Website</a> by Bruce Clay</li>
<li><a href="http://www.wolf-howl.com/seo/how-to-silo-your-website/" target="_blank">How To Silo Your Website</a> series by Michael Gray (aka Graywolf)</li>
</ul>
<h2>Useful Plugins</h2>
<ul>
<li><a href="http://wordpress.org/extend/plugins/wordpress-seo/" target="_blank">WordPress SEO</a> by Joost de Valk</li>
<li><a href="http://wordpress.org/extend/plugins/wp-no-category-base/" target="_blank">WP No Category Base</a> by iDope</li>
<li><a href="http://wordpress.org/extend/plugins/allow-html-in-category-descriptions/" target="_blank">Allow HTML in Category Descriptions</a> by Arno Esterhuizen</li>
</ul>
<h2>Code Snippets</h2>
<h3>Don&#8217;t show stickies or posts from child categories on category pages</h3>
<pre class="brush: php; title: ; notranslate">
// don't show stickies or posts from child categories on category pages
function sjc_category_posts( $query = false ) {

	// Bail if not home, not a query, not main query, or if it's the admin area or a feed
	if ( ! $query-&gt;is_category || ! is_a( $query, 'WP_Query' ) || ! $query-&gt;is_main_query() || $query-&gt;is_admin || $query-&gt;is_feed )
		return;

	// only get posts not in sticky posts
	$query-&gt;set( 'post__not_in', get_option( 'sticky_posts' ) );

	// only get posts in this category (not in child categories)
	$query-&gt;set( 'category__in', get_category_by_slug( get_query_var( 'category_name' ) )-&gt;cat_ID );

}
add_action( 'pre_get_posts', 'sjc_category_posts' );
</pre>
<h3>Allows HTML in category descriptions</h3>
<pre class="brush: php; title: ; notranslate">
// Allows HTML in category descriptions, from Allow HTML in Category Descriptions plugin by Arno Esterhuizen
	$filters = array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' );

	foreach ( $filters as $filter ) {
		remove_filter( $filter, 'wp_filter_kses' );
	}

	foreach ( array( 'term_description' ) as $filter ) {
		remove_filter( $filter, 'wp_kses_data' );
	}
</pre>
<h3>Category / Silo Landing Page</h3>
<pre class="brush: php; title: ; notranslate">
// work out category id, then see if there are any subcategories
$main_cat_ID = get_query_var( 'cat' );
$subcats = get_categories( array( 'parent' =&gt; $main_cat_ID, 'hide_empty' =&gt; 0 ) );

// if it is page 1
if ( $paged &lt; 2 ) :

	// show the category description
	echo category_description();

	// if there are subcategories, loop through and show them
	if ( count( $categories ) &gt; 0 ) :
		foreach ( $subcats as $category ) : ?&gt;
			&lt;div class=&quot;subcategory&quot;&gt;
				&lt;h2&gt;&lt;a class=&quot;subcategory-link&quot; href=&quot;&lt;?php echo get_category_link( $category-&gt;term_id ); ?&gt;&quot;&gt;
				&lt;?php echo $category-&gt;name; ?&gt;&lt;/a&gt;&lt;/h2&gt;
				&lt;?php echo wpautop( $category-&gt;description ); ?&gt;
			&lt;/div&gt;
		&lt;?php
		endforeach;
	endif;

	// get sticky posts and show them if they exist
	$args = array( 'category__in' =&gt; $main_cat_ID, 'include' =&gt; get_option( 'sticky_posts' ) );
	$myposts = get_posts( $args );
	if ( count( $myposts ) &gt; 0 ) :
		foreach ( $myposts as $value ) : ?&gt;
		&lt;div class=&quot;sticky&quot;&gt;
			&lt;h3&gt;
				&lt;a href=&quot;&lt;?php echo get_permalink( $value-&gt;ID ); ?&gt;&quot; rel=&quot;bookmark&quot;
				title=&quot;&lt;?php echo $value-&gt;post_title; ?&gt;&quot;&gt;&lt;?php echo $value-&gt;post_title; ?&gt;&lt;/a&gt;
			&lt;/h3&gt;
			&lt;div class=&quot;entry-content&quot;&gt;
			&lt;?php
			// if there is an excerpt, use it, otherwise roll our own (get_the_excerpt won't work outside the loop)
			if ( $value-&gt;post_excerpt ) :
				echo wpautop( $value-&gt;post_excerpt );
			else :
				$sjc_excerpt = explode( '&lt;!--more--&gt;', $value-&gt;post_content );
				if ( count( $sjc_excerpt ) &gt;= 2 ) :
					echo wpautop( strip_tags( $sjc_excerpt[0] ) );
				else :
					echo wpautop( implode ( ' ', array_slice( explode( ' ', strip_tags( $sjc_excerpt[0] ) ), 0, 45 ) ) . ' ...' );
				endif;
			endif; ?&gt;
			&lt;/div&gt;
		&lt;/div&gt;
		&lt;?php
		endforeach;
	endif;

// pages 2 and onwards don't worry about cat desc or stickies, but link to main cat page
else : ?&gt;
		&lt;p&gt;For an introduction to this topic and our latest articles, please see the main
		&lt;a href=&quot;&lt;?php echo get_category_link( $main_cat_ID ); ?&gt;&quot;&gt;&lt;?php single_cat_title(); ?&gt;&lt;/a&gt; page.&lt;/p&gt;
&lt;?php
endif;

// if we have any posts in the main loop (no stickies there)
if ( have_posts() ) : ?&gt;

	&lt;ul class=&quot;other-posts&quot;&gt;

	&lt;?php /* Start the Loop */ ?&gt;
	&lt;?php while ( have_posts() ) : the_post(); ?&gt;

		&lt;li&gt;&lt;a href=&quot;&lt;?php the_permalink() ?&gt;&quot; rel=&quot;bookmark&quot;
		title=&quot;Permanent Link to &lt;?php the_title(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;

	&lt;?php endwhile; ?&gt;
	&lt;/ul&gt;

	&lt;?php
	jobsinchina3_content_nav( 'nav-below' );

// if no posts, and also no stickies and no categories, go with no results
elseif ( count( $myposts ) == 0 &amp;&amp; count( $subcats ) == 0 ) :

	get_template_part( 'no-results', 'archive' );

endif;
</pre>
<h2>Converting an existing site</h2>
<p>If you decide to convert an existing site, here is the checklist I used. Feel free to use it as the basis for your own, but please tailor it to your situation, not just follow blindly.</p>
<p>Note, I paused between the different implementation stages rather than do it all straight.</p>
<p><strong>Preparation</strong></p>
<ul>
<li>Do keyword research and work out the keywords you want to target.</li>
<li>Map out a high level Information Architecture based on those keywords.</li>
<li>Review existing content and map it onto new IA.</li>
<li>Create redirect rules for anything that will change, including posts, categories, custom taxonomies, tags, etc (WordPress *may* do the work for you).</li>
<li>Identify anything that might break (I had custom plugins, functions.php, hardcoded links in theme, etc).</li>
<li>Work out what will go in menu</li>
<li>Modify theme as necessary based on above</li>
</ul>
<p><strong>BACKUP EVERYTHING!!</strong></p>
<p><strong>Implementation &#8211; Stage 1</strong></p>
<ul>
<li>Create category structure and enter descriptions</li>
<li>Remove the category stem</li>
<li>Upload redirect rules for categories to .htaccess (if WordPress doesn&#8217;t do it for you)</li>
</ul>
<p><strong>Implementation &#8211; Stage 2</strong></p>
<ul>
<li>Assign posts to new category structure</li>
<li>Delete categories no longer used</li>
</ul>
<p><strong>Implementation &#8211; Stage 3</strong></p>
<ul>
<li>Implement new permalinks &#8211; /%category%/%postname%/</li>
<li>Remove www (if required)</li>
<li>Upload redirect rules for posts to .htaccess (if required)</li>
<li>Activate new theme (if required)</li>
<li>Set up menu</li>
<li>Setup breadcrumbs</li>
</ul>
<p><strong>Testing and cleanup</strong></p>
<ul>
<li>Make sure you&#8217;re not no-indexing your category pages</li>
<li>Make sure your category pages are in the sitemap.xml</li>
<li>Check major links</li>
<li>Check analytics code is running</li>
<li>Check breadcrumbs</li>
<li>Check contact form (and any other forms)</li>
<li>Check category pages</li>
<li>Update links where possible (start with those you control)</li>
<li>Run broken link checker over site and update any links (apply redirects)</li>
<li>Check Google Webmaster Tools</li>
<li>Watch Google Analytics</li>
<li>Use Hobo Googlebot plugin to monitor your crawl rate. Google re-crawled my entire site in a couple of days.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/oWGqj7ryQ_M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/wp-seo/siloing-links/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>JavaScript To Convert Bytes To MB, KB, Etc</title>
		<link>http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/</link>
		<comments>http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 13:43:18 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[JavaScript Development]]></category>
		<category><![CDATA[bytes]]></category>
		<category><![CDATA[conversion]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=361</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/.I&#8217;m currently writing a converter for the HAR file format, which is used by Firebug, Chrome Developer Tools, JMeter, etc to record information about a page loading. The HAR format stores the size of downloaded components in bytes. I wanted to convert this into KB, [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/">http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/</a>.<br /><p>I&#8217;m currently writing a converter for the <a href="http://www.softwareishard.com/blog/har-12-spec/http://" target="_blank">HAR file format</a>, which is used by Firebug, Chrome Developer Tools, JMeter, etc to record information about a page loading. The HAR format stores the size of downloaded components in bytes. I wanted to convert this into KB, MB, etc, for display.</p>
<p>I quickly found some nice code by <a href="http://thomasethajar.com/" target="_blank">ThomasR</a> in the <a href="http://codeaid.net/javascript/convert-size-in-bytes-to-human-readable-format-(javascript)#comment-17" target="_blank">comments of a page on CodeAid</a>, which looks like this:</p>
<pre class="brush: jscript; title: ; notranslate">function bytesToSize(bytes) {
    var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
    if (bytes == 0) return 'n/a';
    var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
    return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
};</pre>
<p>This will display 39212 bytes as 38KB. Nice, but I&#8217;d like slightly more precision. Fortunately further down in the comments, Jonathon includes the following code:</p>
<pre class="brush: jscript; title: ; notranslate">function bytesToSize(bytes) {
  var sizes = ['bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
  if (bytes == 0) return 'n/a';
  var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
  if (i == 0) { return (bytes / Math.pow(1024, i)) + ' ' + sizes[i]; }
  return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
}</pre>
<p>This gives 1 decimal place, except for values that will remain as bytes, so that 39212 bytes will be displayed as 38.3KB. Perfect for me, although you can make it 2 decimal places by changing <code>toFixed(1)</code> to <code>toFixed(2)</code>, etc.</p>
<p>I ended up going with a slightly optimised version of this (there was no need to do the Math on values that will remain as bytes):</p>
<pre class="brush: jscript; title: ; notranslate">function bytesToSize(bytes) {
	var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
	if (bytes == 0) return 'n/a';
	var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
	if (i == 0) return bytes + ' ' + sizes[i]; 
	return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
};</pre>
<p>but there are further optimisations in the comments, including a solution by Fergus which uses a ternary operator to reduce the code by a line. Great, but slight overkill to my mind. I do occasionally use ternary operators, but more often I opt to keep code readable by the most amount of people <img src='http://scratch99.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/s4Uy9VoGJYg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress And Government</title>
		<link>http://scratch99.com/wordpress/government/use-of-wordpress-in-government/</link>
		<comments>http://scratch99.com/wordpress/government/use-of-wordpress-in-government/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 13:26:34 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress and Government]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=356</guid>
		<description><![CDATA[In this article, I'm going to discuss the reasons why WordPress hasn't been used more in government and how we may be able to change this, as well as looking at the trend toward adopting WordPress that's happening in government around the world.]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/government/use-of-wordpress-in-government/">http://scratch99.com/wordpress/government/use-of-wordpress-in-government/</a>.<br /><p>This article extends my presentation, titled &#8220;WordPress and Government &#8211; the Australian Perspective&#8221;, originally given at WordCamp Gold Coast on Sunday 6 November, 2011. </p>
<p>You can view the video of my talk and download the slides on my <a href="http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/">WordCamp Gold Coast 2011 – WordPress in Government</a> post. I won&#8217;t include the video here because things have moved on in the time since I gave the talk.</p>
<h2>Introduction</h2>
<p>I&#8217;m a passionate WordPress developer and have been creating WordPress plugins since 2007. I also work for a Queensland Government department, managing their websites since 2008. </p>
<p>In this article, I&#8217;m going to discuss the reasons why WordPress hasn&#8217;t been used more in government and how we may be able to change this, as well as looking at the trend toward adopting WordPress that&#8217;s happening in government around the world.</p>
<p>My hope is that this is just the start of an ongoing conversation &#8211; or rather a continuation of an existing conversation, as I&#8217;m sure there are many others discussing this already.</p>
<h2>Disclaimer</h2>
<p>Before I get too far, I better start with a disclaimer: </p>
<p>In this discussion, I&#8217;m representing myself. I work for the Queensland Government, but I in no way represent them. My views are entirely my own and not those of Queensland Government.</p>
<p>I&#8217;ll draw on my experience, but I won&#8217;t get too specific. </p>
<h2>Scope</h2>
<p>This is based on my experience within Queensland Government. </p>
<p>There is no guarantee that my views will hold true across government in other parts of the world, other State and Federal government agencies within Australia, or indeed even within other parts of Queensland Government. </p>
<p>However, I&#8217;m confident that what I&#8217;m saying will at least sound familiar to people within government around the world. Certainly feedback from people who were at my talk indicate that that it&#8217;s common within Australia.</p>
<p>If you do work for government, I&#8217;d love to hear your thoughts on whether your experiences have been similar or not. Having said, the prime target audience for this article is the WordPress development community &#8211; people outside government who may want to work with government.</p>
<h2>WordPress And Government Is A Popular Topic</h2>
<p>The use of WordPress in government is something I&#8217;ve been passionate about for a long time. I hadn&#8217;t quite realized just how many other people are also interested in the topic.</p>
<p>When I originally approached the organisers of WordCamp Gold Coast about talking, I had a technical talk in mind. When they suggested that I talk about WordPress and government, I was a little taken aback.</p>
<p>At first, I thought this topic may be a bit dry and boring for most people. However, the organisers were really keen to discuss the topic. The more I thought about it, the more value I could see and the more I wanted to talk about it.</p>
<p>As I&#8217;ve talked to various people, both within and without of government, I&#8217;ve been surprised by just how many people are interested. It seems many people have either worked for government or for a company that has done something for government in the past, is currently doing something, or who want to in future.</p>
<p>So thanks to the organisers, and in particular to:</p>
<ul>
<li><a href="https://twitter.com/#!/bronsonquick" target="_blank">Bronson Quick</a></li>
<li><a href="https://twitter.com/#!/thenbrent" target="_blank">Brent Shepherd</a></li>
<li><a href="https://twitter.com/#!/dd32" target="_blank">Dion Hulse</a></li>
<li><a href="https://twitter.com/#!/LachlanJ" target="_blank">Lachlan MacPherson</a></li>
</ul>
<p>all of whom expressed their desire to see the topic presented. Without them, there&#8217;d have been no talk and all of these thoughts would still be locked up in my head.</p>
<h2>Successes</h2>
<p>Originally I planned to look at the challenges first, then the successes. However, as I collected my thoughts I realized that the successes help frame the challenges, so I&#8217;ll look at them first.</p>
<h3>Mark Jaquith&#8217;s List From 2008</h3>
<p>Way back in 2008, Mark Jaquith wrote a post with a <a href="http://markjaquith.wordpress.com/2008/08/18/us-government-agencies-using-wordpress/" target="_blank">list of US government agencies using WordPress</a> (whether privately or publicly). He listed:</p>
<ul>
<li>Air Force</li>
<li>Army</li>
<li>Central Intelligence Agency (CIA)</li>
<li>Coast Guard</li>
<li>Defense Intelligence Agency</li>
<li>Department of Energy</li>
<li>Department of Homeland Security</li>
<li>Department of State</li>
<li>Department of Treasury</li>
<li>Drug Enforcement Agency (DEA)</li>
<li>Marine Corps</li>
<li>Federal Bureau of Investigation (FBI)</li>
<li>National Geospatial Intelligence Agency</li>
<li>National Reconnaissance Agency</li>
<li>National Security Agency (NSA)</li>
<li>Navy</li>
</ul>
<p>That&#8217;s a great start, but how many were using it for things other than blogs? Unfortunately, not many.</p>
<p>So although this list looks amazing, it&#8217;s not really what I&#8217;m after. I want to see government using WordPress as a general purpose Content Management System rather than just for blogs. </p>
<h3>The Showcase</h3>
<p>When looking for successful sites using WordPress, a good starting point is the WordPress Showcase. Sure enough, they have 22 sites listed under their <a href="http://wordpress.org/showcase/tag/government/" target="_blank">government tag</a> (at the time of publishing).</p>
<p>I&#8217;m sure there&#8217;s more than that! </p>
<p>There are some notable entries in that list, including the <a href="http://blogs.loc.gov/loc/" target="_blank">Library of Congress</a> (but blog only) and <a href="http://www.number10.gov.uk/" target="_blank">Number 10 Downing St</a> (full site). They have sites from around the world, although none from Australia (yet).</p>
<p>It&#8217;s still a little underwhelming &#8211; I&#8217;m really looking for more than this. That said, the Number 10 Downing St site is a poster child for WordPress and government and has been since it was created way back in 2008.</p>
<h3>WordPress And The UK Government</h3>
<p>Now, we&#8217;re getting somewhere! The UK is at the forefront of the adoption of WordPress in government.</p>
<p>I follow what&#8217;s happening in the UK Government web space reasonably closely, as a lot of what we do here in Queensland has its basis in the UK model. It&#8217;s an exciting time there at the moment, with the new Government Digital Service working to revolutionize government web delivery in the UK.</p>
<p>The GDS team seems to be keen on using WordPress, although only where it fits, not necessarily everywhere. For example, they use WordPress for <a href="http://digital.cabinetoffice.gov.uk/" target="_blank">their blog</a>, but not for the <a href="https://www.gov.uk/" target="_blank">GOV.UK beta site</a>, and they recently re-launched the <a href="http://www.civilservice.gov.uk/" target="_blank">Civil Service website</a> using WordPress. Excellent!</p>
<p>In the days leading up to WordCamp Gold Coast, I read about Word Up Whitehall, a get together of UK Government personnel who are working with WordPress. I took this as a sign of the positive happenings in the UK and gave it a dot point in my slides.</p>
<p>I didn&#8217;t realize that a) that it was actually happening the day after my talk or b) just how positive it really would be. Departments actively sharing what they&#8217;ve done with WordPress, discussing how they can share code better, and to cap it off, sharing the details of just how much money they&#8217;ve saved by moving to WordPress. </p>
<p>Wow. From the outside, it looks as if they must have gotten through most of the challenges I&#8217;m going to talk about. The following write ups of Word Up Whitehall outline what happened in detail:</p>
<ul>
<li><a href="http://puffbox.com/2011/11/09/wordpress-gets-boring-great/">When WordPress gets boring, things get interesting</a> by Simon Dickson</li>
<li><a href="http://www.helpfultechnology.com/helpful-blog/2011/11/whitehall-in-wordpress/" target="_blank">Whitehall in WordPress</a> by Steph Gray </li>
<li><a href="http://juliac2.wordpress.com/2011/11/09/word-up-whitehall-ii/" target="_blank">Word Up Whitehall II</a> by juliac2</li>
</ul>
<p>The UK Government is really at the forefront of government using WordPress, with more and more to come.</p>
<p>As well as an exciting future, the UK has had the WordPress and government poster child since 2008: The British Prime Minister&#8217;s website, <a href="http://www.number10.gov.uk/" target="_blank">number10.gov.uk</a>. Although I&#8217;m not sure if it&#8217;s technically a ‘government&#8217; website (here in Queensland, Ministers can do what they like with their websites and are not bound by departmental rules), it is still one of the most impressive examples I can find.</p>
<h3>WordPress And The US Government</h3>
<p>I personally know less about what&#8217;s happening in the US, but I have heard there is a move towards WordPress. Whether it is as aggressive as that in the UK I can&#8217;t say, although I&#8217;d be hard pressed to believe that government anywhere is a match for the UK at the moment </p>
<p>There&#8217;s been news in the WordPress developer community about the <a href="http://www.fcc.gov/" target="_blank">Federal Communications Commission</a> (FCC): They&#8217;ve been developing plugins for their installation of WordPress, which they&#8217;ve subsequently <a href="http://wpcandy.com/reports/fcc-release-two-wordpress-plugins" target="_blank">released back into the community</a>. </p>
<p>This is a big step: a government body identifying areas where WordPress doesn&#8217;t meet its needs and not only rectifying them, but making the solutions available for anyone else who may have similar needs. To those of us in the open source community, that&#8217;s just normal, but it&#8217;s a big step for government to be actively doing this.</p>
<p>The <a href="http://wordpress.org/extend/plugins/wp-document-revisions/" target="_blank">WP Document Revisions plugin</a>, created by Ben Balter as part of the Google Summer of Code, was also developed for the FCC.</p>
<p>It looks good &#8211; although its goal seems to be to turn WordPress into an EDRMS (Electronic Document Records Management System), whereas this article is about WordPress as a Web Content Management System. Although there can be overlaps, and SharePoint does both, in my experience most departments have 2 separate systems.</p>
<p>Apart from what the FCC are doing, I&#8217;m not sure what else is happening with WordPress and the US Government. From what I can see, WordPress is mostly used for blogs, except for the occasional site like the <a href="http://www.acus.gov/" target="_blank">Administrative Conference of the United States</a>.</p>
<p>I&#8217;m sure there are better examples than that &#8211; if anyone knows of some other government websites in the US using WordPress, please let me know!</p>
<h3>WordPress And Government In Australia</h3>
<p>I don&#8217;t think there can be much argument that Australian government is behind that of the UK, but there have been some successes. </p>
<p>At a Federal level, there is <a href="http://govspace.gov.au/" target="_blank">govspace</a>, which the Department of Finance and Deregulation set up as an &#8216;online communications platform which hosts blogs and other websites on behalf of government agencies&#8217;</p>
<p>At the time of writing there were 74 &#8216;spaces&#8217; or websites, 3685 articles and 12345 comments (yes, I got the screenshot when it was 1 2 3 4 5 – hat tip to <a href="https://twitter.com/#!/Japh" target="_blank">Japh Thomson</a> and <a href="https://twitter.com/#!/rmccue" target="_blank">Ryan McCue</a> for noticing this).</p>
<p>So, a hosted solution, run by government, for government, that&#8217;s actively being used. That&#8217;s pretty fantastic. It&#8217;s a little limiting in that you can only use a small set of approved plugins and themes, but still it&#8217;s fantastic to see.</p>
<p>After that, I don&#8217;t know of any specific government websites based on WordPress at the Federal level or in other states, but I&#8217;m sure there will be some. Once again, I welcome information from anyone who does know this.</p>
<p><strong>Edit: </strong><a href="https://twitter.com/#!/benjmay" target="_blank">Ben May</a> let me know of <a href="http://news.digitalready.gov.au/" target="_blank">Digital Ready News</a> and the <a href="http://forum.digitalready.gov.au/" target="_blank">Digital Ready Service Provider Forum</a></p>
<h3>WordPress And Queensland Government</h3>
<p>Here in Queensland, we&#8217;re even further behind, although hopefully what&#8217;s happening at other levels and in other countries will help open the path here.</p>
<p>Around about a year ago, our department contacted all the other Queensland Government departments and asked them what Content Management Systems they used. Not one response included WordPress, even though most listed several CMSs.</p>
<p>Our department recently chose a new CMS. WordPress wasn&#8217;t even on the radar &#8211; although we ended up selecting an open source PHP based solution.</p>
<p>I know of a couple of partnership sites, which don&#8217;t have to follow Queensland Government web standards, but I just can&#8217;t find any official Queensland Government sites using WordPress. </p>
<p>Well, except for one I worked on for a while (but more on that later). </p>
<p>And several that people told me about at WordCamp Gold Coast, that they were either working on or knew of. </p>
<p>It seems that WordPress is finally starting to see some use in Queensland Government. However, there&#8217;s a big if: I suspect that none of the sites I&#8217;ve heard about have gone through normal ICT processes. We&#8217;ll explore that later.</p>
<h3>Almost A QLD Gov Poster Child For WordPress</h3>
<p>Over the years there have been many cases at work when I&#8217;ve come across something we&#8217;d like to do and I&#8217;ve thought &#8220;I&#8217;d know just how to do it if we were using WordPress&#8221;. </p>
<p>But we couldn&#8217;t use WordPress because we already had a CMS (RedDot) and WordPress didn&#8217;t do everything we needed (although it&#8217;s come a long way since then). Even if we got past those two particular issues, there are a whole lot of other obstacles. </p>
<p>It has been a frustration for me and I&#8217;ve spent several years now wishing we could use WordPress in government and thinking about the issues and how they may be overcome. </p>
<p>Then a couple of weeks before my talk at WordCamp Gold Coast, a strange thing happened. I was pulled off my normal job and loaned to another department to help them with a high priority website that was built on WordPress. </p>
<p>This doesn&#8217;t happen normally. People in my position don&#8217;t just get taken out of their management jobs and sent to a coding job in another department &#8211; I&#8217;m probably a couple of levels higher than a senior web developer. The move only occurred after discussions at the CEO level.</p>
<p>It was a great opportunity for WordPress, because the project was of such high priority that it could cut through all the red tape that normally prevents WordPress being used. As it happens, the project didn&#8217;t go so well. </p>
<p>The site in question was qldalert.com, which will be the website that Queenslanders will go to in times of emergencies. The site pulls in content from various relevant sources and places them in one place for users to access.</p>
<p>A cornerstone of the project was to move the Twitter API calls to the server side, because some users were running into the Twitter API Rate Limit on the client side. Given that 20 Twitter accounts were accessed on each page load and the client required it to be as close to real-time updates as possible, we needed to do some pretty clever stuff:</p>
<ul>
<li>grab the latest tweets for all 20 accounts in a single Twitter Search call every 12 seconds, then store them in the database against the appropriate account</li>
<li>query the database and creating the output for each of the 20 widgets on a page</li>
<li>caching that output, using the Transient API, so as to minimize the server load</li>
</ul>
<p>I could go into a lot more detail, but you can see we were shifting a pretty reasonable amount of work to the server. A shame that their shared hosting (with a thousand other sites on the same server) couldn&#8217;t cope! I&#8217;m sure my code could have been improved, but shared hosting… </p>
<p>Anyway, time ran out. I went back to my normal job and they were left without any WordPress expertise. They tried another plugin that did something similar, but the server couldn&#8217;t cope with that either. </p>
<p>Now they are on Squarespace and the Twitter API calls are back happening on the client side. So they are back where they started from, except they no longer use WordPress! That&#8217;s a real shame, but it seems to be working for them and it probably suits their level of technical expertise.</p>
<h2>Challenges Facing WordPress in Government</h2>
<p>For those of you who have never worked for Government (or even in a large enterprise), it&#8217;s difficult to get your head around some of the challenges facing the adoption of WordPress in government.</p>
<p>For me, stepping from small scale freelance web development to government / enterprise web was a real eye-opener. Even though I&#8217;d been developing websites since 1997 and was well up on the standards based approach and basic usability and accessibility principles, it was a steep learning curve.</p>
<p>I&#8217;d guessed that accessibility would be all important, but I wasn&#8217;t prepared for:</p>
<ul>
<li>Just how risk averse government was</li>
<li>Just how hard it was to make any sort of fundamental change</li>
<li>The levels of governance required</li>
<li>People who just didn&#8217;t get web (IP wanted to stop people linking to our website!)</li>
<li>Record keeping. What the…?</li>
</ul>
<p>and a whole heap of other challenges. I can&#8217;t cover them all, but I&#8217;ll discuss some of main ones below.</p>
<h3>Conservative ICT Department</h3>
<p>The first elephant in the room is the conservative approach to ICT that the default in government.</p>
<p>A colleague of mine got a new computer a couple of months ago. The browser that came installed on it? IE6. But that&#8217;s alright, he&#8217;s allowed to upgrade to a more modern browser: Yes, that&#8217;s right, IE7. Before you take pity on me, I&#8217;m allowed to use Firefox because I&#8217;m in web. </p>
<p>Staff on some parts of the network don&#8217;t have access to YouTube or Facebook, even though the department itself has accounts on those services.</p>
<p>So government ICT is extremely conservative by nature (as indeed are most large enterprises). Most people who haven&#8217;t worked in government don&#8217;t really appreciate this. </p>
<p>There are good reasons for this conservative nature in some cases. If you are building a multi-million dollar system of critical importance (think payroll, or a system that runs a hospital, etc), you want to do things in a considered manner, following proper project and change management procedures. </p>
<p>However, there are a range of other areas, including web, that could benefit from a more agile and adventurous approach, balancing risk with business benefits. Government ICT is typically slow in recognizing this and indeed in allowing it.</p>
<p>Thankfully, there are pockets of government that are starting to realise this. The shining example at the moment is the UK again, having set up the Government Digital Service to be <a href="http://www.computerweekly.com/news/2240112255/GDS-must-have-agility-of-a-start-up-to-drive-through-change-in-government">more like a startup</a> than traditional government. </p>
<p>We&#8217;re nowhere near that in Queensland Government, but there are occasions where we take a more enlightened approach. There&#8217;s a growing recognition of the need to rebalance the risk / benefit tipping point, in order to get stuff done and to realise significant benefits.</p>
<p>This drive comes from the business rather than ICT. It&#8217;s always been there, but the people at the top are increasingly seeing the negatives of being too risk averse. The traditional enterprise level ICT approach of putting risk mitigation and process above delivering benefits to the business and to customers is starting to come under pressure.</p>
<p>Unfortunately, this is still far from the norm in government around the world. That means that people trying to use WordPress in government have to go through a body of process that often ends up blocking them. Let&#8217;s look at a couple of the more obvious issues. </p>
<h4>Change Management</h4>
<p>Change equals risk.</p>
<p>Government is very risk averse, as are all large corporations. They have a lot to lose if something goes wrong, so they&#8217;re very cautious. With government it can be about cost, but also there is a lot of focus on government and people are quick with criticism. That&#8217;s only natural, but it leads to increased conservatism.</p>
<p>As a result, there are very rigid controls around change. A typical government ICT change model looks something like this:</p>
<p>There are development (DEV), test (TEST) and production (PROD) servers. Changes are never made on PROD, they are made on DEV and are then promoted through TEST and PROD. There is a plan for each change, including a test plan at each stage and a roll back plan in case something goes wrong.</p>
<p>Depending on the magnitude of the change, it may need go before the Change Advisory Board (CAB) for approval (which may take several weeks). Routine changes don&#8217;t need to do this, although there will be some standard procedures to follow.</p>
<div class="csstextbox1"><br />
Sometimes government can really go over the top with their processes. Here is a real example:</p>
<p>When I was running the web team, we had a case where we could not get small, non-critical CSS tweaks in the template onto the site without having to go through dev > test > prod. This despite the fact we&#8217;d tested it on our own local server. At least we didn&#8217;t have to go through CAB for this level of change, but it still took a couple of days for the server team to push the change through to the live server. And when I say live server, it wasn&#8217;t a public facing website, it was an internal facing one, with non-critical information, which no one knew about yet.</p>
<p>That&#8217;s an extreme case and thankfully not the norm, but it highlights the hoops that government sometimes have to jump through.<br />
</div>
<p>Potential outages need to be communicated to stakeholders. Updates need to coordinated so there is zero chance of the site going down when the minister is launching an initiative or something big is happening on the website, etc.</p>
<p>Depending on the nature of the change there may be other things required, such as training if a user interface has changed. In some cases, this may entail training sessions for all users, which may have to be held in locations across a wide area. No small thing.</p>
<p>Note, this approach is required for all changes, even 1 click updates. Let&#8217;s not mention updates to plugins shall we? </p>
<p>If the initiative is larger than a &#8216;change&#8217; (ie &#8220;implement a new CMS&#8221; vs &#8220;apply an update to the existing CMS&#8221;), it will need to be managed as a project. For Queensland Government, this means following the Prince 2 project methodology. That&#8217;s a lot of process and a lot of documentation.</p>
<h4>Security</h4>
<p>I&#8217;m far from an expert in this field, but every change is considered from the security point of view as well. Want to update some software? The security team need to investigate the implications..</p>
<p>Servers are generally kept in the DMZ, with firewalls on either side, tightly controlling what traffic can pass through. Only minimal permissions and access are given and its difficult to obtain approval for anything more. </p>
<div class="csstextbox1"><br />
I had a case where we couldn&#8217;t serve Flash .swf files on a server, because a) the server wasn&#8217;t configured to allow .swf files to be served and b) the firewall was stripping the embed tags out of the HTML that was served. We needed to get a Flash file up ASAP, for the Director General (CEO), but the Security Team couldn&#8217;t just change the firewall, so we ended up having to find a different server to host that file on.<br />
</div>
<p>Security is often as a step during Change Management.</p>
<h4>Other Issues</h4>
<p>I&#8217;m sure there are lots of other issues coming from the ICT department, but Change Management and Security are the bigger ones for me.</p>
<p>Gavin Tapp <a href="http://twitter.com/gavintapp/status/133043757472940034" target="_blank">tweeted the following</a> after my talk: &#8220;Other issues are training, warranty, license&#8221;. I&#8217;ve got training above briefly, but warranty and license are definitely issues, as is the closely related topic of support.</p>
<p>Government ICT departments want some sort of warranty / support agreement in place in case something goes wrong. The support agreement must be with a company who are:</p>
<ul>
<li>accredited to work with government</li>
<li>unlikely to go out of business (no single contractors, no matter how skilled)</li>
<li>work to a tight SLA</li>
</ul>
<p>If the website goes down, there has to be someone whose <del>fault it is</del> responsibility it is to resolve it ASAP. </p>
<p>I&#8217;ll leave it there. I could talk at length about Queensland Government&#8217;s preference for Microsoft solutions. I could talk about other issues. But, really, I think that&#8217;s enough for now.</p>
<h4>Implications For WordPress</h4>
<p>So how do conservative ICT departments affect the chance of WordPress being adopted? What are some of the WordPress specific issues that arise?</p>
<h5>Update Frequency</h5>
<p>Government ICT prefers stable software which rarely changes. IE6 is once again evidence of this (although dependencies on IE6 by applications is the main reason).</p>
<p>WordPress updates a little too often for their comfort. </p>
<p>Remember, when an update is released, they can&#8217;t just upgrade. They&#8217;re going to need anywhere from several weeks to several months to digest the changes, analyse the security implications, plan the update, get it approved by CAB, do extensive testing on the impact on functionality (including on plugins), come up with a plan for training if anything&#8217;s changed, etc.</p>
<p>If you have to do that every couple of years, fine. A couple of times per year is another matter. It&#8217;s not just a case of a one click upgrade.</p>
<h5>One Click Upgrade </h5>
<p>I love this feature! I can pretty much guarantee all of you do too. However, a government department is unlikely to ever use it, at least on a live site. </p>
<p>Even if they&#8217;ve done all of that testing first, the best you can hope for is that they&#8217;ll click it in DEV, then promote it through to TEST then PROD, after security and change management due diligence has been done.</p>
<h5>Update Immediately For Security </h5>
<p>I cannot count the number of times I&#8217;ve heard people state that the number one measure for keeping WordPress secure is to upgrade immediately when an update is released. A lot of very high profile people in the WordPress community take this stance.</p>
<p>Unfortunately, it&#8217;s incompatible with the change management approach of the enterprise, and government in particular. They just aren&#8217;t going to ditch their normal change management process no matter what the WordPress community says.</p>
<h5>Automatic Updates</h5>
<p>There have been <a href="http://www.wptavern.com/should-automatic-upgrades-be-opt-in" target="_blank">recent discussions in the community</a> about introducing a Chrome like ‘auto upgrading in the background&#8217; feature. It seems almost certain that this will happen at some point, with the debate being whether it should be opt-in or opt-out. </p>
<p>Automatic updates are just not going to cut it with government. That&#8217;s why Chrome isn&#8217;t on the list of approved browsers in my department, leaving aside all of the other compatibility issues &#8211; it upgrades itself which means it can&#8217;t be controlled.</p>
<p>Of course they could turn it off, but rightly or wrongly, even the discussion itself highlights the disconnect between those behind WordPress and those in government ICT. </p>
<p>Disclaimer: I actually have a strong opinion on this one, as I tweeted:</p>
<blockquote><p>I&#8217;m opt in, not opt out, for automatic updates. WordPress isn&#8217;t Chrome. Opt out will endup costing some people $. Guaranteed.</p></blockquote>
<h5>Plugin Code Quality</h5>
<p>As we all know, the code quality of plugins is wildly variable. Some are rock solid. Others less so. Right now, there is no manual quality assurance done on plugins in the repository (like there is with themes). So it&#8217;s use at your own risk. </p>
<p>This makes government ICT nervous. They&#8217;d rather pay for software that works out of the box, than use free plugins that were written by someone other than &#8216;the vendor&#8217;. There&#8217;s no warranty with free open source software.</p>
<h5>IE6</h5>
<p>Support for IE6 disappearing has hurt things.</p>
<p>During my short time at another department, an internal WordPress blog was launched at very short notice. The theme chosen was Twenty Eleven. Looked great on my computer. But when we looked on a computer with IE6 (which many people have) the posts were blank! The content was in the source, but not displayed. The Dashboard was screwed up as well.</p>
<p>I&#8217;m like all web developers &#8211; I wish IE6 had died years ago &#8211; but it&#8217;s still a reality for government departments and any software which lacks support for it will struggle for acceptance. </p>
<h3>The Enterprise Level CMS Challenge</h3>
<p>Anyone who&#8217;s followed WordPress for a while will be aware of the periodic &#8220;WordPress is / is not a CMS&#8221; debates. </p>
<p>This typically involves one person saying &#8220;WordPress is not a CMS&#8221;, followed by a hundred people saying &#8220;WordPress is too a CMS, you douche&#8221;. I don&#8217;t want to come down on the wrong side of that particular fence, but there are definitely challenges for WordPress at the higher end of the CMS market. </p>
<p>Please read this all the way through before you start writing your posts!</p>
<h4>Types of Government Websites</h4>
<p>First, we need to understand the different types of government website. The challenges WordPress faces will be very different depending on the type of the site in question.</p>
<p>I tend to think of government sites falling into one of the following categories:</p>
<ul>
<li><strong>Campaign sites</strong>: Promoting a government initiative. Short life span. Needs to be developed quickly. Not much content. Not much updating</li>
<li><strong>Blogs</strong>: Still rare in government, but growing. Expect there to be more and more of these in the future</li>
<li><strong>Specific purpose</strong>: Doing something different with a specific purpose. Generally not much content, may be more focused on user action</li>
<li><strong>Enterprise level</strong>: Huge informational website. Everyone has different definition for enterprise, but we&#8217;ll come to that shortly</li>
</ul>
<p>WordPress is more suited to some of these than others. It is ideal for blogs and campaign sites. It&#8217;s probably as good a base for a specific purpose site as anything else. But there are some serious issues when it comes to the larger &#8216;enterprise level&#8217; websites.</p>
<h4>Enterprise Level Websites</h4>
<p>Everyone has a different definition of &#8216;enterprise level&#8217;. It&#8217;s probably not sensible to try to tie that definition down. Instead, I&#8217;ll describe the sort of website I&#8217;m talking about:</p>
<ul>
<li>Anywhere from 3,000 to 10,000 pages (and let&#8217;s not talk about PDFs!)</li>
<li>Anywhere from 3 to 7 levels deep: the site I&#8217;m currently working on will be 7 levels deep minimum</li>
<li>The majority of content not chronologically based</li>
<li>Several hundred distributed authors, located around the state, spread throughout maybe 60 business areas, each with their own signoff processes.</li>
<li>Centralised editorial quality assurance</li>
<li>Complex workflows:
<ul>
<li>One piece of content may need to go through 5 levels of approvals</li>
<li>Another may only need to go through 2 levels</li>
<li>There will be different approval steps and different users for different content types and different categories</li>
<li>Example: Content author -> Manager -> Communications -> Web Editor -> Tech QA -> Publish.</li>
</ul>
</li>
</ul>
<p>Note: It&#8217;s not about traffic. We all know WordPress can scale, for example as in the case of WordPress.com. Rather it is about complexity and the ability of WordPress to handle this sort of site <strong>out of the box</strong>.</p>
<p>If we rewind to the Successes section above and look at those sites which have been a success in government, none of them has been one of these larger sites. Number 10 Downing St gets closest, but it&#8217;s only a couple of levels deep. The govspace sites are all smaller. None of them meet my criteria of an enterprise level site above.</p>
<p>If anyone knows of such a site using WordPress, let me know! I wouldn&#8217;t be surprised if there was some out there, but I&#8217;ve yet to see them. </p>
<h4>Implications For WordPress</h4>
<p>In the talk at WordCamp Gold Coast, I asked a few questions:</p>
<ul>
<li>How many of you have experience working on a site like that. Answer: Only a couple out of 150ish people</li>
<li>How many think WordPress out of the box could deal with a site like that? Answer: They all said &#8220;No&#8221;</li>
<li>How many think WordPress could deal with it with some customization, plugins, etc? Answer: They all said &#8220;Yes&#8221;</li>
</ul>
<p>I totally agree. To quote Dion Hulse, WordCamp organiser and WordPress core-committer:</p>
<blockquote><p>WordPress can do anything – and I mean anything</p></blockquote>
<p>But government ICT doesn&#8217;t want to run third party plugins that haven&#8217;t undergone any formal quality assurance and which have no warranties. They don&#8217;t want to have to customize the code themselves either &#8211; they want an accredited supplier who will support the code to a tight SLA.</p>
<p>So what are some of the issues that stop WordPress being suitable out of the box?</p>
<h5>Functionality</h5>
<p>There is some functionality that most enterprise level CMSs include, that WordPress is lacking out of the box. Yes, most of this can be done via plugins, but read above about the reluctance to use third-party plugins.</p>
<p><strong>Workflow </strong><br />
<em>Out of the box</em>: Very limited functionality. No ability to customize workflows.<br />
<em>Plugins</em>: I&#8217;ve heard good things about the Edit Flow plugin, but I haven&#8217;t tried it. It seems like it&#8217;s a start, but I’m not sure it’s robust enough to implement the different workflows I mentioned above. http://editflow.org/</p>
<p><strong>User Permissions</strong><br />
<em>Out of the box</em>: Very limited functionality. Only a few predefined roles and no way to tweak these.<br />
<em>Plugins</em>: Justin Tadlock&#8217;s Member&#8217;s plugin might do the trick, but once again I haven’t used it much.</p>
<p><strong>Amount Of Pages</strong><br />
<em>Out of the box</em>: Very limited functionality. Navigating 10,000 pages in the backend will be horrible.<br />
<em>Plugins</em>: I believe there are plugins out there that can help, perhaps a tree explorer for pages (via category). </p>
<p><strong>Search</strong><br />
<em>Out of the box</em>: Very limited functionality. Lets face it, the default search sucks!<br />
<em>Plugins</em>: There are a variety of plugins out there that can help.</p>
<p>I won&#8217;t go on. There are things that other enterprise level CMSs do that give them the edge, such as link libraries, in page editing, etc. Most can be done via a plugin, but the point is that out of the box WordPress comes up short on quite a few fronts.</p>
<h5>Terminology</h5>
<p>I said above that Microsoft don’t speak the same language as the rest of us when it comes to &#8216;web&#8217;. Well, WordPress doesn’t speak the same language as enterprise level web teams do: It’s all posts, posts, posts:</p>
<ul>
<li>Custom post types? Great feature! Wrong name. It should be Custom content types</li>
<li>Post formats? Should be content formats</li>
</ul>
<p>If you want to fill enterprise level web teams with confidence that WordPress is going to suit their needs, you have to use the language that they understand. The term “posts” is synonymous with blogging. To convince people that WordPress is more than just a blogging platform, the terminology needs to get generic. </p>
<h5>Censorship</h5>
<p>The <a href="http://justintadlock.com/archives/2010/07/08/lowercase-p-dangit" target="_blank">controversial capital_P_dangit() function</a> forces the correct spelling of WordPress on all WordPress sites. </p>
<p>I understand people&#8217;s frustration with WordPress being spelt incorrectly, but you don&#8217;t mess with people&#8217;s content. If people do type WordPress with a lower case P (as I typed it here, but which you can&#8217;t see), you let them! You don&#8217;t censor their content!</p>
<p>You don&#8217;t see Microsoft building functions into SharePoint to make sure that people don&#8217;t call it Sharepoint. They rise above it.</p>
<p>Censoring content sends a message to government and large organisations. When they look at Microsoft they see a mature reliable organisation. When they look at the WordPress project they see an organisation with juvenile tendencies who could decide to mess with their content on a whim.</p>
<p>You want to compete with the big boys, you better grow up. <strong>#justsayin</strong></p>
<h5>There&#8217;s A Plugin For That</h5>
<p>In August 2011, WP Tavern <a href="http://www.wptavern.com/whats-the-quickest-way-to-end-a-conversation-about-wordpress" target="_blank">published a poll</a> about how conversations about possible new features in WordPress were killed by the core team. The winner was &#8220;There&#8217;s a plugin for that&#8221;.</p>
<p>I understand the argument for keeping WordPress core as lean as possible. We don&#8217;t want code bloat for features that only a handful of people are going to use. So I agree that much of the &#8216;enterprise level functionality&#8217; that government wants is actually better placed in a plugin than in core.</p>
<p>However, as I&#8217;ve mentioned above, government doesn&#8217;t want to be using 3rd party plugins. They are more likely to choose a CMS targeted at the enterprise, with all that stuff built in, than to choose WordPress with it&#8217;s plugins. </p>
<div class="csstextbox1">Note: Yes, I know, the plugin system is one of WordPress&#8217;s greatest strengths. I get that. My employers don&#8217;t.</div>
<p>Maybe this is where the mythical core plugins come in? Core plugins were <a href="http://wordpress.org/news/2009/12/canonical-plugins/" target="_blank">announced back in 2009</a> and they were <a href="http://wpdevel.wordpress.com/tag/core-plugins/" target="_blank">preparing the infrastructure</a> in January 2010, but as far as I know that was the end of it. I don&#8217;t think they took it anywhere.</p>
<p>If we could get some core plugins built that provided the &#8216;missing enterprise level functionality&#8217;, this might go a long way to solving this problem. There wouldn&#8217;t be any warranty, but there would be a greater level of trust because of the extra authority a core plugin would have.</p>
<p>There are other solutions, such as:</p>
<ul>
<li>a plugin certification system which occasionally gets raised as a possibility</li>
<li>one area of government stepping forward and writing its own plugins, that other areas of government would then feel comfortable using</li>
</ul>
<p>If I were a betting man, my money would be on that last option. </p>
<p>It&#8217;s just a matter of finding an area of government willing to overlook all the problems I mention here and throw themselves into WordPress whole heartedly. A few months ago I would have been skeptical, but the stuff going on in the UK makes me confident it will happen.</p>
<h5>Enterprise Level Support</h5>
<p>One of the strengths of WordPress is that there are so many other people using it. It&#8217;s easy to find information that you can use to help yourself. Google, WP Stack Exchange, even the official forums help sometimes. But&#8230;</p>
<p>As I mentioned earlier, government want more than that. They like the comfort of having a clearly defined support agreement in place. Especially for those big enterprise level websites.</p>
<p>WP Help Center may have been  the start of that model, but it faltered and was sold and I don&#8217;t know how it&#8217;s going now. It wasn&#8217;t really pitched at enterprise either. And it wasn&#8217;t in Australia. And they&#8217;d probably have to be an accredited supplier to government. I&#8217;m not aware of anywhere here that people could go for this sort of support.</p>
<h5>The Government View Of WordPress</h5>
<p>So, to summarise all that:</p>
<p>Government typically sees WordPress as an immature organization, which doesn’t provide support or warranties, whose software doesn’t do everything it needs out of the box, and who won&#8217;t bother to add that functionality into the system.</p>
<p>That&#8217;s explains a few things…</p>
<h4>The WordPress As A CMS Debate</h4>
<p>Back to this old chestnut. In the past I&#8217;ve let myself get involved in debates in places such as WP Tavern, about whether <a href="http://www.wptavern.com/forum/general-wordpress/1453-wordpress-not-cms.html" target="_blank">WordPress is a CMS or not</a>.</p>
<p>My position back then (18 months ago), was that:</p>
<ul>
<li>WordPress is a CMS</li>
<li>WordPress is NOT an enterprise level CMS</li>
</ul>
<p>I generally find that people who come out strongly in the Yes camp are those who work with small to medium sites (which WordPress is perfect for), while those in the No camp generally work on enterprise level sites.</p>
<h4>CMSs Used Within Government</h4>
<p>If WordPress isn&#8217;t being used within government, which content management systems are (at least here in Queensland)? Is there anything WordPress can learn there?</p>
<h5>SharePoint</h5>
<p>Microsoft have the slickest sales people I&#8217;ve ever seen. They come in twos and threes and there is never a pause in the selling. They pitch a &#8220;savings through the economies of scale of having a single, integrated, organisation-wide solution&#8221; message which CIO&#8217;s lap up.</p>
<p>In one meeting, I challenged one by saying I&#8217;d read reports that SharePoint (2007) could only do 85% of what most leading CMSs could do. He admitted it straight up, but turned it back to the economies of scale argument. My CIO never even blinked. These guys are good.</p>
<p>I&#8217;ve never used SharePoint, but from what I&#8217;ve heard it&#8217;s complex to set up and people with SharePoint skills are expensive to hire and difficult to keep. There were some significant issues with SharePoint 2007, but SharePoint 2010 is apparently much improved. </p>
<p>One thing that does worry me about Microsoft is that they don&#8217;t quite get the web. Or maybe it&#8217;s just that the web they do get, is different to the web that everyone else gets. They don&#8217;t use the same language as the rest of us. But it doesn&#8217;t matter, because they speak the language of the CIOs.</p>
<p>WordPress doesn&#8217;t have sales people and even if they did, they wouldn&#8217;t be as slick as the Microsoft ones.</p>
<p>Also, as <a href="http://ben.balter.com/2011/08/31/enterprise-open-source-and-why-better-is-not-enough/" target="_blank">Ben Balter said</a>:</p>
<blockquote><p>If you ask me why an organization should use SharePoint, I have at my fingertips focus-group tested ammunition. Ask me why you should use WordPress, and I&#8217;m left to pretty much fend for myself.  Curators of innovative technology need to make themselves known, and give those empowered to affect change, the tools to do so.</p></blockquote>
<h5>Interwoven TeamSite</h5>
<p>This is the most common CMS in Queensland Government at the moment (or at least at the beginning of the year when we asked around). However, I&#8217;ve never used it and I don&#8217;t know much about it, so there&#8217;s not much I can say about it. </p>
<h5>OpenText / RedDot</h5>
<p>RedDot is the CMS that I&#8217;ve had at work for since 2008. For various reasons we&#8217;re not on the latest version. The version we have has significant issues (eg deleting things in the CMS does not delete them on the server). </p>
<p>That&#8217;s right, unlike WordPress, the CMS publishes to a separate server. There are benefits to this, especially relating to the security model: the CMS can be inside the Firewall, publishing out to a server in the DMZ.</p>
<p>Apart from that, I can&#8217;t think of much that WordPress could learn from RedDot, but as I say we have a pretty old version of it.</p>
<h5>Squiz Matrix (formerly MySource Matrix)</h5>
<p>Squiz Matrix is &#8220;The most widely used enterprise content management system across the Australian Government and Tertiary Education sectors&#8221;. It&#8217;s not used widely in Queensland yet, but it&#8217;s starting to gain traction. </p>
<p>From all the demos I seen, and the people I&#8217;ve talked to, Matrix is a superior product to the others listed here.</p>
<p>The department I work for recently selected a new CMS to replace RedDot. Squiz Matrix was the product selected. WordPress wasn&#8217;t even considered.</p>
<p>What&#8217;s worth noting is that this CMS is:</p>
<ul>
<li>open source</li>
<li>PHP based</li>
</ul>
<p>Sound familiar? Which raises the question: why is Squiz at the table when WordPress is not? When government does choose open source, why do they choose Matrix over WordPress?</p>
<p>We&#8217;ll looking at this in detail shortly.</p>
<h3>The Selection Process</h3>
<p>This is the single biggest challenge that WordPress faces in being used for the larger government websites. Forget all that other stuff I mentioned above &#8211; they&#8217;re problems, but they can be overcome. This is the real problem.</p>
<p>Every government department will have different procurement processes. But whichever department, in whichever jurisdiction, in whichever country, there will be rigid rules around the procurement of software solutions.</p>
<p>For small projects (ie small websites), it may be possible for a department to just decided to use WordPress or their platform of choice. They may or may not have to make a business case for why they want to use it, but there&#8217;s a possibility they could push it through.</p>
<p>However, for larger projects, such as changing the CMS that runs the larger &#8216;enterprise level&#8217; websites, there will almost certainly be a formal selection process that must be undertaken, whether it be:</p>
<ul>
<li>Selective Tendering: where a small number of suppliers are approached to offer a proposal</li>
<li>Open Tendering: where an Request For Offer (RFO) is put out to all qualified businesses</li>
</ul>
<p>This process is how the organisation works out which CMS is best for their specific requirements.</p>
<p>There are <a href="http://www.business.qld.gov.au/running/sales-customer-service/winning-new-business/tendering-to-government/government-procurement" target="_blank">more options than that</a>, but I&#8217;ve tried to keep it simple. The argument&#8217;s the same anyway.</p>
<p>So how does WordPress get into the mix of CMSs that are considered as part of this process? Someone has to spend days, or even weeks, replying to the RFO with WordPress based solution. Who&#8217;s going to do that?</p>
<p>Hint: It&#8217;s not:</p>
<ol>
<li>Automattic</li>
<li>The WordPress Foundation</li>
<li>The department selecting the CMS</li>
<li>You (WordPress based design studios)</li>
</ol>
<p>Answer: It&#8217;s no one. WordPress isn&#8217;t even in the mix.</p>
<h3>The Government &#8216;Niche&#8217;</h3>
<p>I&#8217;m not sure if anyone has ever described either government as a niche before, but that&#8217;s one way to frame this conversation. </p>
<p>How many WordPress developers / studios are out there creating themes and plugins for the real estate niche? Lots! And more all the time. Why? Because there is money to be made from providing useful solutions to the real estate niche. </p>
<p>No one is out there developing for the government niche. </p>
<p>I understand why. If I&#8217;m a commercial theme shop and I can sell a $70 theme to real estate companies around the world, I could make some decent money.</p>
<p>You can&#8217;t transfer that business model to government. There&#8217;s not enough government agencies to make money off a $70 theme. You can&#8217;t sell in bulk to them. That&#8217;s not their main need anyway. </p>
<p>Their need is to have an <a href="http://redirected.qgm.qld.gov.au" target="_blank">accredited company</a> who can provide them with tailored services, support and hosting and who can invest a lot of time (can take 6 months) to convince them before seeing any return, if at all. </p>
<p>They generally don&#8217;t mind paying if they can get all that. It can be quite lucrative.</p>
<p>So far, I&#8217;m not aware of any company who has targeted government using WordPress as the base solution. This could be an opportunity for someone out there! But most WordPress developers / studios won&#8217;t go for it because it&#8217;s a *lot* of extra effort. </p>
<p>Hmm, maybe the best path would be for a WordPress studio to partner up with an accredited supplier who&#8217;s already selling other software to government (hint hint).</p>
<h2>Case Study: Squiz Matrix vs WordPress</h2>
<p>Earlier I mentioned Squiz Matrix, the open source PHP based CMS that is widely used in both enterprise and government. I thought I’d take the time to explore why it is successful in the government niche and what we may be able to learn from that.</p>
<p>First, we need to separate the organization from the software. <a href="http://squiz.com.au/products/squiz-matrix" target="_blank">Matrix</a> is the open source product. <a href="http://www.squiz.com.au/" target="_blank">Squiz</a> is the company who developed Matrix, who control commits to the product and who offer end to end services related to Matrix.</p>
<p>There&#8217;s an obvious comparison to the relationship that Automattic has with WordPress, although Squiz has far tighter control of the Matrix project than Automattic has of WordPress and there is no equivalent to the <a href="http://wordpressfoundation.org/" target="_blank">WordPress Foundation</a>. So really, there&#8217;s no comparison.</p>
<p>I do want to have a look at the business models of the two companies, which are almost opposite. With WordPress.com, Automattic has gone for huge volume, low transaction value. Building their company around enterprise level services, support and hosting, Squiz has gone for low volume, very high transaction value.</p>
<p>Automatic <a href="http://ma.tt/2011/11/growing-2/" target="_blank">reached 100 employees</a> world-wide on 11 November 2011. At the same time, Squiz had 130 staff in Australia alone. That in itself doesn’t mean much, but it shows that Squiz must be doing something right.</p>
<p>Where this is of interest to us, is that Squiz has been very successful in the &#8216;niche&#8217; we are discussing and the Matrix product has got a decent market share, while WordPress is almost non-existent. Here&#8217;s what they&#8217;ve done right.</p>
<p><strong>Squiz are an accredited supplier to government</strong><br />
They are actively out there pitching to government, making connections, answering tenders, selling the benefits of Matrix (and their services) to government. This ensures Matrix is in the mix in a majority of cases. There&#8217;s no-one doing this for WordPress, at least not in Australia, so WordPress doesn&#8217;t get a look in.</p>
<p><strong>Out of the box functionality</strong><br />
Squiz ensures that Matrix includes all of the common functionality that government wants. Things like link libraries, a flexible workflow capability, comprehensive user permissions, etc. </p>
<p><strong>Custom functionality</strong><br />
If Matrix doesn&#8217;t do something that a particular government agency needs, Squiz will add it to Matrix for them &#8211; for a fee (which reassures government). They then build that functionality into the core, where appropriate, so  that it can benefit others. Squiz control that process closely. There are no third party plugins, lacking quality assurance and warranties &#8211; although customers are free to make their own changes if they want to invest in the skill set. </p>
<p><strong>Tighter focus</strong><br />
Squiz only go after enterprise level clients, who have very similar needs. That results in a product that is closely aligned with the needs of their clients. Because of the nature of these clients, things that enterprise wouldn&#8217;t understand, like capital_P_dangit(), aren&#8217;t included. WordPress is for everyone, so it needs to be a little more generic, making it less suitable for government. </p>
<p><strong>Lots of other government clients</strong><br />
Squiz have lots of other government clients in Australia. They can leverage these for recommendations and case studies, etc, reassuring potential clients. WordPress doesn&#8217;t have anyone out there selling it to potential government clients, and even if there were, they&#8217;d have very few decent reference sites.</p>
<p><strong>Secure hosting, used by other government clients</strong><br />
Squiz provide enterprise level hosting. Some government agencies will have existing hosting agreements or will want to host their websites on their own servers, but for those that need hosting, this is an added benefit. It&#8217;s secure, has solid SLAs and is tailored to meet government needs. Once again, Squiz can roll out existing government clients as referees. </p>
<p><strong>Services and support</strong><br />
It&#8217;s not just hosting, Squiz offer end to end enterprise level service and support. They can do everything from analysing your requirements for you, designing and building the site, training your staff, providing enterprise level support etc. Where do you get that for WordPress? There are some good companies out there, but none that provide enterprise level end to end services.</p>
<p>So to sum up, Squiz has tailored their product <strong>and their services</strong> to government and are actively out there selling it. WordPress is neither tailored to government, nor does it have anyone marketing it to government or offering end to end services.</p>
<h2>Where WordPress Can Succeed</h2>
<p>Watch out government, WordPress is coming! At least for blogs and campaign sites. Maybe not in many agencies to start with, because of that conservative ICT department, but coming nonetheless.</p>
<p>WordPress is a perfect fit for these smaller sites. It&#8217;s quick and easy to set up, easy to maintain. The out of the box functionality does most of what&#8217;s needed for these sites. </p>
<p>Of course, every WordPress blog needs some plugins, so that will still be a concern to the ICT department (as will themes), but there are enough things happening that will counteract this in many cases:</p>
<p><strong>Greater emphasis on business benefits </strong><br />
Government ICT is being forced to become less conservative, as the need to deliver innovative solutions increases. The balance is swinging to putting more emphasis on the business benefits and less on the risks. When ICT shift to this mindset, WordPress becomes an enabler for them.</p>
<p><strong>Trends towards WordPress in government</strong><br />
The trends towards using WordPress in government is growing both here in Australia and especially overseas. As more agencies use WordPress, the more traction it will gain.</p>
<p><strong>People using WordPress at home</strong><br />
I kid you not, this may be the biggest one. People are coming to work and thinking &#8220;hmm, I could get this site up right now if I just used WordPress&#8221;. Sometimes this leads to rogue sites, but equally it means more people lobbying to use it. Selling from the inside!</p>
<p>So, over the next few years, I think we&#8217;ll see more and more WordPress sites within government.</p>
<h2>What&#8217;s Needed For Total Adoption</h2>
<p>Unfortunately, I don&#8217;t expect that success will carry over into the enterprise level sites. There are many challenges, not least the fact that no one is selling WordPress to government.</p>
<p>For WordPress to gain more traction with enterprise level sites, some or all of the following need to happen:</p>
<ul>
<li>The terminology needs to be aligned with what enterprise level organisations expect, eg: Custom Content Types not Custom Post Types, etc.</li>
<li>Core plugins (or plugins by government agencies) need to be created to address the common needs of government, such as workflow.</li>
<li>Some brave souls need to use WordPress for their large complex site, setting a precedence for others.</li>
<li>Ultimately, there need to be more companies targeting the government niche, offering end to end services tailored to government, built on top of WordPress.</li>
</ul>
<p>I wouldn&#8217;t be surprised to see the odd success here and there, but unfortunately, I don&#8217;t see wholesale success anytime soon. I hope I&#8217;m wrong!</p>
<script type="text/javascript">Nifty("div.csstextbox1","bgcolor-#FFFFFF");</script><img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/7nMWhFA4Pa4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/government/use-of-wordpress-in-government/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordCamp Gold Coast 2011 – WordPress in Government</title>
		<link>http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/</link>
		<comments>http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 01:45:43 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[WordPress and Government]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[wordcamp]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=353</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/.I gave a talk titled &#8220;WordPress and Government &#8211; the Australian Perspective&#8221; at WordCamp GoldCoast on Sunday 6 November, 2011. Here is the video of my talk, via WordCamp TV. Here is the slideshow via SlideShare: Stephen Cronin &#8211; WordPress and Government View more PowerPoint [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/">http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/</a>.<br /><p>I gave a talk titled &#8220;WordPress and Government &#8211; the Australian Perspective&#8221; at WordCamp GoldCoast on Sunday 6 November, 2011. </p>
<p>Here is the video of my talk, via WordCamp TV.</p>
<p><embed type="application/x-shockwave-flash" src="http://s0.videopress.com/player.swf?v=1.03" width="500" height="280" wmode="direct" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=N0PgN4Q3&amp;isDynamicSeeking=true"></embed></p>
<p>Here is the slideshow via SlideShare:</p>
<div style="width:425px" id="__ss_10051623"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/sjcronin99/stephen-cronin-wordpress-and-government" title="Stephen Cronin - WordPress and Government" target="_blank">Stephen Cronin &#8211; WordPress and Government</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10051623" width="500" height="418" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank">PowerPoint</a> from <a href="http://www.slideshare.net/sjcronin99" target="_blank">sjcronin99</a> </div>
</p></div>
<p>Note, I had to remove some images from the SlideShare version. You can also <a href="http://scratch99.com/downloads/stephen-cronin-wordpress-and-government.pptx">download the PPTX version</a>, which is the full version that I used on the day.</p>
<p>I also am writing a long article based on this topic (7000 words and counting), which I really need to finalise soon!</p>
<img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/HcnBxardf9g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/wordpress/government/wordcamp-gold-coast-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogger ccTLD Redirects Break Adsense URL Channels</title>
		<link>http://scratch99.com/website-management/make-money-online/blogger-cctld-redirects-break-adsense-url-channels/</link>
		<comments>http://scratch99.com/website-management/make-money-online/blogger-cctld-redirects-break-adsense-url-channels/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 14:47:25 +0000</pubDate>
		<dc:creator>Stephen Cronin</dc:creator>
				<category><![CDATA[Make Money Online]]></category>
		<category><![CDATA[Adsense]]></category>
		<category><![CDATA[blogger]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://scratch99.com/?p=349</guid>
		<description><![CDATA[Copyright © 2013 Stephen Cronin. Visit the original article at http://scratch99.com/website-management/make-money-online/blogger-cctld-redirects-break-adsense-url-channels/.Google Blogger recently started redirecting visitors to the ccTLD version of Blogger appropriate for the reader&#8217;s location. Unfortunately, this has broken URL Channels in Google Adsense. Editorial Note As of 3 February 2012, it appears that this is only occuring for visitors in Australia. A [...]]]></description>
				<content:encoded><![CDATA[Copyright © 2013 <a href="http://scratch99.com">Stephen Cronin</a>. Visit the original article at <a href="http://scratch99.com/website-management/make-money-online/blogger-cctld-redirects-break-adsense-url-channels/">http://scratch99.com/website-management/make-money-online/blogger-cctld-redirects-break-adsense-url-channels/</a>.<br /><p>Google Blogger recently started <a href="http://support.google.com/blogger/bin/answer.py?hl=en&#038;answer=2402711" target="_blank">redirecting visitors to the ccTLD version</a> of Blogger appropriate for the reader&#8217;s location. Unfortunately, this has broken URL Channels in Google Adsense.</p>
<div id="editorial-note">
<strong>Editorial Note</strong><br />
As of 3 February 2012, it appears that this is only occuring for visitors in Australia. </p>
<p>A Google search for &#8220;<code>site:blogspot.com.*</code>&#8221; shows 15,100 results, all of which appear to be .blogspot.com.au sites. A search for &#8220;<code>site:blogspot.com.* -site:blogspot.com.au</code>&#8221; shows 0 results. </p>
<p>For some reason, a search for &#8220;<code>site:blogspot.com.au</code>&#8221; only shows 382 results, which doesn&#8217;t match the 15,100 from the previous search, but the &#8216;results found&#8217; numbers have never added up.</p>
<p>So, I guess Australia is the guinea pig for this one!</p>
<p><strong>Edit: it seems there are blogspot.co.nz domains as well.</strong>
</div>
<h2>How The Blogger ccTLD Redirection Works</h2>
<p>Say you have a website at sitename.blogspot.com, then:</p>
<ul>
<li> a visitor from Australia will be redirected to sitename.blogspot.com.au</li>
<li> a visitor from Germany will be redirected to sitename.blogspot.com.de</li>
<li> a visitor from US will go to the main sitename.blogspot.com.au</li>
</ul>
<p>The content will be the same on each site &#8211; unless there are legal reasons that the content can&#8217;t be displayed in a particular country (is that caving in to censorship?) &#8211; but the user will technically be on a different website. </p>
<h2>Impacts Of This Change On SEO And Analytics</h2>
<p>In the Blogger Help page discussing this (linked to above), Google explain that they are working to minimise any Search Engine Optimisation issues arising from the duplicate content this will create. They say:</p>
<blockquote><p>A: After this change, crawlers will find Blogspot content on many different domains. Hosting duplicate content on different domains can affect search results, but we are making every effort to minimize any negative consequences of hosting Blogspot content on multiple domains.</p>
<p>The majority of content hosted on different domains will be unaffected by content removals, and therefore identical. For all such content, we will specify the blogspot.com version as the canonical version using rel=canonical. This will let crawlers know that although the URLs are different, the content is the same. When a post or blog in a country is affected by a content removal, the canonical URL will be set to that country’s ccTLD instead of the .com version. This will ensure that we aren’t marking different content with the same canonical tag.</p></blockquote>
<p>I&#8217;m nervous about the &#8220;we&#8217;re making every effort&#8221; part. I&#8217;d rather they were saying &#8220;we&#8217;ve got it sorted, there will be no impact&#8221;. But at least they&#8217;re working on it.</p>
<p>As far as Google Analytics goes, there appears to have been no impact. Traffic levels are showing as steady, no drops or hiccups from the fact that visitors are now going to different sites.</p>
<p>But there&#8217;s something that Google missed: URL Channels in  Adsense.</p>
<h2>The Effect On URL Channels In Adsense</h2>
<p>I only noticed the ccTLDs redirects after a couple of days of troubleshooting a problem with Adsense on one of my sites. For some reason Page Views in the Adsense report had dropped from several hundred to almost none. </p>
<p>The reason?</p>
<p>Most of the visitors to that site are from Australia. They now get redirected to the blogspot.com.au version of the site, and although Adsense ads appear on the site, that doesn&#8217;t show up in the URL Channel for the blogspot.com version.</p>
<p><strong>This means that URL Channels in Adsense are now broken for all sites on Blogger. You will only see US traffic under the URL Channel</strong>.</p>
<h2>Work Arounds</h2>
<p>Because most of my traffic was from Australia, I tried adding a new URL Channel for sitename.blogspot.com.au. This wouldn&#8217;t actually fix the problem, and you couldn&#8217;t scale that across all the potential ccTLDs Blogger will use, but it would have been better than what I have now. However, that gives me the following message: &#8220;URL cannot contain a google host.&#8221;</p>
<p>You could also set up Custom Channels specifically for that site (if you&#8217;re not already using one) and recreate the Adsense code . That&#8217;s not the long term solution, but could get you by in the short term.</p>
<div id="editorial-note">
<strong>Editorial Note</strong></p>
<p>wasaweb <a href="http://productforums.google.com/forum/#!msg/adsense/f4sdubBwE8Y/SyiVVgM-UGo">suggested using the Sites report</a> (under the Performance reports tab). My response was as follows:</p>
<blockquote><p>
Thanks for the tip of using Sites under Performance report &#8211; I&#8217;ve always used the URL Channel dimension instead. However:</p>
<p>a) if they give us a URL dimension, then it really should work properly and</p>
<p>b) the Sites section will quickly become bogged  down with all the ccTLDs &#8211; I&#8217;m seeing blogspot.com, blogspot.com.au, blogspot.co.nz in there at the moment and it will become worse as they roll out globally. And if I want to know how the &#8216;site&#8217; is going, I&#8217;ll have to manually add up all those individual sites (although I assume there&#8217;s a report I could do this in).</p></blockquote>
</div>
<h2>The Solution</h2>
<p>The solution is pretty obvious. The Adsense team need to quickly modify their system so that blogspot.com URL Channels automatically include all the blogspot.com.* domains (ie all of the ccTLDs they have set up). </p>
<p>Either that or the Blogger team need to roll back the ccTLD redirections until they&#8217;ve discussed it with other teams in Google and done some testing! </p>
<p>I&#8217;m not convinced by this move, either from a technical point of view or a political one (the reasoning for the change seems to be so they can censor information for people in certain countries). I haven&#8217;t seen this reported anywhere or announced by Google, beyond their Help page. </p>
<p>Anyway, I&#8217;ll be trying to raise this issue with them &#8211; although it&#8217;s not easy to raise things with Google!</p>
<img src="http://feeds.feedburner.com/~r/MoreThanScratchTheSurfaceSummary/~4/fp_-ZEXaAWE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://scratch99.com/website-management/make-money-online/blogger-cctld-redirects-break-adsense-url-channels/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.431 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-04-25 21:00:30 -->
