<?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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Jeremy Clark</title>
	
	<link>http://clark-technet.com</link>
	<description>TechNet.com</description>
	<lastBuildDate>Wed, 23 May 2012 19:08:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/clark-technet/bRdG" /><feedburner:info uri="clark-technet/brdg" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://clark-technet.com</link><url>http://clark-technet.com/logo.jpg</url><title>Jeremy Clark - TechNet.com</title></image><feedburner:emailServiceId>clark-technet/bRdG</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Simple WordPress Twitter follower count snippet</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/SbM_FcxA_-I/simple-wordpress-twitter-follower-count-snippet</link>
		<comments>http://clark-technet.com/2012/04/simple-wordpress-twitter-follower-count-snippet#comments</comments>
		<pubDate>Wed, 25 Apr 2012 12:25:31 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=2210</guid>
		<description><![CDATA[<p>Following on the idea from this post, sometimes a full blown Twitter plugin is too much. Luckily Twitter has a rich API that is ripe for the taking of information. The API console is of great use to find how &#8230; <a href="http://clark-technet.com/2012/04/simple-wordpress-twitter-follower-count-snippet">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Following on the idea from this <a href="http://clark-technet.com/2012/04/simple-wordpress-twitter-feed-code-snippet" title="Simple WordPress Twitter feed code snippet">post</a>, sometimes a full blown Twitter plugin is too much.  Luckily Twitter has a rich API that is ripe for the taking of information.  The <a href="https://dev.twitter.com/console">API console</a> is of great use to find how to properly format the API requests.  This code below will output the number of followers specified by the username passed to the function wrapped in a link to the page that allows the visitor to easily follow the user.<br />
<span id="more-2210"></span><br />
<div class="list"><p class="trigger"><a href="#">Source Code</a></p><div class="toggle_container"><div class="block"><br />
<script src="https://gist.github.com/2481191.js"> </script><br />
</div></div></div></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/GOTDkAoEDNp7EBPdN2mvvc8G_54/0/da"><img src="http://feedads.g.doubleclick.net/~a/GOTDkAoEDNp7EBPdN2mvvc8G_54/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GOTDkAoEDNp7EBPdN2mvvc8G_54/1/da"><img src="http://feedads.g.doubleclick.net/~a/GOTDkAoEDNp7EBPdN2mvvc8G_54/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=SbM_FcxA_-I:vpo3RTt1I4g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=SbM_FcxA_-I:vpo3RTt1I4g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=SbM_FcxA_-I:vpo3RTt1I4g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=SbM_FcxA_-I:vpo3RTt1I4g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=SbM_FcxA_-I:vpo3RTt1I4g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=SbM_FcxA_-I:vpo3RTt1I4g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/SbM_FcxA_-I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/04/simple-wordpress-twitter-follower-count-snippet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/04/simple-wordpress-twitter-follower-count-snippet?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=simple-wordpress-twitter-follower-count-snippet</feedburner:origLink></item>
		<item>
		<title>Simple WordPress Twitter feed code snippet</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/sp-MeeeG3AI/simple-wordpress-twitter-feed-code-snippet</link>
		<comments>http://clark-technet.com/2012/04/simple-wordpress-twitter-feed-code-snippet#comments</comments>
		<pubDate>Tue, 24 Apr 2012 14:30:27 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sinppet]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=2209</guid>
		<description><![CDATA[<p>Sometimes a Twitter plugin is just the right fit for a site, other times it just might be overkill. If all that&#8217;s need is a simple list of recent Twitter posts this solution might be the best. The code below &#8230; <a href="http://clark-technet.com/2012/04/simple-wordpress-twitter-feed-code-snippet">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Sometimes a Twitter plugin is just the right fit for a site, other times it just might be overkill.  If all that&#8217;s need is a simple list of recent Twitter posts this solution might be the best.  The code below can be placed in a functions.php for the current theme or in a separate plugin.  The code will automatically change @usernames into links to profiles and #hastags into links for the search page for the tag.  It will also convert text links into valid click-able links.<br />
<span id="more-2209"></span><br />
<div class="list"><p class="trigger"><a href="#">Source Code</a></p><div class="toggle_container"><div class="block"><br />
<script src="https://gist.github.com/2471214.js"> </script><br />
</div></div></div></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/q2t1UDLdIJb1q83lLn8K_cj4tMA/0/da"><img src="http://feedads.g.doubleclick.net/~a/q2t1UDLdIJb1q83lLn8K_cj4tMA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/q2t1UDLdIJb1q83lLn8K_cj4tMA/1/da"><img src="http://feedads.g.doubleclick.net/~a/q2t1UDLdIJb1q83lLn8K_cj4tMA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sp-MeeeG3AI:IgKZpdmAZNs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sp-MeeeG3AI:IgKZpdmAZNs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=sp-MeeeG3AI:IgKZpdmAZNs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sp-MeeeG3AI:IgKZpdmAZNs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=sp-MeeeG3AI:IgKZpdmAZNs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sp-MeeeG3AI:IgKZpdmAZNs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/sp-MeeeG3AI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/04/simple-wordpress-twitter-feed-code-snippet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/04/simple-wordpress-twitter-feed-code-snippet?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=simple-wordpress-twitter-feed-code-snippet</feedburner:origLink></item>
		<item>
		<title>WordPress 3.4 wp_get_theme – new function for retrieving theme data</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/P7FNEfAdPTs/wordpress-3-4-wp_get_theme-new-function-for-retrieving-theme-data</link>
		<comments>http://clark-technet.com/2012/04/wordpress-3-4-wp_get_theme-new-function-for-retrieving-theme-data#comments</comments>
		<pubDate>Mon, 23 Apr 2012 14:23:59 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress 3.4]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=2208</guid>
		<description><![CDATA[<p>Another new addition to 3.4 is the deprecation of the get_theme_data function, this function was used pull data from the header of a theme&#8217;s stylesheet. This function was useful for outputting theme data in a repeatable way. The new function &#8230; <a href="http://clark-technet.com/2012/04/wordpress-3-4-wp_get_theme-new-function-for-retrieving-theme-data">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Another new addition to 3.4 is the deprecation of the <a href="http://codex.wordpress.org/Function_Reference/get_theme_data">get_theme_data</a> function, this function was used pull data from the header of a theme&#8217;s stylesheet.  This function was useful for outputting theme data in a repeatable way.  The new function <a href="http://codex.wordpress.org/Function_Reference/wp_get_theme">wp_get_theme</a> is the replacement for this function.  The difference is that the get_theme_data returned data in an array and the data was accessible via array keys, while wp_get_theme returns the data as an object.  This has little effect on how the code is used just how to retrieve the data.  </p>
<p>Maintaining backwards compatibility is always a top priority when releasing a theme for the public.  This code below will accomplish this by testing if the new function exists before running it, and falling back to the old function if it doesn&#8217;t.  The same variables are used for either way, so they variables can be used regardless of what function is used.<br />
<span id="more-2208"></span><br />
<div class="list"><p class="trigger"><a href="#">Source Code</a></p><div class="toggle_container"><div class="block"><br />
<script src="https://gist.github.com/2470972.js"> </script><br />
</div></div></div></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/uUuL3WR0zT1dpUJ2HzE_TzWszdo/0/da"><img src="http://feedads.g.doubleclick.net/~a/uUuL3WR0zT1dpUJ2HzE_TzWszdo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uUuL3WR0zT1dpUJ2HzE_TzWszdo/1/da"><img src="http://feedads.g.doubleclick.net/~a/uUuL3WR0zT1dpUJ2HzE_TzWszdo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=P7FNEfAdPTs:OP_8jKQu6Nc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=P7FNEfAdPTs:OP_8jKQu6Nc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=P7FNEfAdPTs:OP_8jKQu6Nc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=P7FNEfAdPTs:OP_8jKQu6Nc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=P7FNEfAdPTs:OP_8jKQu6Nc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=P7FNEfAdPTs:OP_8jKQu6Nc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/P7FNEfAdPTs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/04/wordpress-3-4-wp_get_theme-new-function-for-retrieving-theme-data/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/04/wordpress-3-4-wp_get_theme-new-function-for-retrieving-theme-data?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-3-4-wp_get_theme-new-function-for-retrieving-theme-data</feedburner:origLink></item>
		<item>
		<title>Solving 403 errors with CloudFlare</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/KqGUhC4N88s/solving-403-errors-with-cloudflare</link>
		<comments>http://clark-technet.com/2012/04/solving-403-errors-with-cloudflare#comments</comments>
		<pubDate>Wed, 18 Apr 2012 14:49:41 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=2183</guid>
		<description><![CDATA[<p>Recently I&#8217;ve switched over to using CloudFlare, for those unfamiliar it&#8217;s a proxy caching service. It caches resources from your site in several data centers. When looking over Google Webmaster Tools, I noticed every page it crawled was a 403 &#8230; <a href="http://clark-technet.com/2012/04/solving-403-errors-with-cloudflare">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve switched over to using <a href="http://www.cloudflare.com/">CloudFlare</a>, for those unfamiliar it&#8217;s a proxy caching service.  It caches resources from your site in several data centers.  When looking over Google Webmaster Tools, I noticed every page it crawled was a 403 error.  Not very conducive to having good search rankings.</p>
<p>After some digging the answer finally appeared on the WordPress.org forums.  The Bad Behavior plugin was rejecting Google since the crawler was being proxied thru CloudFlare and had the user-agent of Googlebot but was not in the right IP address range.  The solution, disable Bad Behavior.  Although the plugin had always worked great in reducing the number of spam request, since CloudFlare increases security by blocking bad requests before ever reaching the server, no reason to have Bad Behavior taking up resources as well.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/gfGeUGPURUwHt9wadkZeE2t_JZQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/gfGeUGPURUwHt9wadkZeE2t_JZQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gfGeUGPURUwHt9wadkZeE2t_JZQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/gfGeUGPURUwHt9wadkZeE2t_JZQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=KqGUhC4N88s:s8ED4GQgH6I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=KqGUhC4N88s:s8ED4GQgH6I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=KqGUhC4N88s:s8ED4GQgH6I:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=KqGUhC4N88s:s8ED4GQgH6I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=KqGUhC4N88s:s8ED4GQgH6I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=KqGUhC4N88s:s8ED4GQgH6I:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/KqGUhC4N88s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/04/solving-403-errors-with-cloudflare/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/04/solving-403-errors-with-cloudflare?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=solving-403-errors-with-cloudflare</feedburner:origLink></item>
		<item>
		<title>WordPress Custom Headers Update for 3.4</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/WOHHRJHZcho/wordpress-custom-headers-update-for-3-4</link>
		<comments>http://clark-technet.com/2012/04/wordpress-custom-headers-update-for-3-4#comments</comments>
		<pubDate>Wed, 11 Apr 2012 13:00:32 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[guides]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=2063</guid>
		<description><![CDATA[<p>With the upcoming release of WordPress 3.4 the theme UI has had an overhaul, including some great enhancements for custom headers. <a href="http://clark-technet.com/2012/04/wordpress-custom-headers-update-for-3-4">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>With the upcoming release of WordPress 3.4 the focus was on improving the overall theme experience.  This means changes to the dashboard and changes to the underlying code.  One of the improvements was with registering custom headers, the new streamlined process no longer relied on defining constants.  Now simply using <a href="http://codex.wordpress.org/Function_Reference/add_theme_support">add_theme_support(&#8216;custom-header&#8217;)</a>.  This alone wasn&#8217;t the end of the improvements, the new system also supports flexible height and width custom headers.  Passing an array of arguments to the add_theme_support call to achieve all of this rounds out the functionality improvements.</p>
<p>While the improvements are welcome, as a theme author only supporting the very latest version isn&#8217;t a good practice.  Backwards compatibility should be thought about until a certain point. This code below will use the new way of adding custom headers if the WordPress version is correct, and fallback to the old way of constants if not.  This will allow users who are wary of WordPress upgrades, and those who always run the latest and greatest to both benefit.  This is done simply by using the php function <a href="http://php.net/manual/en/function.version-compare.php">version_compare</a> and simply comparing the wp_version variable and the version that should be supported, this case 3.4.  The block before the else runs if true and the block after runs if false and an older version.  The register_default_headers function is still used to give users a choice of included headers.<br />
<span id="more-2063"></span><br />
<div class="list"><p class="trigger"><a href="#">Source Code</a></p><div class="toggle_container"><div class="block"><br />
<script src="https://gist.github.com/2334048.js?file=customHeader34.php"></script><br />
</div></div></div></p>
<p>Source: <a href="http://make.wordpress.org/themes/2012/04/06/updating-custom-backgrounds-and-custom-headers-for-wordpress-3-4/">Make WordPress Themes</a></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/0di0Q9JnwFaB74LT77kokMJWOns/0/da"><img src="http://feedads.g.doubleclick.net/~a/0di0Q9JnwFaB74LT77kokMJWOns/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0di0Q9JnwFaB74LT77kokMJWOns/1/da"><img src="http://feedads.g.doubleclick.net/~a/0di0Q9JnwFaB74LT77kokMJWOns/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=WOHHRJHZcho:UW0HDnCZ0RE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=WOHHRJHZcho:UW0HDnCZ0RE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=WOHHRJHZcho:UW0HDnCZ0RE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=WOHHRJHZcho:UW0HDnCZ0RE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=WOHHRJHZcho:UW0HDnCZ0RE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=WOHHRJHZcho:UW0HDnCZ0RE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/WOHHRJHZcho" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/04/wordpress-custom-headers-update-for-3-4/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/04/wordpress-custom-headers-update-for-3-4?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-custom-headers-update-for-3-4</feedburner:origLink></item>
		<item>
		<title>Simple:Press Forum to bbPress Forum Conversion</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/sC_4RcBix4c/simplepress-forum-to-bbpress-forum-conversion</link>
		<comments>http://clark-technet.com/2012/04/simplepress-forum-to-bbpress-forum-conversion#comments</comments>
		<pubDate>Thu, 05 Apr 2012 14:28:22 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[guides]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[bbpress]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=2037</guid>
		<description><![CDATA[<p>As part of a refresh on this site, the support forums have been migrated over to bbPress. There are a handful of importers available for some of the major forum software packages, but none existed for the plugin Simple:Press forum. &#8230; <a href="http://clark-technet.com/2012/04/simplepress-forum-to-bbpress-forum-conversion">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2012/04/bborg-title-background.png" alt="" title="bborg-title-background" width="181" height="52" class="alignleft size-full wp-image-2038" />As part of a refresh on this site, the support forums have been migrated over to <a href="http://bbpress.org/" title="bbPress.org">bbPress</a>.  There are a handful of importers available for some of the major forum software packages, but none existed for the plugin Simple:Press forum.  The Simple:press forum had been used as the support forums for the WordPress theme <a href="http://wordpress.org/extend/themes/techozoic-fluid" title="Techozoic Fluid">Techozoic Fluid</a> and other general WordPress questions.<br />
<span id="more-2037"></span><br />
Although the forum worked great and had many nice features, it was just overkill for the simple needs the support forum had.  It was closer to a full blown forum software, and less of a forum plugin.  While bbPress started out as a standalone forum it has recently been turned into a WordPress plugin and it&#8217;s simplicity had always been a big plus.</p>
<p>Luckily after some searching Mark Barnes had already ran across this problem posted the <a href="http://bbpress.org/forums/topic/v2-simple-press-importer-and-first-thoughts">solution</a> in a form of a plugin.  The source code for the plugin is below.  While this worked in his and my case it might not work for everyone.  It&#8217;s best to always have a complete backup before attempting a major conversion like this.  After creating a php file from the code and uploading it to your plugins directory, activate the plugin <em>(don&#8217;t worry it won&#8217;t do anything yet)</em>.  After activation, visit <strong>http://your-site-link?bbpressimport=1</strong> this will pull in all the forums, topics, and replies.  If you have an existing bbPress install that you just want overwritten use <strong>http://your-site-link?bbpressimport=1&#038;delete=1</strong> <em>(this will delete everything from your bbPress install, use with caution)</em>.  After verifying that the forums and entries were created, you&#8217;ll need to use the recount function to correct all the stats for the bbPress install.  This will be under your WordPress dashboard&#8217;s Tools -> Recount menu.</p>
<p><div class="list"><p class="trigger"><a href="#">Source Code</a></p><div class="toggle_container"><div class="block"><br />
<script src="https://gist.github.com/2310839.js?file=simple_forum_2_bbpress.php"></script><br />
</div></div></div></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/BszzkdlG5k_BlgNpyYXmDBTweFg/0/da"><img src="http://feedads.g.doubleclick.net/~a/BszzkdlG5k_BlgNpyYXmDBTweFg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BszzkdlG5k_BlgNpyYXmDBTweFg/1/da"><img src="http://feedads.g.doubleclick.net/~a/BszzkdlG5k_BlgNpyYXmDBTweFg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sC_4RcBix4c:ZML77u40vPM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sC_4RcBix4c:ZML77u40vPM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=sC_4RcBix4c:ZML77u40vPM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sC_4RcBix4c:ZML77u40vPM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=sC_4RcBix4c:ZML77u40vPM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=sC_4RcBix4c:ZML77u40vPM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/sC_4RcBix4c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/04/simplepress-forum-to-bbpress-forum-conversion/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/04/simplepress-forum-to-bbpress-forum-conversion?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=simplepress-forum-to-bbpress-forum-conversion</feedburner:origLink></item>
		<item>
		<title>Ribbon Style Navigation Menu With No Images</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/ZVWQD3EKF54/ribbon-style-navigation-menu-with-no-images</link>
		<comments>http://clark-technet.com/2012/02/ribbon-style-navigation-menu-with-no-images#comments</comments>
		<pubDate>Fri, 10 Feb 2012 19:41:22 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[guides]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=528</guid>
		<description><![CDATA[<p>Want a different type menu for your next project? A 3d ribbon style navigation menu adds some pop to a plain jane site. This site currently utilizes this type of menu, but using images and multiple containers. This technique uses &#8230; <a href="http://clark-technet.com/2012/02/ribbon-style-navigation-menu-with-no-images">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2012/02/ribbon-menu.png.png" alt="" title="ribbon-menu.png" width="155" height="69" class="alignleft size-full wp-image-530" />Want a different type menu for your next project?  A 3d ribbon style navigation menu adds some pop to a plain jane site.  This site currently utilizes this type of menu, but using images and multiple containers.  This technique uses some CSS3 for shading, a CSS trick called <a href="http://css-tricks.com/snippets/css/css-triangle/" title="CSS-Tricks">CSS triangles</a>, and some pseudo selectors.  Dropdown menus are beyond this tutorial but also compliment the menu very well.  First the basic menu is structured with div container and an unordered list containing children list items.<br />
<span id="more-528"></span></p>
<div style="clear:both"><!--padding--></div>
<pre class="brush: xml; title: ; notranslate">&lt;div id=&quot;nav&quot;&gt;&lt;ul id=&quot;menu&quot;&gt;
&lt;li class=&quot;child&quot;&gt;Menu Item&lt;/li&gt;
&lt;li class=&quot;child&quot;&gt;Menu Item 2&lt;/li&gt;
&lt;li class=&quot;child&quot;&gt;Menu Item 3&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</pre>
<p>Now for the basic styles to make the menu a horizontal menu. This creates a 35px high block that is offset to the left and right of the main block.  The shadow is also created with the vendor specific and W3C box-shadow.  This helps create the illusion of the menu being above the page below it.</p>
<pre class="brush: css; title: ; notranslate">
#nav{
	margin-left: -10px;
}
#menu{
	height:35px;
	line-height:30px;
	list-style-image:none;
	list-style-type:none;
	margin:auto;
	padding:0 0 0 10px;
	position:relative;
	width:100%;
	background-color: #eee;
	box-shadow:0 1px 4px rgba(0, 0, 0, 0.3);
	-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3);
	-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3);
	border-top: 1px solid #bbb;
}
#menu li{
	background-color:#E3E3E3;
	float:left;
	position:relative;
	padding: 0 4px;
	height: 35px;
	font-size: 16px;
	border-right: 1px solid #bbb;
}</pre>
<p>Now comes the css trick using borders to create the angular pieces the finish the illusion of the menu popping out of the page layout.  Notice how the one border is less than the others, this is to make the triangle shorter, this is just personal preference and can be adjusted to fit different designs.</p>
<pre class="brush: css; title: ; notranslate">
#menu:before{
        border-right: 10px solid #ccc;
        border-left: 10px solid rgba(255, 255, 255, 0);
        border-top: 6px solid rgba(255, 255, 255, 0);
        content: &quot; &quot;;
        display: block;
        height: 0;
        position: absolute;
        left: -10px;
        top: -7px;
        width: 0;
}
#menu:after{
        border-left: 10px solid #ccc;
        border-right: 10px solid rgba(255, 255, 255, 0);
        border-top: 6px solid rgba(255, 255, 255, 0);
        content: &quot; &quot;;
        display: block;
        height: 0;
        position: absolute;
        right: -10px;
        top: -7px;
        width: 0;
}</pre>
<p><a class="button alignright lightblue" href="http://clark-technet.com/ribbon-test.html" title="Demo" target="_blank">Demo</a></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/PDJF8nGWvMM6XB7FphAUz-SuXCA/0/da"><img src="http://feedads.g.doubleclick.net/~a/PDJF8nGWvMM6XB7FphAUz-SuXCA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PDJF8nGWvMM6XB7FphAUz-SuXCA/1/da"><img src="http://feedads.g.doubleclick.net/~a/PDJF8nGWvMM6XB7FphAUz-SuXCA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ZVWQD3EKF54:Q4tj2fkP6dg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ZVWQD3EKF54:Q4tj2fkP6dg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=ZVWQD3EKF54:Q4tj2fkP6dg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ZVWQD3EKF54:Q4tj2fkP6dg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=ZVWQD3EKF54:Q4tj2fkP6dg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ZVWQD3EKF54:Q4tj2fkP6dg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/ZVWQD3EKF54" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2012/02/ribbon-style-navigation-menu-with-no-images/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2012/02/ribbon-style-navigation-menu-with-no-images?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ribbon-style-navigation-menu-with-no-images</feedburner:origLink></item>
		<item>
		<title>Holiday Shopping Tips</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/nC33L2k4L1k/holiday-shopping-tips</link>
		<comments>http://clark-technet.com/2011/12/holiday-shopping-tips#comments</comments>
		<pubDate>Wed, 21 Dec 2011 18:54:54 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=527</guid>
		<description><![CDATA[<p>During the holiday seasons countless people spend more and more money online. Online shopping is becoming more popular, for many reasons. It&#8217;s easier than fighting crowds at large stores. Many online stores run special sales during holidays. Overall it&#8217;s just &#8230; <a href="http://clark-technet.com/2011/12/holiday-shopping-tips">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>During the holiday seasons countless people spend more and more money online.  Online shopping is becoming more popular, for many reasons.  It&#8217;s easier than fighting crowds at large stores.  Many online stores run special sales during holidays.  Overall it&#8217;s just a more convenient way to shop, but the convenience could also have a price.  Scams and phishing attempts rise during holidays.  There are a few simple steps that can be taken to reduce the risks.
<ul>
<li>Always be sure of the website your visiting.  IE Bookmark your favorite store&#8217;s website.</li>
<li>If that email offer seems to good to be true, it usually is.</li>
<li>Always verify offers from the retailer&#8217;s website.</li>
<li>When checking out verify the payment method</li>
<li>Probably the most important is to use a good security software to protect your computer from malware that could compromise your personal information</li>
<p><span id="more-527"></span><br />
<a href="http://uk.trendmicro.com/uk/about/infographics/safety-tips-for-online-shopping/"><img src="http://uk.trendmicro.com/imperia/md/images/uk/aboutus/infographics/shop-safely-online.jpg"/></a><br/>Via: <a href="http://uk.trendmicro.com">Trend Micro</a></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/BZhuaYRatIy4sCAS6XIp5sxK_zo/0/da"><img src="http://feedads.g.doubleclick.net/~a/BZhuaYRatIy4sCAS6XIp5sxK_zo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BZhuaYRatIy4sCAS6XIp5sxK_zo/1/da"><img src="http://feedads.g.doubleclick.net/~a/BZhuaYRatIy4sCAS6XIp5sxK_zo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=nC33L2k4L1k:RLqh0gDuVYw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=nC33L2k4L1k:RLqh0gDuVYw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=nC33L2k4L1k:RLqh0gDuVYw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=nC33L2k4L1k:RLqh0gDuVYw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=nC33L2k4L1k:RLqh0gDuVYw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=nC33L2k4L1k:RLqh0gDuVYw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/nC33L2k4L1k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2011/12/holiday-shopping-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2011/12/holiday-shopping-tips?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=holiday-shopping-tips</feedburner:origLink></item>
		<item>
		<title>Making Theme Widget Areas More Dynamic</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/Q6xrUQ7bM2Y/making-theme-widget-areas-more-dynamic</link>
		<comments>http://clark-technet.com/2011/10/making-theme-widget-areas-more-dynamic#comments</comments>
		<pubDate>Fri, 21 Oct 2011 14:11:37 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=517</guid>
		<description><![CDATA[<p>Making a horizontal widget area more dynamic.  Instead of hard-coding the widths of each widget and making the layout static, I decided to make it have dynamic widths.  By dynamic I'm not just talking about using percentage widths, but making the widths dependent on how many widgets are added to the area.  By using a built-in WordPress function and some simple php math, dynamic widths can easily be applied. <a href="http://clark-technet.com/2011/10/making-theme-widget-areas-more-dynamic">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2008/10/wordpresstip.jpg" alt="" title="WordPress" width="75" height="75" class="alignleft size-full wp-image-316" />While designing a new theme for a client a problem came up that has come up before.  Making a horizontal area a widgetized area, ie the header area next to a logo.  This could also be in the footer of a theme.  Instead of hardcoded the widths of each widget and making the layout static, I decided to make it have dynamic widths.  By dynamic I&#8217;m not just talking about using percentage widths, but making the widths dependent on how many widgets are added to the area.  Luckily WordPress has a handy function that will give counts of all the widgets currently active and in which area they are active.  The documentation on the function is quite sparse <a href="http://codex.wordpress.org/Function_Reference/wp_get_sidebars_widgets">wp_get_sidebars_widgets</a><span id="more-517"></span></p>
<p>I used this function to roll my own reusable function.</p>
<pre class="brush: php; title: ; notranslate">
function count_widgets($loc){
	$sidebar_widgets = wp_get_sidebars_widgets();
	$num_widgets = 0;
	foreach ( (array) $sidebar_widgets as $k =&gt; $v ){
		if ($loc != $k)
			continue;
		if ( is_array($v))
			$num_widgets = $num_widgets + count($v);
	}
	return $num_widgets;
}
</pre>
<p>Here&#8217;s is how it would be used.  This is added in the header.php in the head section.  What this does is get the number of widgets then divides 100 by this number then subtracts 2 times the number.  The subtraction if for 1% left and right margin that is applied in the stylesheet.  If more is required simply add the left and right together and multiply by the count.  The .header_widget is the class that I used when registering the widget area.  It is seen below.</p>
<pre class="brush: php; title: ; notranslate">
&lt;style type=&quot;text/css&quot;&gt;
&lt;?php $count = count_widgets('header');
$percentage = (100/$count) - ($count * 2);
echo '.header_widget{ width:' . $percentage . '%;}';
?&gt;
&lt;/style&gt;
</pre>
<p>The parameter that is passed to the function is the id of the sidebar or widget area your getting the count for.  To make sure what these values are it&#8217;s easiest to hardcode the ID when registering the sidebar.  The before_widget applies the class that is used to change the width with the styles above.</p>
<pre class="brush: php; title: ; notranslate">
register_sidebar(array(
  'name' =&gt; 'Header',
  'id' =&gt; 'header',
  'description' =&gt; 'Widgets will be shown in the header area.',
  'before_widget' =&gt; '&lt;div class=&quot;header_widget&quot;&gt;',
  'after_widget' =&gt; '&lt;/div&gt;'
));
</pre>
<p>Another way would be to use print_r to view the contents of the output.  Like this:</p>
<pre class="brush: php; title: ; notranslate">$sidebar_widgets = wp_get_sidebars_widgets();
print_r($sidebar_widgets);
</pre>
<p>This will output an array the keys will be the id that should be used.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/u8VHvSCFmj3dbhK52-y7Ge4-ISs/0/da"><img src="http://feedads.g.doubleclick.net/~a/u8VHvSCFmj3dbhK52-y7Ge4-ISs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/u8VHvSCFmj3dbhK52-y7Ge4-ISs/1/da"><img src="http://feedads.g.doubleclick.net/~a/u8VHvSCFmj3dbhK52-y7Ge4-ISs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=Q6xrUQ7bM2Y:7MraF3jRKQo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=Q6xrUQ7bM2Y:7MraF3jRKQo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=Q6xrUQ7bM2Y:7MraF3jRKQo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=Q6xrUQ7bM2Y:7MraF3jRKQo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=Q6xrUQ7bM2Y:7MraF3jRKQo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=Q6xrUQ7bM2Y:7MraF3jRKQo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/Q6xrUQ7bM2Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2011/10/making-theme-widget-areas-more-dynamic/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2011/10/making-theme-widget-areas-more-dynamic?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=making-theme-widget-areas-more-dynamic</feedburner:origLink></item>
		<item>
		<title>Google Maps API</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/6cPap8EYiWA/google-maps-api</link>
		<comments>http://clark-technet.com/2011/02/google-maps-api#comments</comments>
		<pubDate>Wed, 02 Feb 2011 21:47:17 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=497</guid>
		<description><![CDATA[<p>In a recent project it was asked to provide a Google map on a number of pages.  It would have been to time consuming to create a custom map and manually place the code on each page.  Instead using the Google Maps API was a better choice because the address could be pulled from a custom field in the post and used to create the map.  The first step is <a href="http://code.google.com/apis/maps/signup.html">signing up</a> for a API key, as with most Google products is free and only requires a Google account. <a href="http://clark-technet.com/2011/02/google-maps-api">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2011/02/google_map-150x119.jpg" alt="" title="Google Map" width="150" height="119" class="alignleft size-thumbnail wp-image-498" />In a recent project it was asked to provide a Google map on a number of pages.  It would have been too time consuming to create a custom map and manually place the code on each page.  Instead using the Google Maps API was a better choice because the address could be pulled from a custom field in the post and used to create the map.  With the code below adding a Google Map is simple.  </p>
<p><span class="alignright"><script type="text/javascript"><!--
google_ad_client = "pub-5880865034974171";
/* 125x125, created 3/13/08 */
google_ad_slot = "7590392760";
google_ad_width = 125;
google_ad_height = 125;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></span>The first step is <a href="http://code.google.com/apis/maps/signup.html">signing up</a> for a API key, as with most Google products is free and only requires a Google account.  After you&#8217;ve received your key, you can then edit the functions.php file of your current theme.  The below code has some key spots to take note of and maybe change some values.  I will highlight these after the full code.</p>
<div style="clear:both"></div>
<p><span id="more-497"></span></p>
<pre class="brush: php; highlight: [6,15,20,27,28,29,30,44]; title: ; notranslate">
&lt;?php
add_action('wp_head', 'gmaps_header');

function gmaps_header() {
?&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=false&amp;key=YOURAPIKEYGOESHERE&quot;&gt;&lt;/script&gt;
&lt;?php
}

function google_map(){
	global $post;
	$post_id = get_the_ID();
	$address = get_post_meta($post_id, 'address', true);
	if ( !empty ($address ) ){ ?&gt;
		&lt;div id=&quot;google_map&quot; style=&quot;width:500px;height:400px;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
		&lt;form onsubmit=&quot;calcRoute();return false;&quot;&gt;
			&lt;input type=&quot;text&quot; id=&quot;start&quot; value=&quot;&quot;&gt;
			&lt;input type=&quot;submit&quot; value=&quot;Get directions&quot;&gt;
		&lt;/form&gt;&lt;br /&gt;
		&lt;div id=&quot;directionsPanel&quot; style=&quot;width:500px;&quot;&gt;&lt;/div&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			var directionDisplay;
			var directionsService = new google.maps.DirectionsService();
			directionsDisplay = new google.maps.DirectionsRenderer();
			var latlng = new google.maps.LatLng(0,0);
			var myOptions = {
				zoom: 7,
				center: latlng,
				mapTypeControl: true,
				mapTypeId: google.maps.MapTypeId.HYBRID
			};
			var google_map = new google.maps.Map(document.getElementById(&quot;google_map&quot;), myOptions);
			directionsDisplay.setMap(google_map);
			directionsDisplay.setPanel(document.getElementById(&quot;directionsPanel&quot;))
			var geocoder_google_map = new google.maps.Geocoder();
			var address = '&lt;?php echo $address ?&gt;';
			geocoder_google_map.geocode( { 'address': address}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					google_map.setCenter(results[0].geometry.location);
					var marker = new google.maps.Marker({
						map: google_map,
						position: google_map.getCenter()
						});
						&lt;?php $thiscontent = $address;?&gt;
						var contentString = '&lt;?php echo $thiscontent; ?&gt;';
						var infowindow = new google.maps.InfoWindow({
							content: contentString
						});
						infowindow.open(google_map,marker);
						google.maps.event.addListener(marker, 'click', function() {
							infowindow.open(google_map,marker);
						});

					} else {
						alert(&quot;Geocode was not successful for the following reason: &quot; + status);
					}
				});

			function calcRoute() {
				var address = '&lt;?php echo $address ?&gt;';
				var start = document.getElementById(&quot;start&quot;).value;
				var request = {
					origin:start,
					destination:address,
					travelMode: google.maps.DirectionsTravelMode.DRIVING
				};
				directionsService.route(request, function(response, status) {
				  if (status == google.maps.DirectionsStatus.OK) {
					directionsDisplay.setDirections(response);
				  }
				});
			}
		&lt;/script&gt;
&lt;?php
	}

}?&gt;
</pre>
<p>After you have your API key it will need to be added to this line.</p>
<pre class="brush: php; first-line: 6; title: ; notranslate">	&lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=false&amp;key=YOURAPIKEYGOESHERE&quot;&gt;&lt;/script&gt;</pre>
<p>Here is the container that will hold the map.  The width and height can be changed to better suit the current theme.</p>
<pre class="brush: php; first-line: 15; title: ; notranslate">&lt;div id=&quot;google_map&quot; style=&quot;width:500px;height:400px;&quot;&gt;&lt;/div&gt;&lt;br /&gt;</pre>
<p>The same with this line, which holds the driving directions panel.  Here only a width is specified to allow the directions to use as much height as needed.</p>
<pre class="brush: php; first-line: 20; title: ; notranslate"> &lt;div id=&quot;directionsPanel&quot; style=&quot;width:500px;&quot;&gt;&lt;/div&gt;</pre>
<p>If driving directions aren&#8217;t need the simply removing these lines will remove the form and the container for the directions.</p>
<pre class="brush: php; first-line: 16; title: ; notranslate">	&lt;form onsubmit=&quot;calcRoute();return false;&quot;&gt;
	&lt;input type=&quot;text&quot; id=&quot;start&quot; value=&quot;&quot;&gt;
	&lt;input type=&quot;submit&quot; value=&quot;Get directions&quot;&gt;
	&lt;/form&gt;&lt;br /&gt;
	&lt;div id=&quot;directionsPanel&quot; style=&quot;width:500px;&quot;&gt;&lt;/div&gt;
</pre>
<p>Another important section is the map options themselves.  Zoom controls the how far the map is zoomed by default, mapTypeControl tells whether or not you want the controls for zoom and changing map type on the map.  The mapTypeId tells what kind of map you want displayed by default, HYBRID is the satellite view with the roads overlayed.  A list of possible mapTypeId is <a href="http://code.google.com/apis/maps/documentation/javascript/reference.html#MapTypeId">here</a>.</p>
<pre class="brush: php; first-line: 27; title: ; notranslate">				zoom: 7,
				center: latlng,
				mapTypeControl: true,
				mapTypeId: google.maps.MapTypeId.HYBRID
</pre>
<p>The marker content can be customized by setting the $thiscontent variable.  The address is shown by default, but any html can be added to the marker.  Other things you might consider is the places name, phone number, this can all be set via custom fields, and appended to the $thiscontent variable.</p>
<pre class="brush: php; first-line: 44; title: ; notranslate">						&lt;?php $thiscontent = $address;?&gt;</pre>
<p>After you&#8217;ve customized and added the code to your functions.php file, you can then edit your single.php and use this to display the maps where you would like.</p>
<pre class="brush: php; light: true; title: ; notranslate">&amp;lt;?php echo google_map(); ?&amp;gt;</pre>
<p>Then in your post just add a custom field with the name address and the contents a valid and correctly formated address, the code will do the rest. </p>
<h4>Resources:</h4>
<p><a href="http://code.google.com/apis/maps/documentation/javascript/reference.html">Maps API Reference</a></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/iRa7grnUKYz0BjRWrKB7Dr8TCY4/0/da"><img src="http://feedads.g.doubleclick.net/~a/iRa7grnUKYz0BjRWrKB7Dr8TCY4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iRa7grnUKYz0BjRWrKB7Dr8TCY4/1/da"><img src="http://feedads.g.doubleclick.net/~a/iRa7grnUKYz0BjRWrKB7Dr8TCY4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6cPap8EYiWA:KJqXHjovM7k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6cPap8EYiWA:KJqXHjovM7k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=6cPap8EYiWA:KJqXHjovM7k:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6cPap8EYiWA:KJqXHjovM7k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=6cPap8EYiWA:KJqXHjovM7k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6cPap8EYiWA:KJqXHjovM7k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/6cPap8EYiWA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2011/02/google-maps-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2011/02/google-maps-api?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=google-maps-api</feedburner:origLink></item>
		<item>
		<title>WordPress Self-Hosted Plugin Update API</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/cAh1hc4QSGk/wordpress-self-hosted-plugin-update-api</link>
		<comments>http://clark-technet.com/2010/12/wordpress-self-hosted-plugin-update-api#comments</comments>
		<pubDate>Fri, 17 Dec 2010 15:01:37 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=489</guid>
		<description><![CDATA[<p>Have a plugin that can&#8217;t be submitted to the official repository? Code is now on GitHub please see here for updated version. Many reasons exist but the biggest is that the plugin/support is sold therefore can&#8217;t be downloaded for free. &#8230; <a href="http://clark-technet.com/2010/12/wordpress-self-hosted-plugin-update-api">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Have a plugin that can&#8217;t be submitted to the official repository?</p>
<p><strong>Code is now on GitHub please see <a href="https://github.com/jeremyclark13/automatic-theme-plugin-update">here</a> for updated version.</strong></p>
<p>Many reasons exist but the biggest is that the plugin/support is sold therefore can&#8217;t be downloaded for free.  But why should the end user be punished after all they bought the plugin and updates should be just as seamless as from the official repo.  With this script this can be accomplished.  Examples and a package of sample code can be downloaded below.<br />
<span id="more-489"></span><br />
The original idea and code came from <a href="http://konstruktors.com/blog/wordpress/2538-automatic-updates-for-plugins-and-themes-hosted-outside-wordpress-extend/">konstruktors.com</a>, but I&#8217;ve modified it to add more info and fixed a couple of errors with it.  The package containing all the sample code can be downloaded <a href='https://github.com/jeremyclark13/automatic-theme-plugin-update/zipball/master'>here</a> from GitHub.</p>
<p>First I&#8217;ll explain the code that goes onto the update server, this code is found in the api folder of the zip file.  Basically you&#8217;ll just need to edit and upload the api/index.php file to your server somewhere and then in the update files of your theme/plugin point to that directory. </p>
<h3>Theme Update</h3>
<p>The theme in $packages['theme'] will need to replaced with your theme&#8217;s slug most likely it&#8217;s theme folder name.  This is what is sent to the update server to check for updates.  Next you have a versions array.  You&#8217;ll need to change the 1.0 both places to match the version of the update that is available.  Next is the date that the update was published.  Not really used in theme updates but still handy to have.  Next is the important part the url to the zip file for the update that will be pulled down by WordPress and installed.  The info array below this is where you can specifiy a url that will display the theme and some info about it.  Normally for themes from the offical repo this will display the page from the extend section.  </p>
<pre class="brush: php; title: ; notranslate">
// Theme with update info
$packages['theme'] = array(
	'versions' =&gt; array(
		'1.0' =&gt; array(
			'version' =&gt; '1.0',
			'date' =&gt; '2010-04-10',
			'package' =&gt; 'http://url_to_your_site/theme.zip'  // The zip file of the theme update
		)
	),
	'info' =&gt; array(
		'url' =&gt; 'http://url_to_your_theme_site'  // Website devoted to theme if available
	)
);
</pre>
<h3>Plugin Update</h3>
<p>Now onto the plugin section of the api/index.php file.  The plugin in $packages['plugin'] will need to be replaced with the plugin&#8217;s slug, usually the folder name of the plugin itself.  Next is the versions array where 1.0 will need to replaced both time with the version that is in the zip file for the update.  </p>
<ul>
<li>version: version of the update</li>
<li>date: date the update was published this is used in the plugin details section. </li>
<li>author: full name of the author or company publishing the plugin. </li>
<li>requires: minimum version of WordPress needed for the plugin to function properly. </li>
<li>tested:  the version of WordPress the plugin has been tested with.  </li>
<li>homepage: authors homepage.</li>
<li>downloaded: download counter used by wordpress.org but not by the self update api, can be any number.</li>
<li>external: link to the page devoted to plugin.</li>
<li>package: url to the zip file for the update.</li>
<li>sections: is an array to hold the extra info for the plugin details page generated by WordPress. </li>
<ul>
<li>description: Description of Plugin.</li>
<li>installation: Install Info</li>
<li>&#8230;</li>
<li>Any section can be added not just the ones listed.  The first field in the array ie before the => is used as the title of the tab in the plugin info page.  The next section is used in the body of the tab.</li>
</ul>
</ul>
<pre class="brush: php; title: ; notranslate">
// Plugin with update info
$packages['plugin'] = array(
	'versions' =&gt; array(
		'1.0' =&gt; array(
			'version' =&gt; '1.0',
			'date' =&gt; '2010-04-10',
			'author' =&gt; 'Author Name',
			'requires' =&gt; '2.8',  // WP version required for plugin
			'tested' =&gt; '3.0.1',  // WP version tested with
			'homepage' =&gt; 'http://your_author_website',  // Your personal website
			'downloaded'=&gt; '1000',  // Number of times downloaded
			'external' =&gt; 'http://your_plugin_website',  // Site devoted to your plugin if available
			'package' =&gt; 'http://url_to_your_site/plugin.zip',  // The zip file of the plugin update
			'sections' =&gt; array(
				'description' =&gt; 'Description of Plugin',
				'installation' =&gt; 'Install Info',
				'screen shots' =&gt; 'Screen Shots',
				'change log' =&gt; 'Change log',
				'faq' =&gt; 'FAQ',
				'other notes' =&gt; 'Other Notes'
				)
		)
	),
	'info' =&gt; array(
		'url' =&gt; 'http://your_plugin_webiste'  // Site devoted to your plugin if available
	)
);
</pre>
<h3>Theme Update script</h3>
<p>Now for the script that will need to be added to your theme for the theme to be able to check back to your server for updates.  There is a folder called theme/theme-update/ that has a update.php file that is all that is needed.  It need to be edited and included from your functions.php file.  The value that needs to be edited is $api_url.  $api_url is the url to the api/index.php file that you&#8217;ve uploaded to your server somewhere. There is also a debug function at the top to reset the transient used for theme updates so that WordPress will check every page load for updates.  The should only be used for testing, and should be removed from actual production code, as it would cause massive amounts of traffic to your site.</p>
<pre class="brush: php; title: ; notranslate">/**/
// TEMP: Enable update check on every request. Normally you don't need this! This is for testing only!
//set_site_transient('update_themes', null);

add_filter('pre_set_site_transient_update_themes', 'check_for_update');

function check_for_update($checked_data) {
	global $wp_version;

	/******************Change this*******************/
	$api_url = 'http://UPDATE SERVER.com/';
	/************************************************/
</pre>
<h3>Plugin Update script</h3>
<p>In the zip package there is a folder test-plugin-update which contains a file called test-plugin-update.php  Which is a full plugin but doesn&#8217;t do anything except check for updates to itself.  The code can just be placed into existing plugin files or into a new file and included from the main plugin file.  The plugin update only require one variable be changed $api_url which is the path to the api/index.php file on your update server.  This also has the function to check for updates every page load and should be removed from production code.  Basically the plugin update has two main functions.  One checks for the update the other takes the info from the update check and places it into the plugin update details screen.  </p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/yDelYpJbkGBrLzwnq9BrxY9ZTg0/0/da"><img src="http://feedads.g.doubleclick.net/~a/yDelYpJbkGBrLzwnq9BrxY9ZTg0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/yDelYpJbkGBrLzwnq9BrxY9ZTg0/1/da"><img src="http://feedads.g.doubleclick.net/~a/yDelYpJbkGBrLzwnq9BrxY9ZTg0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=cAh1hc4QSGk:W5d320ySrxQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=cAh1hc4QSGk:W5d320ySrxQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=cAh1hc4QSGk:W5d320ySrxQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=cAh1hc4QSGk:W5d320ySrxQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=cAh1hc4QSGk:W5d320ySrxQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=cAh1hc4QSGk:W5d320ySrxQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/cAh1hc4QSGk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/12/wordpress-self-hosted-plugin-update-api/feed</wfw:commentRss>
		<slash:comments>51</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/12/wordpress-self-hosted-plugin-update-api?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-self-hosted-plugin-update-api</feedburner:origLink></item>
		<item>
		<title>WordPress Theme Developers Tip – Theme Update Noticifications</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/78_eoGq57JU/wordpress-theme-developers-tip-theme-update-noticifications</link>
		<comments>http://clark-technet.com/2010/09/wordpress-theme-developers-tip-theme-update-noticifications#comments</comments>
		<pubDate>Fri, 17 Sep 2010 12:58:41 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=487</guid>
		<description><![CDATA[<p>While doing some work for a client, they were wanting to tie into the update notifications that a user gets when a theme has an updated version in the WordPress theme directory. The catch is this was a premium theme &#8230; <a href="http://clark-technet.com/2010/09/wordpress-theme-developers-tip-theme-update-noticifications">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2008/10/wordpresstip.jpg" alt="" title="WordPress" width="75" height="75" class="alignleft size-full wp-image-316" />While doing some work for a client, they were wanting to tie into the update notifications that a user gets when a theme has an updated version in the WordPress theme directory.  The catch is this was a premium theme that was being sold so couldn&#8217;t be submitted to the directory.  While not as robust as the WordPress update system it doesn&#8217;t need to be most premium themes require you to log in to download updates.  So a simple notification was sufficient.  Please read more to see code and explanations.<span id="more-487"></span></p>
<div style="clear:both"></div>
<ul class="download alignleft">
<li class="aligncenter"><a href='http://static.clark-technet.com/wp-content/uploads/2010/09/update-notice.php_.zip'>Download</a></li>
</ul>
<div style="clear:both"></div>
<pre class="brush: php; title: ; notranslate">
&lt;?php
add_action('admin_head','theme_check_ver'); //Theme Update Function
/****************************
Update Noticication Script
By Jeremy Clark

http://clark-technet.com

License: GPL
*****************************/

/*********************VALUES BELOW NEED TO BE CHANGED*************************/
$theme_sn= &quot;theme-short-name&quot;;
//Theme's short name for adding options to database
$remote_file = &quot;http://address-to-remote-server/theme-version.txt&quot;;
//Address of remote file with version number
$update_check_int = 24;
// Time in hours to check file for new version
$theme_update_notice =&quot;&lt;p&gt;New theme version available.  Please visit here for the download.&lt;/p&gt;&quot;;
//Text for notice displayed to user about new version
/*********************END EDITING*********************************************/

//These variables don't need editing
$theme_data = get_theme_data(TEMPLATEPATH . '/style.css');
$local_version = $theme_data['Version'];
$update_last_check = get_option($theme_sn.'_last_ver_check');
$new_ver_notice = get_option($theme_sn.'_new_ver');

function theme_check_ver() {
	global $update_check_int, $update_last_check,$new_ver_notice,$theme_sn;
		if ($new_ver_notice = true) {
			add_action('admin_notices','theme_new_ver');
		}
		$update_check_int_seconds = $update_check_int * 3600;
		$now = time();
		if ( empty( $update_last_check ) ) {
				//first run
				theme_compare_ver();
				add_option($theme_sn.'_last_ver_check', $now);
			} else {
				$time_ago = $now - $update_last_check;
				if ( $time_ago &gt; $update_check_int_seconds ) {
					theme_compare_ver();
					update_option($theme_sn.'_last_ver_check', $now);
				}
			}
}
function theme_compare_ver() {
	global $remote_file, $local_version,$theme_sn;
		$remote_text = file_get_contents($remote_file);
		if ($remote_text !== false) {
			$remote_version = $remote_text;
		if ($local_version == $remote_version) {
				delete_option($theme_sn.'_new_ver');
			} else {
				if ( is_numeric(str_replace(&quot;.&quot;, &quot;&quot;, $local_version)) &amp;&amp; is_numeric(str_replace(&quot;.&quot;, &quot;&quot;, $remote_version)) ) {
					if ( substr_count($local_version, '.') == 0 ) {
						// x -&gt; x.x.x.x
						$local_version = $local_version . '.0.0.0';
					} else if ( substr_count($local_version, '.') == 1 ) {
						// x.x -&gt; x.x.x.x
						$local_version = $local_version . '.0.0';
					} else if ( substr_count($local_version, '.') == 2 ) {
						// x.x.x -&gt; x.x.x.x
						$local_version = $local_version . '.0';
					}
					$local_version = str_replace(&quot;.&quot;, &quot;&quot;, $local_version);
					//$local_version = substr($local_version,0,1) . '.' . substr($local_version,1,5);
					$local_version = '0.' . $local_version;
					//---------------//
					if ( substr_count($remote_version, '.') == 0 ) {
						// x -&gt; x.x.x.x
						$remote_version = $remote_version . '.0.0.0';
					} else if ( substr_count($remote_version, '.') == 1 ) {
						// x.x -&gt; x.x.x.x
						$remote_version = $remote_version . '.0.0';
					} else if ( substr_count($remote_version, '.') == 2 ) {
						// x.x.x -&gt; x.x.x.x
						$remote_version = $remote_version . '.0';
					}
					$remote_version = str_replace(&quot;.&quot;, &quot;&quot;, $remote_version);
					//$remote_version = substr($remote_version,0,1) . '.' . substr($remote_version,1,5);
					$remote_version = '0.' . $remote_version;
					//---------------//
					//echo $remote_version . ' - ' . $local_version . '&lt;br /&gt;';
					if ( $remote_version &gt; $local_version ) {
						add_action('admin_notices','theme_new_ver');
						add_option($theme_sn.'_new_ver',true);
					} else {
						del_option($theme_sn.'_new_ver');
					}
				} else {
					add_action('admin_notices','theme_new_ver');
					add_option($theme_sn.'_new_ver',true);
				}
			}
		} else {
			echo &quot;Can't Connect to update server&quot;;
		}
}	

function theme_new_ver() {
	global $theme_update_notice, $pagenow;
	if ( $pagenow == &quot;themes.php&quot;) {
?&gt;
		&lt;div id=&quot;message&quot; class=&quot;updated fade&quot;&gt;
		&lt;?php echo $theme_update_notice; ?&gt;
		&lt;/div&gt;
&lt;?php
	}
}
?&gt;
</pre>
<p>Then the update-notice.php file will need to be included from your functions.php file in your theme.  </p>
<pre class="brush: php; light: true; title: ; notranslate">
if ( is_admin() ) {
    include_once (TEMPLATEPATH . '/update-notice.php');
}
</pre>
<p>There are a few values in the top of the file that would need to change to reflect the theme it&#8217;s checking for.  The theme-version.txt on the remote server simply contains the theme version that is available for release.  The script checks and if it&#8217;s lower than the remote version it will display the $theme_update_notice variable with the text that you specify on the top of the themes.php page.</p>
<pre class="brush: php; title: ; notranslate">
/*********************VALUES BELOW NEED TO BE CHANGED*************************/
$theme_sn= &quot;theme-short-name&quot;;
//Theme's short name for adding options to database
$remote_file = &quot;http://address-to-remote-server/theme-version.txt&quot;;
//Address of remote file with version number
$update_check_int = 24;
// Time in hours to check file for new version
$theme_update_notice =&quot;&lt;p&gt;New theme version available.  Please visit here for the download.&lt;/p&gt;&quot;;
//Text for notice displayed to user about new version
/*********************END EDITING*********************************************/
</pre>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/T1PsDDv0RmdW-Zm7VRSSYrB6_eA/0/da"><img src="http://feedads.g.doubleclick.net/~a/T1PsDDv0RmdW-Zm7VRSSYrB6_eA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/T1PsDDv0RmdW-Zm7VRSSYrB6_eA/1/da"><img src="http://feedads.g.doubleclick.net/~a/T1PsDDv0RmdW-Zm7VRSSYrB6_eA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=78_eoGq57JU:-RLfGNh838s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=78_eoGq57JU:-RLfGNh838s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=78_eoGq57JU:-RLfGNh838s:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=78_eoGq57JU:-RLfGNh838s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=78_eoGq57JU:-RLfGNh838s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=78_eoGq57JU:-RLfGNh838s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/78_eoGq57JU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/09/wordpress-theme-developers-tip-theme-update-noticifications/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/09/wordpress-theme-developers-tip-theme-update-noticifications?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-theme-developers-tip-theme-update-noticifications</feedburner:origLink></item>
		<item>
		<title>Summer Time Rush</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/ww09rA6RgTM/summer-time-rush</link>
		<comments>http://clark-technet.com/2010/06/summer-time-rush#comments</comments>
		<pubDate>Wed, 23 Jun 2010 23:24:28 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Aside]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=485</guid>
		<description><![CDATA[<p>Summer time is a busy time for me at work and updates will be sparse but I will still be answering questions on the support forum. Please stay tuned for updates. If you&#8217;d like please subscribe to my RSS feed &#8230; <a href="http://clark-technet.com/2010/06/summer-time-rush">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Summer time is a busy time for me at work and updates will be sparse but I will still be answering questions on the support forum.  Please stay tuned for updates.  If you&#8217;d like please subscribe to my RSS feed for updates.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/0H0pKPKcU_MZlu9pq6mDtvQ-EHQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/0H0pKPKcU_MZlu9pq6mDtvQ-EHQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0H0pKPKcU_MZlu9pq6mDtvQ-EHQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/0H0pKPKcU_MZlu9pq6mDtvQ-EHQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ww09rA6RgTM:-UwjhgPRkYM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ww09rA6RgTM:-UwjhgPRkYM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=ww09rA6RgTM:-UwjhgPRkYM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ww09rA6RgTM:-UwjhgPRkYM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=ww09rA6RgTM:-UwjhgPRkYM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=ww09rA6RgTM:-UwjhgPRkYM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/ww09rA6RgTM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/06/summer-time-rush/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/06/summer-time-rush?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=summer-time-rush</feedburner:origLink></item>
		<item>
		<title>WordPress Theme Developers Tip – Automatic Feed Links in 3.0</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/UXmUynzG8cY/wordpress-theme-developers-tip-automatic-feed-links-in-3-0</link>
		<comments>http://clark-technet.com/2010/05/wordpress-theme-developers-tip-automatic-feed-links-in-3-0#comments</comments>
		<pubDate>Thu, 20 May 2010 17:12:55 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=483</guid>
		<description><![CDATA[<p>Version 3.0 of WordPress is due out soon, and theme developers are getting geared up to implement the new features. The new menu system has received much attention as it&#8217;s one of the biggest changes, besides the merge of the &#8230; <a href="http://clark-technet.com/2010/05/wordpress-theme-developers-tip-automatic-feed-links-in-3-0">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2008/10/wordpresstip.jpg" alt="" title="WordPress" width="75" height="75" class="alignleft size-full wp-image-316" />Version 3.0 of WordPress is due out soon, and theme developers are getting geared up to implement the new features.  The new menu system has received much attention as it&#8217;s one of the biggest changes, besides the merge of the WPMU code, that most users will use.  </p>
<p>One feature that I didn&#8217;t know exists until now is automatic feed links which will output all the different feed links to current page the users is on to the header.  It was added in 2.8 but has been changed how it works for 3.0.  For example on a single post page the main blog feed, and the single post comment feed links are added to the header allowing a user to easily subscribe to the either feed.  Another is on a category archive page the feed for the main blog, as well as the feed for all posts in that category are added.  So I&#8217;ve got this feature added to my Techozoic theme but to maintain backwards compatibility I though I would share the simple function I came up with.<br />
<span id="more-483"></span><br />
To enable the automatic feed links it&#8217;s very simple, just use the add_theme_support function with the automatic-feed-links as the parameter like this into your functions.php.</p>
<pre class="brush: php; light: true; title: ; notranslate">
if(function_exists('add_theme_support')) {
	add_theme_support('automatic-feed-links');
	//WP Auto Feed Links
}
</pre>
<p>It&#8217;s critical to test if a function exists before calling it to prevent errors.</p>
<pre class="brush: php; title: ; notranslate">
function remove_feed_link(){
	global $wp_version;
	$default_feed_link = '&lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;'. get_bloginfo('name'). ' RSS Feed&quot; href=&quot;'. get_bloginfo('rss2_url') .'&quot; /&gt;';
	if($wp_version &lt; 3){
		if(function_exists(automatic_feed_links)){
			$output .= automatic_feed_links();
		} else {
			$output .= $default_feed_link;
		}
	}
	echo $output;
}
	add_action('wp_head', 'remove_feed_link');
</pre>
<p>Most theme authors include the default RSS feed in the header of their themes, but the new feature requires those links to be removed to work correctly.  The trick to the automatic-feed-links is it&#8217;s a new 3.0 feature but the add_theme_support has exists since 2.9 so you can&#8217;t use the same check to disable your old feed links from the header.  But what you can do is to check if the check the wp_version variable is less than 3, and if it is use either automatic_feed_links function or echo your own RSS link.  Then you just add your function to be called with wp_head using add_action.</p>
<p>Futher Reference:<br />
<a href="http://codex.wordpress.org/Function_Reference/add_theme_support">add_theme_support Codex Article</a></p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/0TxtPSTwfcMWlZSitw1svaXXhWE/0/da"><img src="http://feedads.g.doubleclick.net/~a/0TxtPSTwfcMWlZSitw1svaXXhWE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0TxtPSTwfcMWlZSitw1svaXXhWE/1/da"><img src="http://feedads.g.doubleclick.net/~a/0TxtPSTwfcMWlZSitw1svaXXhWE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=UXmUynzG8cY:aQw5-PK6a3g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=UXmUynzG8cY:aQw5-PK6a3g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=UXmUynzG8cY:aQw5-PK6a3g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=UXmUynzG8cY:aQw5-PK6a3g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=UXmUynzG8cY:aQw5-PK6a3g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=UXmUynzG8cY:aQw5-PK6a3g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/UXmUynzG8cY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/05/wordpress-theme-developers-tip-automatic-feed-links-in-3-0/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/05/wordpress-theme-developers-tip-automatic-feed-links-in-3-0?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-theme-developers-tip-automatic-feed-links-in-3-0</feedburner:origLink></item>
		<item>
		<title>HTC Incredible – Name That Fits</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/PwC09iCH1Tw/htc-incredible-name-that-fits</link>
		<comments>http://clark-technet.com/2010/05/htc-incredible-name-that-fits#comments</comments>
		<pubDate>Tue, 18 May 2010 16:32:15 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[HTC]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=476</guid>
		<description><![CDATA[<p>I've recently traded my trusted Blackberry smartphone for an HTC Droid Incredible and I have to say the name truly fits this tiny powerhouse called a phone.  The biggest feature that I'm loving right now is an usable app store, if you've every used Blackberry's app world you'll know what a painful experience that can be. <a href="http://clark-technet.com/2010/05/htc-incredible-name-that-fits">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2010/05/htc-droid-incredible-2-300x386-116x150.jpg" alt="" title="htc-droid-incredible" width="116" height="150" class="alignleft size-thumbnail wp-image-477" />I&#8217;ve recently traded my trusted Blackberry 8330 smartphone for a HTC Droid Incredible and I have to say the name truly fits this tiny powerhouse called a phone.  The biggest feature that I&#8217;m loving right now is an usable app store, if you&#8217;ve every used Blackberry&#8217;s app world you&#8217;ll know what a painful experience that can be. </p>
<p>I&#8217;m also loving the camera, 8 megapixels is as same as my Canon DSLR.  Browsing the web is now a dream as well, the included browser even supports Flash albeit in a lite format.  Another handy feature is the speech recognition is very good and very well integrated into the built in Google search, allowing very quick searches via speaking rather than typing.  </p>
<p>Although I did have some doubts with the onscreen keyboard, I have fat fingers and always struggled to type on the tiny Blackberry keyboard, but the key recognition is spot on.  The predictive text is also very good and eases some of the typing.  Battery life can be a bit iffy for a full day of use, but as powerful as the phone is I&#8217;ll certainly trade having to charge it more often for the power.<span id="more-476"></span><br />
<div id="attachment_481" class="wp-caption aligncenter" style="width: 310px"><a href="http://static.clark-technet.com/wp-content/uploads/2010/05/clouds1.jpg"><img src="http://static.clark-technet.com/wp-content/uploads/2010/05/clouds1-300x179.jpg" alt="" title="Clouds" width="300" height="179" class="size-medium wp-image-481" /></a><p class="wp-caption-text">Photo Taken with HTC Incredible</p></div></p>
<h3>HTC Incredible Notable Specs</h3>
<ul>
<li>1Ghz Processor</li>
<li>512MB RAM</li>
<li>8GB Internal Memory/expandble to 40GB with 32GB microSD card</li>
<li>8 MegaPixel Camera with video</li>
<li>480 x 800 OLED Touchscreen</li>
<li>Android 2.1 with HTC Sense enhancements</li>
<li>WiFi</li>
<li>GPS Navigation</li>
<li>Speech Recoginition</li>
<li>Accelerometer</li>
</ul>
<p>If you have Verizon and in the market for a new smartphone I believe that the Incredible is the way to go.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/ZxHrZ0jL0C2IqXybssI0diCQ-IA/0/da"><img src="http://feedads.g.doubleclick.net/~a/ZxHrZ0jL0C2IqXybssI0diCQ-IA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ZxHrZ0jL0C2IqXybssI0diCQ-IA/1/da"><img src="http://feedads.g.doubleclick.net/~a/ZxHrZ0jL0C2IqXybssI0diCQ-IA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=PwC09iCH1Tw:4MuaAOV4WEE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=PwC09iCH1Tw:4MuaAOV4WEE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=PwC09iCH1Tw:4MuaAOV4WEE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=PwC09iCH1Tw:4MuaAOV4WEE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=PwC09iCH1Tw:4MuaAOV4WEE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=PwC09iCH1Tw:4MuaAOV4WEE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/PwC09iCH1Tw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/05/htc-incredible-name-that-fits/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/05/htc-incredible-name-that-fits?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=htc-incredible-name-that-fits</feedburner:origLink></item>
		<item>
		<title>Transfer to new hosting provider</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/bKvErBF6oFo/transfer-to-new-hosting-provider</link>
		<comments>http://clark-technet.com/2010/05/transfer-to-new-hosting-provider#comments</comments>
		<pubDate>Fri, 07 May 2010 19:21:02 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Aside]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=470</guid>
		<description><![CDATA[<p>Over the weekend I will be transitioning over to my new hosting provider, DreamHost. During this time this site will be down, sorry for any inconvenience. I will update this post after the transfer is complete. Update: Transfer complete, if &#8230; <a href="http://clark-technet.com/2010/05/transfer-to-new-hosting-provider">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>Over the weekend I will be transitioning over to my new hosting provider, DreamHost.  During this time this site will be down, sorry for any inconvenience.  I will update this post after the transfer is complete.</p>
<p><strong>Update:</strong> Transfer complete, if you notice any problems please let me know.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/k5rZp0mJe40kS2_pSaddnjS5S-c/0/da"><img src="http://feedads.g.doubleclick.net/~a/k5rZp0mJe40kS2_pSaddnjS5S-c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/k5rZp0mJe40kS2_pSaddnjS5S-c/1/da"><img src="http://feedads.g.doubleclick.net/~a/k5rZp0mJe40kS2_pSaddnjS5S-c/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=bKvErBF6oFo:aj3ViohV5Ao:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=bKvErBF6oFo:aj3ViohV5Ao:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=bKvErBF6oFo:aj3ViohV5Ao:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=bKvErBF6oFo:aj3ViohV5Ao:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=bKvErBF6oFo:aj3ViohV5Ao:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=bKvErBF6oFo:aj3ViohV5Ao:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/bKvErBF6oFo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/05/transfer-to-new-hosting-provider/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/05/transfer-to-new-hosting-provider?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=transfer-to-new-hosting-provider</feedburner:origLink></item>
		<item>
		<title>Techozoic Fluid now on Google Code</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/6VC36tYNkYg/techozoic-fluid-now-on-google-code</link>
		<comments>http://clark-technet.com/2010/04/techozoic-fluid-now-on-google-code#comments</comments>
		<pubDate>Fri, 23 Apr 2010 20:08:54 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=466</guid>
		<description><![CDATA[<p>I've just setup proper project management for my <a href="http://code.google.com/p/techozoic-fluid/">Techozoic Fluid</a> theme using <a href="http://code.google.com/">Google Code</a>.
 <a href="http://clark-technet.com/2010/04/techozoic-fluid-now-on-google-code">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/techozoic-fluid/"><img src="http://static.clark-technet.com/wp-content/uploads/2010/04/techozoic-logo.png" alt="Techozoic Fluid Logo" title="Techozoic Fluid" width="100" height="100" class="alignleft size-full wp-image-467" /></a>I&#8217;ve just setup proper project management for my Techozoic Fluid theme using <a href="http://code.google.com/">Google Code</a>.  I have also designed a logo for my theme.  If you would like to always have the latest version of Techozoic you may now use <a href="http://subversion.apache.org/faq.html">Subversion</a> to checkout a copy.  If you are like me and keep up with the latest WordPress nightly releases then you&#8217;ll know how to checkout code using svn.  I use Linux but I&#8217;m sure svn works the same for Windows as well.</p>
<p>View the <a href="http://code.google.com/p/techozoic-fluid/">Techozoic Fluid</a> project page.</p>
<h3>Svn Checkout Instructions</h3>
<div style="margin-left:10px"><code>#cd /path/to/your/blog/wp-content/themes/<br />
#svn checkout http://techozoic-fluid.googlecode.com/svn/trunk/ techozoic-fluid<br />
</code>
</div>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/DTWzRWYTsMoxfKK1v3g4WXtdNLo/0/da"><img src="http://feedads.g.doubleclick.net/~a/DTWzRWYTsMoxfKK1v3g4WXtdNLo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DTWzRWYTsMoxfKK1v3g4WXtdNLo/1/da"><img src="http://feedads.g.doubleclick.net/~a/DTWzRWYTsMoxfKK1v3g4WXtdNLo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6VC36tYNkYg:D2N_yVCiExA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6VC36tYNkYg:D2N_yVCiExA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=6VC36tYNkYg:D2N_yVCiExA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6VC36tYNkYg:D2N_yVCiExA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=6VC36tYNkYg:D2N_yVCiExA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6VC36tYNkYg:D2N_yVCiExA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/6VC36tYNkYg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/04/techozoic-fluid-now-on-google-code/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/04/techozoic-fluid-now-on-google-code?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=techozoic-fluid-now-on-google-code</feedburner:origLink></item>
		<item>
		<title>WordPress Theme Developers Tip – Adding Theme Menu</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/dwZptPcoFxg/wordpress-theme-developers-tip-adding-theme-menu</link>
		<comments>http://clark-technet.com/2010/03/wordpress-theme-developers-tip-adding-theme-menu#comments</comments>
		<pubDate>Fri, 26 Mar 2010 20:35:45 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=463</guid>
		<description><![CDATA[<p>Sometimes a theme just outgrows having one menu page for theme options.  Instead of adding a second page a separate menu might be best.  Outlined are the steps and functions needed for this.  Code examples are also shown. <a href="http://clark-technet.com/2010/03/wordpress-theme-developers-tip-adding-theme-menu">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve already discussed how to add an <a href="http://clark-technet.com/2010/01/wordpress-theme-options-framework-ver-2">theme options page</a>.  Sometimes, as my theme has, a theme just outgrows having one menu page for everything.  Instead of adding a second page under the Appearance Menu a separate menu might be best.  The below code is an example of the functions required to use a separate menu.<br />
<span id="more-463"></span></p>
<pre class="brush: php; title: ; notranslate">
function mytheme_admin_page() {
	add_menu_page(&quot;Theme Options&quot;, &quot;Top Level Menu Name&quot;, 'edit_themes', 'menu_display_function','','',61);
	add_submenu_page('menu_display_function' ,&quot;Sub Page Title 1&quot;, &quot;Sub Page Menu Text&quot;, 'edit_themes', 'menu_display_function', 'sub_men_display_function');
	add_submenu_page('menu_display_function' ,&quot;Sub Page Title 2&quot;, &quot;Sub Page Menu Text 2&quot;, 'edit_themes', 'menu_display_function', 'sub_men_display_function_2');
}
menu_display_function(){
echo &quot;Top Level Menu Page&quot;;
}
sub_menu_display_function(){
echo &quot;Sub Page Level Page&quot;;
}
sub_menu_display_function_2(){
echo &quot;Sub Page Level Page 2&quot;;
}
add_action('admin_menu', 'mytheme_admin_page');
</pre>
<p>So what does this code do the add_menu_page function adds the top level container, this is like the Appearance, Plugins, Users &#8230; menu that already exist.</p>
<pre class="brush: php; light: true; title: ; notranslate">add_menu_page(page_title, menu_title, capability, handle, [function], [icon_url],menu_order);</pre>
<p>The parameters are </p>
<blockquote><p><strong>page_title</strong><br />
    Text that will go into the HTML page title for the page when the menu is active.<br />
<strong>menu_title</strong><br />
    The on-screen name text for the menu.<br />
<strong>capability</strong><br />
    The minimum capability required to display and use this menu page. Whilst for legacy reasons, you may also use user level â€“ the usage of user level is discouraged for future compatibility and has been deprecated since WordPress 1.5.<br />
<strong>handle/file</strong><br />
    If the function parameter is omitted, this should be the PHP file that handles the display of the menu page content. Otherwise, and more commonly, it will be a unique &#8220;handle&#8221; for the page. e.g. &#8220;my-awesome-plugin-settings&#8221;<br />
<strong>function</strong><br />
    The function that displays the page content for the menu page.<br />
<strong>icon_url</strong><br />
    The path to the icon for the menu, if not given default to a gear icon.<br />
<strong>menu_order</strong><br />
    A number for where the new menu should be inserted, defaults to below all other menus.  The 61 in the example code will place the menu right below the Appearance menu, which should work nicely for a theme admin menu.
</p></blockquote>
<p>To add the sub pages to the menu you call the add_submenu_page function.</p>
<pre class="brush: php; light: true; title: ; notranslate">add_submenu_page(parent, page_title, menu_title, capability required, file/handle, [function]);</pre>
<p>Parameters:</p>
<blockquote><p>
<strong>parent</strong><br />
    The filename of the core WordPress admin file that supplies the top-level menu in which you want to insert your submenu, or your plugin file if this submenu is going into a custom top-level menu.<br />
<strong>page_title</strong><br />
    Text that will go into the HTML page title for the page when the submenu is active.<br />
<strong>menu_title</strong><br />
    The on-screen name text for the submenu.<br />
<strong>capability</strong><br />
    The minimum capability required to display and use this menu page. Whilst for legacy reasons, you may also use user level the usage of user level is discouraged for future compatibility and has been deprecated since WordPress 1.5.<br />
file<br />
    For existing WordPress menus, the PHP file that handles the display of the menu page content. For submenus of a custom top-level menu, a unique identifier for this sub-menu page. </p>
<p>In situations where a plugin is creating its own top-level menu, the first submenu will normally have the same link title as the top-level menu and hence the link will be duplicated. The duplicate link title can be avoided by calling the add_submenu_page function the first time with the parent and file parameters being given the same value.</p>
<p><strong>function</strong><br />
    The function that displays the page content for the menu page. </p></blockquote>
<p>This is a very quick example of how this is done.  I will be updating my Theme Options Framework to include this as an option and to show how this is used in practice.  I&#8217;ve also done this for my <a href="http://http://wordpress.org/extend/themes/techozoic-fluid">Techozoic Fluid 1.8.6</a> theme which should be available soon.</p>
<p>Resources:
<ul>
<li><a href="http://codex.wordpress.org/Adding_Administration_Menus">Adding Administration Menus &#8211; WordPress Codex</a></li>
<li>
<a href="http://http://wpengineer.com/top-level-menu-in-wordpress-27/">Top Level Menu Page &#8211; WPEngineer</a></li>
</ul>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/OlydGcTs69rb5OLcc_q_2FgY8nA/0/da"><img src="http://feedads.g.doubleclick.net/~a/OlydGcTs69rb5OLcc_q_2FgY8nA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OlydGcTs69rb5OLcc_q_2FgY8nA/1/da"><img src="http://feedads.g.doubleclick.net/~a/OlydGcTs69rb5OLcc_q_2FgY8nA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=dwZptPcoFxg:6sZsN-VDeRY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=dwZptPcoFxg:6sZsN-VDeRY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=dwZptPcoFxg:6sZsN-VDeRY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=dwZptPcoFxg:6sZsN-VDeRY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=dwZptPcoFxg:6sZsN-VDeRY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=dwZptPcoFxg:6sZsN-VDeRY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/dwZptPcoFxg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/03/wordpress-theme-developers-tip-adding-theme-menu/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/03/wordpress-theme-developers-tip-adding-theme-menu?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-theme-developers-tip-adding-theme-menu</feedburner:origLink></item>
		<item>
		<title>Server Migration – Part 2</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/6AZXaRk5Q5s/server-migration-part-2</link>
		<comments>http://clark-technet.com/2010/02/server-migration-part-2#comments</comments>
		<pubDate>Thu, 11 Feb 2010 21:30:24 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=450</guid>
		<description><![CDATA[<p>I&#8217;ve finished the server migration and everything was successful and only maybe 30-45 minutes of downtime. The old computer I&#8217;m using for a server got an upgrade while I was migrating as well. A little faster processor and doubled the &#8230; <a href="http://clark-technet.com/2010/02/server-migration-part-2">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finished the server migration and everything was successful and only maybe 30-45 minutes of downtime.  The old computer I&#8217;m using for a server got an upgrade while I was migrating as well.  A little faster processor and doubled the memory in it.  </p>
<p>I did run into a problem with ESXi, apparently since the motherboard was older in the server ESXi wouldn&#8217;t install correctly onto the drive I had in there, and the motherboard also didn&#8217;t support booting from USB to install ESXi to a flash drive, as suggested by a few sites.  So I scraped the idea for ESXi and installed CentOS 5.4 on the server without any desktop managers and disabled everything except a few essential services, this netted a server using less than 200 MB of memory.  Then I installed VMWare Server 2 on it and transferred my VM image over to the server.  Although there is more overhead having a complete OS and VM Server for my purposes it should be fine.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/29lwMrP4HlXmcwtMfmGrOlGt028/0/da"><img src="http://feedads.g.doubleclick.net/~a/29lwMrP4HlXmcwtMfmGrOlGt028/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/29lwMrP4HlXmcwtMfmGrOlGt028/1/da"><img src="http://feedads.g.doubleclick.net/~a/29lwMrP4HlXmcwtMfmGrOlGt028/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6AZXaRk5Q5s:5AidtooQml8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6AZXaRk5Q5s:5AidtooQml8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=6AZXaRk5Q5s:5AidtooQml8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6AZXaRk5Q5s:5AidtooQml8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=6AZXaRk5Q5s:5AidtooQml8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=6AZXaRk5Q5s:5AidtooQml8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/6AZXaRk5Q5s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/02/server-migration-part-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/02/server-migration-part-2?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=server-migration-part-2</feedburner:origLink></item>
		<item>
		<title>Server Migration – Part 1</title>
		<link>http://feedproxy.google.com/~r/clark-technet/bRdG/~3/pGwejz3_-pM/server-migration-part-1</link>
		<comments>http://clark-technet.com/2010/02/server-migration-part-1#comments</comments>
		<pubDate>Thu, 04 Feb 2010 21:05:37 +0000</pubDate>
		<dc:creator>Jeremy Clark</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://clark-technet.com/?p=447</guid>
		<description><![CDATA[<p>Before this week, my server that handles this website was beginning to show signs that it need a fresh start. It&#8217;s currently running CentOS 4.4, so I decided it&#8217;s time to upgrade. So I grabbed the latest DVD iso from &#8230; <a href="http://clark-technet.com/2010/02/server-migration-part-1">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.clark-technet.com/wp-content/uploads/2008/09/linux-logo.jpg" alt="" title="Tux" width="125" height="150" class="alignleft size-full wp-image-314" /><span class="alignright"><script type="text/javascript"><!--
google_ad_client = "pub-5880865034974171";
/* 125x125, created 3/13/08 */
google_ad_slot = "7590392760";
google_ad_width = 125;
google_ad_height = 125;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></span>Before this week, my server that handles this website was beginning to show signs that it need a fresh start.  It&#8217;s currently running CentOS 4.4, so I decided it&#8217;s time to upgrade.  So I grabbed the latest DVD iso from CentOS for 5.4 and installed a clean virtual machine on my desktop.  I&#8217;ve just finished migrating everything from the old server to the virtual machine.  I&#8217;ve also done away with the cobbled together mail solution of sendmail, dovecot, and assp I had running in favor of a very nice open-source Exchange-type replacement called <a href="http://www.zimbra.com">Zimbra</a>.  </p>
<p>The next step after a couple of days of testing will be wiping the old drive in the old server and installing VMWare ESXi on it.  I decided to virtualize to make it easier to upgrade in the future when I decide to build a new desktop.  I&#8217;ll retire my current desktop and recommission it as the new server and having everything virtualized should make the transition much smoother.  I&#8217;m hoping downtime will be minimal if any at all.</p>
<p>&copy; <a href="http://clark-technet.com">Jeremy Clark</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/Y7hQKyu8ScNcgqhYeOQnDZ7lAhg/0/da"><img src="http://feedads.g.doubleclick.net/~a/Y7hQKyu8ScNcgqhYeOQnDZ7lAhg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Y7hQKyu8ScNcgqhYeOQnDZ7lAhg/1/da"><img src="http://feedads.g.doubleclick.net/~a/Y7hQKyu8ScNcgqhYeOQnDZ7lAhg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=pGwejz3_-pM:4NVoL1Ca1pQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=pGwejz3_-pM:4NVoL1Ca1pQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=pGwejz3_-pM:4NVoL1Ca1pQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=pGwejz3_-pM:4NVoL1Ca1pQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?i=pGwejz3_-pM:4NVoL1Ca1pQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/clark-technet/bRdG?a=pGwejz3_-pM:4NVoL1Ca1pQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/clark-technet/bRdG?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/clark-technet/bRdG/~4/pGwejz3_-pM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clark-technet.com/2010/02/server-migration-part-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://clark-technet.com/2010/02/server-migration-part-1?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=server-migration-part-1</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic
Database Caching 16/22 queries in 0.122 seconds using disk: basic
Content Delivery Network via static.clark-technet.com

Served from: clark-technet.com @ 2012-05-25 15:39:07 -->

