<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Cagintranet Web Design</title>
	<atom:link href="http://www.cagintranet.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cagintranet.com</link>
	<description>Pittsburgh Web Design » Cagintranet Web Design - Web Designer, Developer, Graphic Artist and Web 2.0 Guru</description>
	<pubDate>Mon, 23 Jun 2008 19:31:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>CSS Tip: Easy Cross Browser &#038; Valid CSS Text Shadows</title>
		<link>http://www.cagintranet.com/archive/css-tip-easy-cross-browser-valid-css-text-shadows/</link>
		<comments>http://www.cagintranet.com/archive/css-tip-easy-cross-browser-valid-css-text-shadows/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 13:42:49 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[standardization]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=84</guid>
		<description><![CDATA[
Photo Credit: Glockenblume

Although I am certain that I am not the only one doing this, I have developed an extremely easy way to get CSS text shadows without the need to use the wildly unsupported CSS property of text-shadow.


.post_title {
position:relative;
padding:10px 0 0 0;
}

.post_title h1 {
position:absolute;
top:2px;
left:2px;
font-size:30px;
color:#C9D8E9;
padding:0;
margin:0;
}

.post_title h6 {
position:absolute;
top:0;
left:0;
font-size:30px;
color:#4471A2;
padding:0;
margin:0;
}




	Lorem ipsum dolor sit amet consectetuer
	Lorem ipsum dolor sit [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/06/cssshadow.png" alt="" title="CSS Text Shadows" width="500" height="200" class="alignnone size-full wp-image-85" /></p>
<cite class="flickrcite" >Photo Credit: <a href="http://www.flickr.com/photos/glockenblume/">Glockenblume</a></cite>

<p>Although I am certain that I am not the only one doing this, I have developed an extremely easy way to get CSS text shadows without the need to use the wildly unsupported CSS property of <a href="http://www.quirksmode.org/css/textshadow.html">text-shadow</a>.</p>

<style type="text/css">
.post_title {
position:relative;
padding:10px 0 0 0;
}

.post_title h1 {
position:absolute;
top:2px;
left:2px;
font-size:30px;
color:#C9D8E9;
padding:0;
margin:0;
}

.post_title h6 {
position:absolute;
top:0;
left:0;
font-size:30px;
color:#4471A2;
padding:0;
margin:0;
}

</style>

<div class="post_title">
	<h1>Lorem ipsum dolor sit amet consectetuer</h1>
	<h6>Lorem ipsum dolor sit amet consectetuer</h6>
<p>&nbsp;</p>
<div class="clear"></div>
</div>

<p>The only problem that some people may see with this example is &#034;duplicate content&#034; because the title is shown twice in the HTML. I&#039;ve decided that sometimes when all you need is a simple text drop shadow, this is an acceptable problem. This technique is extremely easy, and I have used it on a couple sites of mine thus far with no cross-browser issues. </p>

<h3>The Code (HTML)</h3>
<pre><code class="html">&lt;div class=&quot;post_title&quot;&gt;
	&lt;h1&gt;Lorem ipsum dolor sit amet consectetuer&lt;/h1&gt;
	&lt;h6&gt;Lorem ipsum dolor sit amet consectetuer&lt;/h6&gt;
&lt;/div&gt;</code></pre>

<h3>The Code (CSS)</h3>
<pre><code class="css">.post_title {
position:relative;
font-family:arial;
}

.post_title h1 {
position:absolute;
top:2px;
left:2px;
font-size:30px;
color:#C9D8E9;
padding:0;
margin:0;
}

.post_title h6 {
position:absolute;
top:0;
left:0;
font-size:30px;
color:#4471A2;
padding:0;
margin:0;
}</code></pre>


]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/css-tip-easy-cross-browser-valid-css-text-shadows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to: Setting up Wordpress to Easily Function as a CMS</title>
		<link>http://www.cagintranet.com/archive/howto-wordpress-as-an-easy-cms/</link>
		<comments>http://www.cagintranet.com/archive/howto-wordpress-as-an-easy-cms/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 23:49:58 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=74</guid>
		<description><![CDATA[

	Photo Credit: tshein

I have done many projects over the last year or so that use Wordpress as the back end but not for the typical blog setup. Most websites setup like this (an example is my setup here) will feature the same design and layout thought the whole site, but the homepage will be a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/easycms.jpg" alt="" title="Easy CMS with Wordpress" width="500" height="199" class="alignnone size-full wp-image-75" /></p>
<cite class="flickrcite">
	Photo Credit: <a href="http://flickr.com/photos/drnewton/1810327362/" title="Photo Credit: tshein">tshein</a>
</cite>
<p>I have done many projects over the last year or so that use Wordpress as the back end but not for the typical blog setup. Most websites setup like this (an example is my setup here) will feature the same design and layout thought the whole site, but the homepage will be a static page with a blog component that is seemingly just another part of the site. </p>

<p>Wordpress gives us the ability to use it as a CMS to make a traditional website with a blog, all easily editable, and extremely easy to manage.</p>

<p>In this tutorial I will show you how to configure a Wordpress installation for just such a setup. None of this is particularly groundbreaking, but I thought a step-by-step tutorial on how to do it could possibly help someone out. I also offer some plugins that help streamline the WP admin interface for yourself or maybe your web-unsavvy client. </p>

<h3>1. The Install</h3>
<p>There is nothing new here - you still do the famous <a href="http://wordpress.org/docs/installation/5-minute/">5 minute install</a>. The only thing I do slightly different is to put all the Wordpress files into <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">their own directory</a> on the hosting server. After I do that, I then move the <em>.htaccess</em> and the modified <em>index.php</em> files from the Wordpress directory into the root of your hosting server.</p>

<p>This step is not necessary, but being the neat-freak that I am, I have made this a standard on all my Wordpress installs.</p>

<h3>2. Creating the Theme Templates</h3>
<p>Many times the traditional website has a homepage with a slightly different layout as the rest of the site. The rest of the static portion (pages) of site will most likely use the <em>single.php</em> and <em>page.php</em> template files, but to make the homepage unique, we need to create a new <em>homepage.php</em> template. The only thing other than your creativity required here is a php comment at the top of it like this:</p>
<pre><code class="php">&lt;?php
/*
Template Name: CMS Homepage
*/
?&gt;</code></pre>
<p>That was the homepage. But now what about the blog section of the site? </p>
<p>For this, we use the standard <em>index.php</em> template file. This file should look like any other <em>index.php</em> template file out there.</p>

<h3>3. Creating the Pages</h3>
<p>Next up is the page creation. Head on over to <em>Write > Pages</em> within your Wordpress administration panel and create two new pages. Title one of the new pages <strong>FRONTPAGE</strong> and the other <strong>POSTSPAGE</strong>. </p>

<p>Depending on whether your homepage.php template warrants it or not, you may or may not need to add text to the page. Many times, these <strong>FRONTPAGE</strong> and <strong>POSTPAGE</strong> pages are just dummy placeholders and require no text or descriptive title.</p>

<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/cms-templates.gif" alt="" title="CMS Templates" width="500" class="alignnone size-full" /></p>

<p>When creating the <strong>FRONTPAGE</strong> page, scroll down to the bottom and open the widget for &#034;Page Template.&#034; Within there, you should see the new template we just created called <strong>CMS Homepage</strong>. Choose <strong>CMS Homepage</strong> and save. </p>



<h3>4. Setting the Options</h3>
<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/cms-settings.gif" alt="" title="CMS Settings" width="500" height="140" class="alignnone size-full wp-image-76" /></p>
<p>The final step is to change the &#034;Front page displays&#034; option within your <em>Settings > Reading</em> administration page. Choose the respective pages from the drop-down list that match what you are trying to accomplish.</p>

<p>Voila! You now have a static website setup with a blog. Like I said before, this isn&#039;t ground breaking, but it could be useful for those that are just starting out setting up Wordpress.</p>


<h3>Plugins that Help Transform Wordpress into a Basic CMS for your Clients</h3>
<p>Once the setup is complete, these plugins can help streamline the interface even more. Let me know if there are any more out there that may help that I am missing.</p>
<ul>
<li><p><strong><a href="http://pixopoint.com/simplecms/">Simple CMS</a></strong> - The Simple CMS WordPress plugin converts the WordPress blog tool into a basic CMS (Content Management System). Simple CMS removes all of the complicated blogging functionality which is not needed for a basic static website. This allows for easier use of the admin panel by non web designers.</p></li>
<li><p><strong><a href="http://anthologyoi.com/wordpress/plugins/wordpress-dashboard-editor.html">Dashboard Editor</a></strong> - the Dashboard is great souce of information sometimes, but for some clients we design for, it may not be the best use of space. Use this plugin to change that.</p></li>
<li><p><strong><a href="http://wordpress.org/extend/plugins/iwg-hide-dashboard/">IWG Hide Dashboard</a></strong> - If you don&#039;t want to use the Dashboard at all, this plugin gives you the possibility to hide the Dashboard for selected users. It requires the installation of the popular <a href="http://www.im-web-gefunden.de/wordpress-plugins/role-manager/">Role Manager Plugin</a>.</p></li>
<li><p><strong>Wordpress Admin Themes</strong> - Starting with Wordpress 2.5, you had the ability to install a theme for your admin backend. Some popular options are <a href="http://deanjrobinson.com/projects/fluency-admin/">Fluency</a> and <a href="http://www.teddyhwang.com/resources/leopardadmin/">Leopard</a></p></li>
<li><p><strong><a href="http://freshout.us/goodies/fresh-post-for-wordpress-wordpress-cms/">FreshPost</a></strong> - A plugin that pushes Wordpress towards a practical content management solution. It allows you to create multiple custom write panels, add custom fields and much more.</p></li>
<li><p><strong><a href="http://www.bin-co.com/tools/wordpress/plugins/article_templates/">Article Templates</a></strong> - If your posts are kind of unique in layout, and are a hassle to retype each time, consider this plugin. I use it, and I don&#039;t know how I ever ran <a href="http://pghdesigners.com">PghDesigners.com</a> without it.</p></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/howto-wordpress-as-an-easy-cms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WP 2.5 Update: How to Use Wordpress as a Membership Directory</title>
		<link>http://www.cagintranet.com/archive/wordpress-25-membership-directory/</link>
		<comments>http://www.cagintranet.com/archive/wordpress-25-membership-directory/#comments</comments>
		<pubDate>Tue, 27 May 2008 02:16:10 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=78</guid>
		<description><![CDATA[

A couple months ago I wrote up a tutorial on how to use Wordpress as a Membership Directory. The problem was that the tutorial was using Wordpress 2.3 and a week later version 2.5 came out. After letting Wordpress, to advance to version 2.5.1, I decided to upgrade the PghDesigners.com website.

To be honest, I was [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/pghdesigners2-5.jpg" alt="" title="PghDesigners.com 2.5 Upgrade" width="500" height="143" class="alignnone size-full wp-image-79" /></p>

<p>A couple months ago I wrote up a tutorial on how to use <a href="http://www.cagintranet.com/archive/wp-membership-directory/">Wordpress as a Membership Directory</a>. The problem was that the tutorial was using Wordpress 2.3 and a week later version 2.5 came out. After letting Wordpress, to advance to <a href="http://wordpress.org/download/">version 2.5.1</a>, I decided to upgrade the <a href="http://pghdesigners.com/">PghDesigners.com</a> website.</p>

<p>To be honest, I was really dreading doing this upgrade. </p>

<p>To my pleasure, after speaking with the very helpful <a href="http://www.houghtoninteractive.com/">Mike Houghton</a> of <a href="http://www.refreshtallahassee.org/">Refresh Tallahassee</a> (a WP Membership Site), I found that he had little-to-no problems with following my tutorial on a Wordpress 2.5.1 setup. This was great news for me, but he built it from the beginning on the new version of WP - and I would be upgrading. I knew things shouldn&#039;t be that much different, but I just didn&#039;t know what to expect.</p>

<h3>Upgrading the Plugins</h3>
<p>So after doing all the typical database backups, I started the process. I first uploaded all the new versions of the plugins that I had been using:</p>
<ul>
<li><a href="http://akismet.com/">Askimet</a> - For spam filtering</li>
<li><a href="http://www.bin-co.com/tools/wordpress/plugins/article_templates/">Article Templates</a> - To pre-configure my &#034;New Member&#034; post templates</li>
<li><a href="http://www.neotrinity.at/projects/#wordpress_generalstats">GeneralStats</a> - To show the number of members</li>
<li><a href="http://www.vtardia.com/improved-include-page/">Improved Include Page</a> - To insert the ads </li>
<li><a href="http://www.im-web-gefunden.de/wordpress-plugins/iwg-hide-dashboard/">IWG Hide Dashboard</a> - <em>Removed</em></li>
<li><a href="http://wordpress.org/extend/plugins/mail-from/">Mail From</a> - Changing a WP option</li>
<li><a href="http://www.im-web-gefunden.de/wordpress-plugins/role-manager/">Role Manager</a> - To specify which a Subscriber or a Designer could do within the dashboard</li>
<li><a href="http://lesterchan.net/portfolio/programming.php">WP-DBManager</a> - To make database backups</li>
<li><a href="http://www.dealsway.net/2007/11/05/wp-user-manager/">WP User Manager</a> - The heart of the site</li>
</ul>

<h3>Upgrading the Wordpress Core Files</h3>
<p>Then after uploading the new Wordpress files, I upgraded the database, and then started testing things. Everything looked good expect for the fact that anyone not with the Administrator Role couldn&#039;t sign in. Minor inconvenience, huh? </p>

<h3>The Problem &amp; The Fix</h3>
<p>After a lot of testing back and forth, I found that it was the <strong>Hide Dashboard</strong> and <strong>Role Manager</strong> plugins causing the problem. When these plugins were activated, users couldn&#039;t log in. When they were deactivated, things were back to normal.</p>

<p>The work around that I found was that after ditching the Hide Dashboard plugin all together, I could activate Role Manager only when I needed to make changes to the Roles. Much of this plugin&#039;s data is still in use even after you disable the plugin - so it worked out great. I was able to take advantage of this plugin&#039;s features, even if I had it disabled (which I needed to do - my members needed to be able to sign in). </p>]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/wordpress-25-membership-directory/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wordpress Tip: How to Create a Plugin to Help Automate a Complicated Theme</title>
		<link>http://www.cagintranet.com/archive/wordpress-tip-how-to-create-a-plugin-to-help-automate-a-complicated-theme/</link>
		<comments>http://www.cagintranet.com/archive/wordpress-tip-how-to-create-a-plugin-to-help-automate-a-complicated-theme/#comments</comments>
		<pubDate>Sun, 18 May 2008 12:24:03 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=68</guid>
		<description><![CDATA[

Most of my Wordpress design work has been for bloggers thus far. Designing a template for a blogger is usually straightforward and doesn&#039;t require much Wordpress hacking development work to get it what you want it to do. Most of that type of work is UI and design orientated.

But what about if you are a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/mythemeoptions.gif" alt="" title="mythemeoptions" width="500" height="150" class="alignnone size-full wp-image-70" /></p>

<p>Most of my Wordpress design work has been for bloggers thus far. Designing a template for a blogger is usually straightforward and doesn&#039;t require much Wordpress <strike>hacking</strike> development work to get it what you want it to do. Most of that type of work is UI and design orientated.</p>

<p>But what about if you are a newspaper or some other type of publisher? A newspaper always has a major headline or breaking news they want to show across the whole site in an instant. A magazine always has to show the details on the current issue available in stores. Wordpress doesn&#039;t natively give you the ability to create theme specific variables, and since more often than not this information can&#039;t be pulled directly from a page, post or link, the need for a <a href="http://codex.wordpress.org/Writing_a_Plugin#WordPress_Options_Mechanism">Wordpress Option</a> (or two) is in order. </p>

<h3>Steps to Create a Plugin that Saves Time &amp; Effort</h3>

<p>To be able to take advantage of Wordpress Options, you need to create a <a href="http://wordpress.org/extend/plugins/">Wordpress Plugin</a>. There is a lot to be scared of when creating one, but if you just buckle down and dissect the simplest of example plugins with me below, you will find that the work involved with learning and creating a plugin is well worth it.</p>

<h3>1. The Plugin Header</h3>
<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/mythemeoptions1.gif" alt="" title="mythemeoptions plugin" width="500" height="51" class="alignnone size-full wp-image-71" /></p>
<p>This is at the top of every plugin. The comments below are what eventually are pulled into the plugin page of the Wordpress install. This part is pretty un-intimidating and self explanatory.</p>

<pre><code class="php">&lt;?php
/*
Plugin Name: My Theme Options
Plugin URI: http://www.yourdomain.com/
Description: Sets My Theme&#39;s Options
Version: 1.0
Author: Joe Shmoe
Author URI: http://www.yourdomain.com/
*/</code></pre>

<h3>2. Install &amp; Uninstall Routines</h3>
<p>The first 3 lines here tell the plugin what to do when it is Activated, Deactivated and what function to run to create the dashboard admin page, respectively.</p>

<p>Below those 3 lines are the functions that create and delete the new Wordpress Options from the Wordpress database table.</p>

<p><strong>Remember: </strong>You will need to add to or change the options listed in the example to fit your theme&#039;s requirements and filter those changes down though the rest of the steps.</p>

<pre><code class="php">register_activation_hook(__FILE__,&quot;mythemeopt_install&quot;);
register_deactivation_hook(__FILE__,&quot;mythemeopt_uninstall&quot;);
add_action(&#39;admin_menu&#39;,&#39;mythemeopt_add_admin_page&#39;);

function mythemeopt_install () {
  	global $wpdb;
		require_once(ABSPATH . &#39;wp-admin/includes/upgrade.php&#39;);
		dbDelta($sql);
		
		add_option(&quot;mythemeopt_current_date&quot;, &#39;&#39;);
		add_option(&quot;mythemeopt_current_title&quot;, &#39;&#39;);
		add_option(&quot;mythemeopt_current_thumbnail&quot;, &#39;&#39;);
   	}
   	
function mythemeopt_uninstall () {
		delete_option(&quot;mythemeopt_current_date&quot;);
		delete_option(&quot;mythemeopt_current_title&quot;);
		delete_option(&quot;mythemeopt_current_thumbnail&quot;);
}</code></pre>

<h3>3a. Setting up the Dashboard Admin Page</h3>
<p>This function creates a top-level menu page, with the title of &#034;<strong>My Theme Options</strong>&#034; which runs the &#034;<strong>mythemeopt_options</strong>&#034; to create the admin page. You could probably get away with not changing any of this if you end up keeping my naming conventions.</p>

<pre><code class="php">function mythemeopt_add_admin_page () {
	add_menu_page(
		&#39;My Theme Options&#39;,
		&#39;My Theme Options&#39;,	
		&#39;manage_options&#39;,	
		__FILE__,	
		&#39;mythemeopt_options&#39;
	);  
}</code></pre>

<h3>3b. Updating the Dashboard Admin Page&#039;s Data</h3>
<p>This is the function that is called from the above setup function. It checks to see if an update has been submitted by the admin page, and if so: it updates the WP database table with the new values, otherwise it shows the page HTML. The only thing you need to make sure of here is that you include every option here that you declared up in Step 2.</p>

<pre><code class="php">function mythemeopt_options () {
	if ($_REQUEST[&#39;submit&#39;]) {
		mythemeopt_update_options();
	}
	echo &#39;&lt;div class=&quot;wrap&quot;&gt;&lt;h2&gt;My Theme Options&lt;/h2&gt;&#39;;
		mythemeopt_form();
	echo &#39;&lt;/div&gt;&#39;;	
}

function mythemeopt_update_options() {
	$updated = false;
	
	if ($_REQUEST[&#39;mythemeopt_current_date&#39;]) {
	update_option(&#39;mythemeopt_current_date&#39;, $_REQUEST[&#39;mythemeopt_current_date&#39;]);
	$updated = true;
	}
	if ($_REQUEST[&#39;mythemeopt_current_title&#39;]) {
	update_option(&#39;mythemeopt_current_title&#39;, $_REQUEST[&#39;mythemeopt_current_title&#39;]); 
	$updated = true;
	}
	if ($_REQUEST[&#39;mythemeopt_current_thumbnail&#39;]) {
	update_option(&#39;mythemeopt_current_thumbnail&#39;, $_REQUEST[&#39;mythemeopt_current_thumbnail&#39;]);
	$updated = true;
	}
	
	if ($updated) {
	echo &#39;&lt;div id=&quot;message&quot; class=&quot;updated fade&quot;&gt;&#39;;
	echo &#39;&lt;p&gt;My Theme Options Updated&lt;/p&gt;&#39;;
	echo &#39;&lt;/div&gt;&#39;;
	} else {
	echo &#39;&lt;div id=&quot;message&quot; class=&quot;error fade&quot;&gt;&#39;;
	echo &#39;&lt;p&gt;Unable to update My Theme Options&lt;/p&gt;&#39;;
	echo &#39;&lt;/div&gt;&#39;;
	}
}</code></pre>

<h3>3c. Creating the Dashboard Admin Form and Page</h3>
<p>This is the part of the plugin that generates the admin page&#039;s HTML. You have some leeway here as to what you make the page look like, and the only requirement is that you first pull the options from the WP database (first 3 lines), and then create the inputs for those options in the form below it.</p>

<pre><code class="php">function mythemeopt_form() {
	$mythemeopt_current_date = get_option(&#39;mythemeopt_current_date&#39;);
	$mythemeopt_current_title = get_option(&#39;mythemeopt_current_title&#39;);
	$mythemeopt_current_thumbnail = get_option(&#39;mythemeopt_current_thumbnail&#39;);

echo &quot;&lt;form method=\&quot;post\&quot;&gt;&quot;;
echo &quot;&lt;h3&gt;My Theme Requirements&lt;/h3&gt;&quot;;
echo &quot;&lt;p&gt;&lt;label&gt;Current Theme Date:&lt;/label&gt;&quot;;
echo &quot;&lt;input type=\&quot;text\&quot; name=\&quot;mythemeopt_current_date\&quot; value=\&quot;&quot;.$mythemeopt_current_date.&quot;\&quot; /&gt;&quot;;
echo &quot;&lt;label&gt;Current Theme Title:&lt;/label&gt;&quot;;
echo &quot;&lt;input type=\&quot;text\&quot; name=\&quot;mythemeopt_current_title\&quot; value=\&quot;&quot;.$mythemeopt_current_title.&quot;\&quot; /&gt;&quot;;
echo &quot;&lt;label&gt;Current Theme Thumbnail:&lt;/label&gt;&quot;;
echo &quot;&lt;input type=\&quot;text\&quot; name=\&quot;mythemeopt_current_thumbnail\&quot; value=\&quot;&quot;.$mythemeopt_current_thumbnail.&quot;\&quot; /&gt;&lt;/p&gt;&quot;;
echo &quot;&lt;p class=\&quot;submit\&quot;&gt;&lt;input type=\&quot;submit\&quot; name=\&quot;submit\&quot; value=\&quot;Update My Theme Options\&quot; /&gt;&lt;/p&gt;&quot;;
echo &quot;&lt;/form&gt;&quot;;
}</code></pre>

<h3>4. Finally, The Template Function!</h3>
<p>This is the function that ends up getting called from your theme&#039;s templates. In this example we accept one variable (<em>$myopt_request</em>) and use that variable to determine which option to display back to the template. Since we created only 3 options with this example plugin, we only have 3 potential function calls:</p>
<ul>
<li>One to display the <strong>date</strong>
<code class="php">&lt;?php echo mythemeopt(&#39;date&#39;); ?&gt;</code></li>
<li>One for the <strong>title</strong>
<code class="php">&lt;?php echo mythemeopt(&#39;title&#39;); ?&gt;</code></li>
<li>&#8230;and another for the <strong>thumbnail</strong> location
<code class="php">&lt;?php echo mythemeopt(&#39;thumbnail&#39;); ?&gt;</code></li>
</ul>

<pre><code class="php">function mythemeopt ($myopt_request) {
	
	global $wpdb;
	$myopt_date = get_option(&#39;mythemeopt_current_date&#39;);
	$myopt_title = get_option(&#39;mythemeopt_current_title&#39;);
	$myopt_thumbnail = get_option(&#39;mythemeopt_current_thumbnail&#39;);
	
	if ($myopt_request == &#39;date&#39;) { return $myopt_date; };
	if ($myopt_request == &#39;title&#39;) { return $myopt_title; };
	if ($myopt_request == &#39;thumbnail&#39;) { return $myopt_thumbnail; };
	
}</code></pre>

<p>When you create Wordpress options with a plugin like this, you have the ability to call for this information from just about anywhere. You are no longer bound to only working from within <a href="http://codex.wordpress.org/The_Loop">the Loop</a> and because of this, the possibilities are endless. </p>

<h3></h3>
<p>Go try it out&#8230; but before you go too far, here are a few of my plugin creation tips to make life a little easier:</p>
<ul>
<li><strong>Return, don&#039;t echo</strong> - I have made it a habit to return all my variables instead of echoing them. This will allow you to manipulate the data given to you as you see fit, whether it be changing the date format or putting it in an if statement.</li>
<li><strong>Admin not Options</strong> - I usually create an top-level menu page, and not a page within the Options submenu to make life easier for whoever is going to run it. You do this by using <a href="http://codex.wordpress.org/Adding_Administration_Menus">add_menu_page</a> as opposed to <a href="http://codex.wordpress.org/Creating_Options_Pages">add_options_page</a> in Step 2. You obviously don&#039;t need to do this to make the plugin work.</li>
</ul>

<h3>Download the Full Example</h3>
<p><a href="http://www.cagintranet.com/design/wp-content/uploads/2008/05/mythemeoptions.phps">Download this exact plugin</a> and try it for yourself.</p>


]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/wordpress-tip-how-to-create-a-plugin-to-help-automate-a-complicated-theme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wordpress Tip: 3 Awesome Custom Field Tricks</title>
		<link>http://www.cagintranet.com/archive/wordpress-tip-3-awesome-custom-field-tricks/</link>
		<comments>http://www.cagintranet.com/archive/wordpress-tip-3-awesome-custom-field-tricks/#comments</comments>
		<pubDate>Sat, 03 May 2008 22:36:32 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[popular]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=61</guid>
		<description><![CDATA[Here are 3 awesome ways to use Wordpress&#039;s custom fields. 
FYI: If you want an easy way to include default custom fields into your Write panel, try Rhymed Code&#039;s Custom Field GUI. If you have trouble with the download on his site, check out this comment for the fix.


1. A Custom Read More

Bryan Veloso&#039;s new [...]]]></description>
			<content:encoded><![CDATA[<p>Here are 3 awesome ways to use <a href="http://codex.wordpress.org/Using_Custom_Fields">Wordpress&#039;s custom fields</a>. </p>
<p><strong>FYI:</strong> If you want an easy way to include default custom fields into your Write panel, try <a href="http://rhymedcode.net/maintenance/custom-field-gui-for-wp-21/">Rhymed Code&#039;s Custom Field GUI</a>. If you have trouble with the download on his site, check out <a href="http://rhymedcode.net/maintenance/custom-field-gui-for-wp-21/?comments=true#comment-25124">this comment</a> for the fix.</p>


<h3>1. A Custom Read More</h3>
<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/readmorecustom.jpg" alt="" title="Custom Read More" width="500" height="180" class="alignnone size-full wp-image-62" /></p>
<p>Bryan Veloso&#039;s new <a href="http://avalonstar.com/">Avalonstar</a> design is a true work of art. While looking around the new site I saw that he has custom <a href="http://codex.wordpress.org/Customizing_the_Read_More">&#034;Read More&#034; messages</a>. I thought this would be cool to have it change on a per-post basis, so I found a quick way to do this using custom fields in Wordpress (Bryan uses <a href="http://www.djangoproject.com/">Django</a>, not Wordpress). </p>

<pre><code class="php">&lt;?php $custommore = get_post_meta($post-&gt;ID, &#39;custom_more&#39;, true); ?&gt;
&lt;?php if (!$custommore) { $custommore = &#39;Read More &amp;raquo;&#39;; } ?&gt;
&lt;?php the_content($custommore); ?&gt;</code></pre>

<p>All you need to do is replace your usual <em>the_content</em> template tag with this code. Then when you write a post, create a new custom field with the key of <em>custom_more</em>.</p>

<h3>2. Awesome Thumbnailed Recent Posts</h3>
<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/gizmodo-example.jpg" alt="" title="Gizmodo Example" width="499" height="176" class="alignnone size-full wp-image-58" /></p>
<p><a href="http://gizmodo.com/">Gizmodo</a> has a very cool feature within their header that shows their recent posts that can be replicated in Wordpress using custom fields.</p>
<p>First, create a thumbnail for each of your last 5 posts (and every subsequent post going forward). Upload it and then paste it&#039;s location into a new custom field with a key called <em>post_thumbnail</em>.</p>
<p>Next, create a new Loop somewhere in one of your template files that pulls this thumbnail in and displays it in an unordered list. Something like this:</p>

<pre><code class="php">&lt;ul class=&quot;thumb_recent&quot; &gt;
&lt;?php query_posts(&#39;showposts=5&#39;); ?&gt;
&lt;?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?&gt;
&lt;?php $thumbnail = get_post_meta($post-&gt;ID, &#39;post_thumbnail&#39;, true); ?&gt;
	&lt;li&gt;
		&lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot; title=&quot;&lt;?php the_title(); ?&gt;&quot;&gt;
		&lt;img src=&quot;&lt;?php echo $thumbnail; ?&gt;&quot; alt=&quot;&lt;?php the_title(); ?&gt;&quot; /&gt;
		&lt;span&gt;&lt;?php the_title(); ?&gt;&lt;/span&gt;&lt;/a&gt;
	&lt;/li&gt;
&lt;?php endwhile; endif; ?&gt;
&lt;/ul&gt;;</code></pre>

<p>This example also requires a little bit of CSS to make it look right, so add this to your stylesheet and you&#039;ll be all set!</p>

<p><a href="http://www.cagintranet.com/code/customfields/">View the Awesome Thumbnailed Recent Posts Example</a></p>

<pre><code class="css">ul.thumb_recent {
	list-style:none;
	margin:30px 0 0 0;
	padding:0;
	}
	
ul.thumb_recent li {
	float:left;
	margin:0 5px 0 0;
	position:relative;
	}
	
ul.thumb_recent li img {border:3px solid #7BA2C7;}
ul.thumb_recent li a:hover img {border:3px solid #666;}
ul.thumb_recent li span {
	text-decoration:none;
	display:none;
	text-align:left;
	position:absolute; 
	top:-15px;
	left:0px;
	width:400px;
	color:#666;
	text-transform:uppercase;
	font-family:arial;
	font-size:11px;
	}

ul.thumb_recent li a:hover span {display:block;}</code></pre>



<h3>3. Post Specific CSS Overrides</h3>
<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/05/customcss.gif" alt="" title="ABriefMessage.com" width="500" height="180" class="alignnone size-full wp-image-63" /></p><p><a href="http://abriefmessage.com/">A Brief Message</a> definitely has a unique look and feel to it. <a href="http://abriefmessage.com/2008/03/12/gordon/">Each</a> <a href="http://abriefmessage.com/2007/12/05/twemlow/">page</a> has subtle differences that are done by including a unique stylesheet for each post. Wordpress can offer the same type of flexibility by using a custom form to create an internal style sheet for each post.</p>
<p>Firstly, create a custom field called <em>post-css</em>. For its value, paste your new CSS. Here is an extremely simple example:</p>

<pre><code class="css">body { background:#333333 !important; }</code></pre>

<p>Note the <strong>!important</strong>. Some have argued that it is not necessary, but I feel that it is better to be safe than sorry in this case. The fact is that if the new CSS is declared below the one you are trying to overwrite in the same document, the last declared value should always take precedence. </p>

<p>The next step is to insert that custom field CSS into the <strong>header.php</strong> file. In that template file, find the line that declares your CSS stylesheet, and paste this code below it.</p>

<pre><code class="php">&lt;?php if (is_single()) { ?&gt;                                                           
&lt;?php while (have_posts()) : the_post(); ?&gt;                                        
&lt;?php $newcss = get_post_meta($post-&gt;ID, &#39;post-css&#39;, true); ?&gt;
&lt;style type=&quot;text/css&quot;&gt;   
                                                                                       
       echo $newcss;

&lt;/style&gt; 
&lt;?php endwhile; ?&gt;                                                                
&lt;?php rewind_posts(); ?&gt; 
&lt;?php } ?&gt;</code></pre>





]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/wordpress-tip-3-awesome-custom-field-tricks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Use Wordpress as a Membership Directory</title>
		<link>http://www.cagintranet.com/archive/wp-membership-directory/</link>
		<comments>http://www.cagintranet.com/archive/wp-membership-directory/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 07:00:00 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[popular]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=21</guid>
		<description><![CDATA[

UPDATE 5/26/08: I upgraded my membership directory to Wordpress version 2.5.1. There were little to no problems, so this tutorial is still completely valid for creating a membership directory with Wordpress.

UPDATE: This is a repost of a guest post I made earlier this year over at WPDesigner. I am reposting it here because of the [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/03/pghdesigners1.jpg" alt="" title="Pittsburgh Designers" width="500" height="143" class="alignnone size-full attachment wp-att-40" /></p>

<p><strong>UPDATE 5/26/08:</strong> <a href="http://www.cagintranet.com/archive/wordpress-25-membership-directory/">I upgraded my membership directory to Wordpress version 2.5.1</a>. There were little to no problems, so this tutorial is still completely valid for creating a membership directory with Wordpress.</p>

<p><strong>UPDATE:</strong> This is a repost of a guest post I made earlier this year over at <a href="http://www.wpdesigner.com/">WPDesigner</a>. I am reposting it here because of the neglect that has taken place recently over at WPDesigner. I will only be responding to questions on this article from now on. Thank you for your understanding. <em>(FYI: My WPDesigner guest post was an unpaid one, so I am in no way stealing from anyone here&#8230;)</em></p>

<p>This article was written by <a href="http://www.cagintranet.com/">Chris Cagle</a>.</p>

<p>Do you want to create a moderated <a href="http://pghdesigners.com/">membership directory</a> that showcases your member&#039;s information? Do you want it to be flexible, be very little work after initial setup, and use a world-class open source platform that you are already familiar with?</p>

<p>Your first thought might not be to use Wordpress for such a project, but since it already has an extremely easy way to accept, moderate and update registrations - it&#039;s a perfect candidate.</p>

<p>In this tutorial I will show you how I built a successful membership directory using nothing more than a standard Wordpress 2.3+ install and 2 very powerful plugins.</p>

<h3>The Plugin Installs</h3>

<p>The heart of the site is powered by two plugins.</p>

<p>First, use the <a href="http://www.dealsway.net/2007/11/05/wp-user-manager/">WP User Manager plugin from Dealsway</a> to add new fields to the user profiles. The install and setup is pretty straight forward - just activate the plugin and add any new fields you want via it’s own admin section. The information entered in these fields will become the information that will create the member&#039;s &#034;homepage.&#034;</p>

<p>Secondly, we use the famous <a href="http://www.im-web-gefunden.de/wordpress-plugins/role-manager/">Role Manager</a> plugin which restricts what your members can do once they are logged into your site. This is important because in order for a member to be granted their own author page, he or she needs to have made at least one post.</p>

<p>In my case, I didn&#039;t want my members to have the ability to post anything, just to only fill out their profile information. To get around this, I used the Role Manager plugin as-is, but changed the Author role to only have the rights <strong>Publish Posts</strong> and <strong>Read</strong>. (The <strong>Hide Dashboard</strong> capability you see in the screen shot is a function of the <a href="http://www.im-web-gefunden.de/wordpress-plugins/iwg-hide-dashboard/">IWG Hide Dashboard</a> plugin. It was an easy way to clean up the admin panel for my members.)</p>

<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/03/changerole.gif" alt="" title="Change User Role" width="500" height="112" class="alignnone size-full attachment wp-att-37" /></p>

<h3>Setting Wordpress Options</h3>

<p>After you have installed all the plugins, we need to get Wordpress ready for your new registrations.</p>

<p>In your Admin panel, under options, set your <strong>New User Default Role</strong> to <strong>Subscriber</strong>. This ensures that a member won&#039;t be given an author page until you &#034;approve&#034; and manually move them to the Author role. (A Subscriber can&#039;t make posts, an Author can.)</p>

<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/03/newuserdefault.gif" alt="" title="New User Default Setting" width="500" height="112" class="alignnone size-full attachment wp-att-39" /></p>

<p>Once a member has registered and filled out all the appropriate profile information, we need to &#034;approve&#034; that member. We do this by simply moving that member into the Author role and making a post on his or her behalf. I want each approved member to have made a post in order to create the New Member Feed <a href="http://feeds.feedburner.com/pghdesigners">[example]</a>. To post on behalf of that member, choose that member&#039;s name out of the dropdown list in the Post Author section in the sidebar before publishing their post.</p>

<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/03/chooseauthor.gif" alt="" title="Choose Author from dropdown list" width="500" height="143" class="alignnone size-full attachment wp-att-38" /></p>

<p>This post doesn&#039;t need to be anything spectacular. On Pittsburgh Designers, I simply write &#034;This business has been added as a member. Please visit their <a href="">Design Profile</a>.&#034;</p>

<p>There are other ways of doing this to make it slightly simpler, but I do it this way because I want to use Wordpress&#039;s default feed as a <strong>New Member Feed</strong>.</p>

<p>Your membership management duties are now done.</p>

<h3>Creating the Author Page</h3>

<p>All that&#039;s left now is the need to create the <em>author.php</em> template to display all this new member profile information that the WP User Manager plugin allowed us to accept.</p>

<p>For the sake of this tutorial, we only added 2 new fields to the member profile page: <em>business_name</em> and <em>business_owner</em>.</p>

<p>At the top of the <em>author.php</em> template we will add this code. Hint: Each new field you add will need to be declared here.</p>


<pre><code class="php">&lt;?php
/*
Template Name: Author Template
*/
global $wp_query;
$curauth = $wp_query-&gt;get_queried_object();
$key=&quot;wpum_&quot;.&quot;business_name&quot;;
$business_name = get_usermeta($curauth-&gt;ID, $key);
$key=&quot;wpum_&quot;.&quot;business_owner&quot;;
$business_owner = get_usermeta($curauth-&gt;ID, $key);
?&gt;</code></pre>

<p>Now right below that, in the body section of your template, we are going to add this data and markup to display it in a structured way:</p>

<pre><code class="php">&lt;?php get_header(); ?&gt; 
&lt;div id=&quot;bodycontent&quot; &gt; 
	&lt;div class=&quot;bodytext&quot; &gt; 
		&lt;h2&gt;&lt;?php echo $business_name; ?&gt;&lt;/h2&gt; 
		&lt;p&gt;The owner of this business is &lt;?php echo $business_owner; ?&gt;&lt;/p&gt; 
	&lt;/div&gt; 
&lt;/div&gt; 
&lt;?php get_sidebar(); ?&gt; 
&lt;?php get_footer(); ?&gt;</code></pre>

<p>The next step is to also show some of the default fields that the member entered within their profile. I only want to show the member&#039;s website address and About the user section, so we modify our template to look like this:</p>

<pre><code class="php">&lt;?php get_header(); ?&gt;
&lt;div id=&quot;bodycontent&quot; &gt;
	&lt;div class=&quot;bodytext&quot; &gt;
		&lt;h2&gt;&lt;?php echo $business_name; ?&gt;&lt;/h2&gt;
		&lt;p&gt;The owner of this business is &lt;?php echo $business_owner; ?&gt;&lt;/p&gt;
		&lt;p&gt;Website: &lt;a href=&quot;&lt;?php echo $curauth-&gt;user_url; ?&gt;&quot;&gt;&lt;?php echo $curauth-&gt;user_url;?&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt;About the Business: &lt;?php echo $curauth-&gt;description; ?&gt;&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;
&lt;?php get_sidebar(); ?&gt;
&lt;?php get_footer(); ?&gt;</code></pre>

<p>Hint: A full list of <em>$curauth-></em> calls can be viewed in the <a href="http://codex.wordpress.org/Author_Templates#Using_Author_Information">Wordpress Codex</a>.</p>

<p>Lastly, we want to do some basic error checking.</p>

<p>What would happen if the member didn&#039;t put anything in the <em>business_owner</em> field? In this case, we can just wrap that line in an if statement (…or any variable we want to protect against being blank):</p>

<pre><code class="php">&lt;?php if ($business_owner != null) { echo &quot;&lt;p&gt;The owner of this business is &quot;.$business_owner.&quot;&lt;/p&gt;&quot;; }; ?&gt;</code></pre>

<h3>Listing your Members</h3>

<p>So how do you list all of your approved members? It is as simple as adding the <em>wp_list_authors</em> to any template file. This is the customized version of that function I use:</p>

<pre><code class="php">&lt;?php
wp_list_authors(&#39;hide_empty=1&amp;show_fullname=0&amp;optioncount=0&amp;exclude_admin=0&#39;); 
?&gt;</code></pre>

<h3>Tutorial Wrapup</h3>

<p>This tutorial was based on my experiences in building the Pittsburgh Designers community into a thriving, local membership directory for creative types. Mosey on over to the site and take a peek for yourself how what a finished project like this can look like.</p>

<p>You can download the complete finished <em>author.php</em> template <a href='http://www.cagintranet.com/design/wp-content/uploads/2008/03/author.zip'>here</a>.</p>

<h3>About the Author</h3>

<p>Chris Cagle is a freelance web designer from Pittsburgh, PA, whose projects include <a href="http://pghdesigners.com">Pittsburgh Designers</a> and <a href="http://adclustr.com/">AdClustr</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/wp-membership-directory/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wordpress Tip: The Easy Way to Show a Popular Post List</title>
		<link>http://www.cagintranet.com/archive/wordpress-tip-the-easy-way-to-show-a-popular-post-list/</link>
		<comments>http://www.cagintranet.com/archive/wordpress-tip-the-easy-way-to-show-a-popular-post-list/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 13:04:14 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=59</guid>
		<description><![CDATA[
Some may recognize the above screenshot as the &#039;Must Reads&#039; section from the blog of one of the best Wordpress theme designers: Chris Pearson. In one of his most recent posts he explained how he uses categories. In this in-depth article, he mentions that categories are what powers the &#039;Must Reads&#039; and &#039;Worth a Look&#039; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/popularposts.gif" alt="" title="Popular Posts Example" width="499" height="176" class="alignnone size-full wp-image-60" /></p>
<p>Some may recognize the above screenshot as the &#039;Must Reads&#039; section from the blog of one of the best Wordpress theme designers: <a href="http://www.pearsonified.com/">Chris Pearson</a>. In one of his most recent posts <a href="http://www.pearsonified.com/2008/02/what_every_blogger_needs_to_know_about_categories.php">he explained how he uses categories</a>. In this in-depth article, he mentions that categories are what powers the &#039;Must Reads&#039; and &#039;Worth a Look&#039; lists on the side of his site. </p>

<p>In my short tutorial here, I am going to show you how to easily do it for yourself. </p>

<p>First, we create another <a href="http://codex.wordpress.org/The_Loop">Loop</a> and specify with the <a href="http://codex.wordpress.org/Template_Tags/query_posts">query_posts function</a> that we only want to show a particular category. In this case, I have created a specialized category called &#039;Popular&#039; and only use it for the purpose of this list.</p>

<pre><code class="php">&lt;h3&gt;Popular Articles&lt;/h3&gt;
&lt;ul&gt;
	&lt;?php query_posts(&#39;category_name=popular&#39;); ?&gt;
	&lt;?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?&gt;
	&lt;li&gt;&lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;br /&gt;
	&lt;?php the_excerpt(); ?&gt;&lt;/li&gt;
	&lt;?php endwhile; ?&gt;&lt;?php endif; ?&gt;
&lt;/ul&gt;</code></pre>

<p>After we add that code to any theme template file (I&#039;ve added it to <em>sidebar.php</em>) all that is left is to add posts to the category &#039;Popular&#039;. From now on, just as long as a post is in that category, it will show in this list. All you need to do is add and remove posts from this category to alter what this list displays.</p>

<p>Also, in the code above, I just show the title and except, but you are free to customize it any way you see fit. Just about anything that can be used within the regular Loop is fair game. Here is a <a href="http://codex.wordpress.org/Template_Tags">list of tags</a> that should work for you.</p>

<p>Told you it was easy.</p>]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/wordpress-tip-the-easy-way-to-show-a-popular-post-list/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wordpress Tip: Essential UI Friendly Features</title>
		<link>http://www.cagintranet.com/archive/wordpress-tip-essential-ui-friendly-features/</link>
		<comments>http://www.cagintranet.com/archive/wordpress-tip-essential-ui-friendly-features/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 14:51:56 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=45</guid>
		<description><![CDATA[


User Interface (UI) has been a hot topic recently. 

Mozilla is betting their money on it, Jakob undeniably knows it and even Wordpress itself emphasized it in their latest release.

So when you are designing your next Wordpress theme,you will need to keep UI in mind. I have put together a list of some of the [...]]]></description>
			<content:encoded><![CDATA[<p>
<img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/userui.gif" alt="" title="Essential UI Features" width="500" height="150" class="alignnone size-full wp-image-52" /></p>

<p>User Interface (UI) has been a hot topic recently. </p>

<p>Mozilla is <a href="http://humanized.com/weblog/2008/01/16/joining-mozilla/">betting their money</a> on it, <a href="http://www.useit.com/alertbox/designer-user-differences.html">Jakob undeniably knows it</a> and even <a href="http://wordpress.org/development/2008/03/wordpress-25-brecker/">Wordpress itself emphasized it in their latest release</a>.</p>

<p>So when you are designing your next Wordpress theme,you will need to keep UI in mind. I have put together a list of some of the best UI features that Wordpress has to offer, but unfortunately many themes don&#039;t include most of them. Fortunately, many are extremely easy to add. Feel free to add any I&#039;ve missed in the comments.</p>

<h3>Top 6 Wordpress Theme UI Essentials</h3>
<ol>

<li><p><strong>On the <em>single.php</em> template, always show the previous and next post links.</strong><br /> This is one that I regretfully omitted in some of my first Wordpress theme designs. This is such an easy thing to add (within the Loop), and gives your visitor a way to check out your next post rather than having to hit the back button to return to your homepage.</p>
<pre><code class="php">&lt;?php previous_post('Previous Post: %', '', 'yes'); ?&gt;&lt;br /&gt;
&lt;?php next_post('Next Post: %', '', 'yes'); ?&gt;</code></pre>

</li>

<li><p><strong>Add the Auto-discovery link for RSS in the header.</strong><br /> This is another no-brainer, but inexplicably this isn&#039;t added to some blogs. The way I see it, you should provide your visitors with every way imaginable to subscribe to your RSS feed. RSS is the lifeblood of any blog and there is no excuse for not having this one line of code in your <em>header.php</em> template file.</p>
<p class="php"><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/userui-rss.gif" alt="" title="RSS Auto Discovery" width="463" height="100" class="alignnone size-full wp-image-55" /></p>
<pre><code class="php">&lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;Entries RSS&quot; href=&quot;&lt;?php 
bloginfo('rss2_url'); ?&gt;&quot; /&gt;</code></pre>

</li>

<li><p><strong>When you display a post&#039;s comment number, it should be an active link to the comments section on the <em>single.php</em> template.</strong><br /> 
There is a template tag that does this automatically:</p>
<pre><code class="php">&lt;?php comments_popup_link
('zero','one','more','CSSclass','none');
?&gt;</code></pre>
<p>&#8230; but there is also one that doesn&#039;t. This one gives you more flexibility in design and styling, but if you use it, just make sure you link it to the comments section of the page.</p>
<pre><code class="php">&lt;a href=&quot;#comments&quot; title=&quot;Comments&quot;&gt;&lt;?php comments_number('zero', 'one', 
'more', 'number'); ?&gt;&lt;/a&gt;</code></pre>
</li>

<li><p><strong>Create an &#039;Add New Comment&#039; link above all other comments.</strong><br /> 
This simple link will allow your visitors to quickly skip all comments and reach your comment form to participate in the conversation as fast as possible. (The example below assumes your form in <em>comments.php</em> has an <em>id=&#034;commentform&#034;</em>) </p>
<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/userui-addone.gif" alt="" title="Add a Comment" width="463" height="100" class="alignnone size-full wp-image-56" /></p>
<pre><code class="html">&lt;a href=&quot;#commentform&quot; title=&quot;Reply&quot;&gt;Add New Comment&lt;/a&gt;</code></pre>
</li>

<li><p><strong>Link to that post&#039;s specific Comments RSS Feed.</strong><br /> 
Pretty easy to add, and it all goes back to Step 2 - subscribers are the lifeblood. An alternative to this would be to add the &#034;Subscribe to Comments&#034; plugin, but having both certainly would never hurt.</p>
<pre><code class="php">&lt;a href=&quot;&lt;?php the_permalink(); ?&gt;/feed&quot; title=&quot;Subscribe to the comments for this Post&quot; 
&gt;RSS&lt;/a&gt;</code></pre>
<p>You can also take this a step further by adding an auto-discovery link in the <em>header.php</em> template, much like the way Step 2 above does for the main site feed.</p>
<pre><code class="php">&lt;?php if (is_single()) {&nbsp;?&gt; 
&lt;?php while (have_posts())&nbsp;: the_post();&nbsp;?&gt;
&lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;&lt;?php the_title();&nbsp;?&gt; 
Comments&quot; href=&quot;&lt;?php bloginfo('url');&nbsp;?&gt;/?feed=rss2&amp;amp;p=&lt;?php the_ID();&nbsp;?&gt;&quot; 
/&gt;
&lt;?php endwhile;&nbsp;?&gt; 
&lt;?php rewind_posts();&nbsp;?&gt; 
&lt;?php }&nbsp;?&gt;</code></pre>
<p>If you want to take this even one step further, I would suggest adding the <a href="http://wordpress.org/extend/plugins/subscribe-to-comments/">Subscribe to Comments</a> plugin. After many requests for it, I have stated making it a regularly used plugin in my work.</p>
</li>

<li><p><strong>Provide each comment with it&#039;s own permalink.</strong><br /> 
What happens if someone (maybe you in another post?&#8230;) needs to reference a comment left on one of your posts? The answer is they can&#039;t unless you&#039;ve added this code to your <em>comments.php</em> template file.</p>
<p>So in my <em>comments.php</em> file, I find this (or something similar) and make sure that I see the <em>id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;</em> in the <em>&lt;li&gt;</em>.</p>
<pre><code class="php">&lt;ol class=&quot;commentlist&quot;&gt;
&lt;?php foreach ($comments as $comment) : ?&gt;

&lt;li &lt;?php echo $oddcomment; ?&gt;id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;&gt;</code></pre>
<p>I then add something like this linking to that comment ID within that same <em>&lt;li&gt;</em></p>
<pre><code class="php">&lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php comment_date('F jS, Y') ?&gt;&lt;/a&gt;</code></pre>
</li>

</ol>

<p><em><strong>FYI:</strong> For any WP work that I have done previously for you that doesn&#039;t include some of these small bits of code - please contact me so that I can add it to your theme free of charge.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/wordpress-tip-essential-ui-friendly-features/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eliminating Blog Neglect by Altering Your Theme</title>
		<link>http://www.cagintranet.com/archive/eliminating-blog-neglect-by-altering-your-theme/</link>
		<comments>http://www.cagintranet.com/archive/eliminating-blog-neglect-by-altering-your-theme/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 12:21:40 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=49</guid>
		<description><![CDATA[
Blog neglect is a joke. 
Nowhere did you ever proclaim that you were going to post once a day or a couple times a week, but the basic assumption out there among your readers is that if your blog doesn&#039;t have a frequent enough posting schedule, it might as well be DOA.
What is considered a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/04/blogneglect.jpg" alt="" title="Blog Neglect - Is your Blog D.O.A.?" width="500" height="173" class="alignnone size-full wp-image-51" /></p>
<p>Blog neglect is a joke. </p>
<p>Nowhere did you ever proclaim that you were going to post once a day or a couple times a week, but the basic assumption out there among your readers is that if your blog doesn&#039;t have a frequent enough posting schedule, it might as well be DOA.</p>
<p>What is considered a frequent posting schedule? Who knows - but in reality, <em>it shouldn&#039;t matter anyway</em>. </p>
<p>Since blog neglect is determined in the mind of your readers, all you need to do is take certain precautions when designing your new blog template to prevent against this assumption.</p>

<h3>The 5 Step Anti-Neglect Approach</h3>
<ol>
<li><p><strong>Don&#039;t prominently display the post&#039;s published-on date.</strong><br />
This is the most unconventional of the modifications, but by far the most important. If a visitor starts browsing your site, one of the first things he or she will look at is when it was last updated. This is not necessary information - if the content of the article is worthwhile, then the date it was published is in most cases irrelevant. </p>
<p>If you feel the overwhelming need to show the published date, but still don&#039;t plan on updating your blog on a regular schedule, then at least put it in an inconspicuous area where it&#039;s not the first thing a visitor will see when viewing your blog.</p></li>

<li><p><strong>Don&#039;t add the Date Archives to your sidebar.</strong><br />
This widget is much more than a perception killer. Aside from contributing to your page bloat that can drastically kill your SEO, having this list on your sidebar gives your visitors direct and easy access to your posting frequency habits. Who is going to subscribe to a feed that only had one post last month? It&#039;s best to keep them guessing if you fit into this category.</p></li>

<li><p><strong>Remove the dates from your Permalinks.</strong><br /> 
If you omit your published-on date but still use Wordpress&#039;s default <a href="http://codex.wordpress.org/Using_Permalinks">permalink</a> structure intact - you are completely defeating the purpose of this article. Use the below example, or come up with a new one on your own. Plus, that default date-based structure is so ugly and overused anyway.</p>
<code>/archive/%postname%/</code>
</li>

<li><p><strong>Don&#039;t publish your RSS subscriber numbers.</strong><br />
This should be the case if you plan on updating regularly or not <a href="http://www.doshdosh.com/the-feed-count-meme-studying-the-impact-of-feed-count-on-blog-feed-subscriptions/">until you have at least 200+ subscribers</a>. Showing your subscriber count from Feedburner (you ARE using FB right?) does more to your psyche than anything else, forcing you to &#034;keep &#039;em happy&#034; with articles. The minute you start doing this, your sub par posts will force them to hit the unsubscribe button faster than you can click &#034;Publish.&#034;</p>
<p>When you are ready to publish those subscriber numbers, give <a href="http://www.mapelli.info/feed/feed-count-12">Mapelli&#039;s FeedCount WP plugin</a> a try. I have used it on a number of projects so far, and I would recommend it to anyone.</p></li>

<li><p><strong>Don&#039;t show Category post count.</strong><br />
This one may not be a bad step to skip if you have an established blog with a bunch of posts, but if you are starting out - don&#039;t show the post count. Here&#039;s the code to do just that:</p>
<pre><code class="php" >&lt;ul&gt;
&lt;?php wp_list_categories('orderby=name&amp;show_count=0');&nbsp;?&gt;
&lt;/ul&gt;</code></pre>
</li>

</ol>]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/eliminating-blog-neglect-by-altering-your-theme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CSS Tip: Easy Semantic Web Contact Information</title>
		<link>http://www.cagintranet.com/archive/css-tip-easy-semantic-web-contact-information/</link>
		<comments>http://www.cagintranet.com/archive/css-tip-easy-semantic-web-contact-information/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 12:37:26 +0000</pubDate>
		<dc:creator>Chris Cagle</dc:creator>
		
		<category><![CDATA[standardization]]></category>

		<guid isPermaLink="false">http://www.cagintranet.com/?p=43</guid>
		<description><![CDATA[

The semantic web is coming in a hurry, so now is as good a time as any to embrace it and spend a few minutes to update your web site accordingly. 
On my site here, and for every member on my local community site, I use the same small snippet of HTML to make my [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cagintranet.com/design/wp-content/uploads/2008/03/hcard-semantic.png" alt="" title="hCard - Micrformats.org" width="500" height="138" class="alignnone size-full wp-image-46" /></p>

<p>The <a href="http://www.techcrunch.com/2008/03/13/yahoo-embraces-the-semantic-web-expect-the-web-to-organize-itself-in-a-hurry/">semantic web is coming in a hurry</a>, so now is as good a time as any to embrace it and spend a few minutes to update your web site accordingly. </p>
<p>On my site here, and for every member on my <a href="http://pghdesigners.com">local community site</a>, I use the same small snippet of HTML to make my contact information semantic. </p>

<p><strong>HINT:</strong> You will notice that near the bottom of the HTML code, there is a link to download the hCard. This is a <a href="http://technorati.com/contact/">service that Technorati provides</a> free of charge, and is a wonderful way to give your visitors yet another way to save your contact information. For more information on what an hCard is, read up about it at <a href="http://microformats.org/wiki/hcard">Microfromats.org</a>.</p>

<h3>HTML</h3>
<pre><code class="html">&lt;dl class=&quot;vcard&quot;&gt;
 
 &lt;dt&gt;Mail:&lt;/dt&gt;
  &lt;dd class=&quot;adr&quot;&gt;
    &lt;div class=&quot;fn org&quot;&gt;Business Name&lt;/div&gt;
    &lt;div&gt;&lt;span class=&quot;nickname&quot;&gt;Your Name&lt;/span&gt;, 
    &lt;span class=&quot;title&quot;&gt;Owner&lt;/span&gt;&lt;/div&gt;
    &lt;div&gt;&lt;span class=&quot;street-address&quot;&gt;24 Main Street&lt;/span&gt;&lt;/div&gt;
    &lt;div&gt;&lt;span class=&quot;locality&quot;&gt;Pittsburgh&lt;/span&gt;, 
    &lt;span class=&quot;region&quot;&gt;PA&lt;/span&gt; 
    &lt;span class=&quot;country-name&quot;&gt;USA &lt;/span&gt;
    &lt;span class=&quot;postal-code&quot;&gt;15202&lt;/span&gt;&lt;/div&gt;
  &lt;/dd&gt;
 
 &lt;dt&gt;Email:&lt;/dt&gt;
  &lt;dd&gt;&lt;a href=&quot;mailto:admin@yourdomain.com&quot; class=&quot;email&quot;&gt;admin@yourdomain.com&lt;/a&gt;&lt;/dd&gt;
 
 &lt;dt&gt;Phone:&lt;/dt&gt;
  &lt;dd class=&quot;tel&quot;&gt;
    &lt;span class=&quot;type&quot;&gt;Work&lt;/span&gt;
    &lt;span class=&quot;value&quot;&gt;412-555-9999&lt;/span&gt;
  &lt;/dd&gt;
  &lt;dd&gt;&lt;a href=&quot;http://technorati.com/contact/http://yourdomain.com/contactpage&quot;&gt;hCard&lt;/a&gt;&lt;/dd&gt;

&lt;/dl&gt;</code></pre>

<h3>CSS</h3>
<pre><code class="css">dl,dt,dd {margin:0; padding:0}<br />
dl.vcard {margin:0 0 35px 5px;}<br />
dl.vcard dt, dl.vcard .org, dl.vcard .type {display: none;}<br />
dl.vcard dd.adr {padding-bottom: 1em;}</code></pre>]]></content:encoded>
			<wfw:commentRss>http://www.cagintranet.com/archive/css-tip-easy-semantic-web-contact-information/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
