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

<channel>
	<title>Joe Dolson Accessible Web Design &#187; Web Development</title>
	<atom:link href="http://www.joedolson.com/articles/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joedolson.com/articles</link>
	<description>Tips and Commentary on Web Accessibility, Usability, and Search Marketing best practices.</description>
	<lastBuildDate>Thu, 02 Feb 2012 18:13:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Developing and Designing for Change</title>
		<link>http://www.joedolson.com/articles/2011/04/developing-and-designing-for-change/</link>
		<comments>http://www.joedolson.com/articles/2011/04/developing-and-designing-for-change/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 02:33:21 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=876</guid>
		<description><![CDATA[One of the main reasons for using a content management system (CMS) is that it can provide great advantages for future growth. Having the easy ability to extend your software to create new types of documents (as with WordPress&#8217; custom post types), or to simply add new pages and new features without needing to scrap [...]<p><strong><a href="http://www.joedolson.com/articles/2011/04/developing-and-designing-for-change/">Developing and Designing for Change</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>One of the main reasons for using a content management system (<abbr title="Content Management System">CMS</abbr>) is that it can provide great advantages for future growth. Having the easy ability to extend your software to create new types of documents (as with WordPress&#8217; custom post types), or to simply add new pages and new features without needing to scrap everything you currently have is a huge&nbsp;advantage. </p>
<p>However, much of that advantage can be lost through poor&nbsp;planning.</p>
<p>If you have any thoughts&thinsp;&#8212;&thinsp;at all&thinsp;&#8212;&thinsp;that you might want to add additional content to your web site in the future, it&#8217;s really not a bad idea to start planning right away when you&#8217;re building your web site. A little forethought now can save a lot of trouble down the&nbsp;road. </p>
<p>It&#8217;s not necessarily the case that your problem will be absolutely and insurmountably limiting&thinsp;&#8212;&thinsp;in fact, that&#8217;s extremely unlikely. It is very likely that it will be an inconvenience which will cost you time and&nbsp;money. </p>
<p>For example, let&#8217;s think about the most basic key element of your web site: the navigation. If you&#8217;re making changes to your web site which included adding, re-naming, or removing documents, you&#8217;re going to be making changes to the main navigation.  With that in mind, does it make more sense to take the <abbr title="Content Management System">CMS</abbr> navigation and style it to do what you need, or to remove it and replace it with a static menu that looks like you want it&nbsp;to?</p>
<p>Realistically, you can probably have it both ways&thinsp;&#8212;&thinsp;in my experience, a skilled web developer can take <abbr title="Content Management System">CMS</abbr> output and make it look however you want. But I&#8217;ve certainly encountered many circumstances where that simply wasn&#8217;t what was done&thinsp;&#8212;&thinsp;which made later changes significantly harder than they needed to&nbsp;be. </p>
<p>This is just intended to be a quick post, so I&#8217;m not going to go into extensive details on all the possible ways that you can fail to plan for future changes on a web site&thinsp;&#8212;&thinsp;but I do want to make a few quick&nbsp;points:</p>
<ul>
<li>Unless you&#8217;re <em>planning</em> on your business failing, you should always assume that your web site will grow and&nbsp;change.</li>
<li>Your web site will never be finished. It is a living&nbsp;document.</li>
<li>You should always be prepared to simplify. Change is not always additive. Removing the right things can be a huge&nbsp;benefit.</li>
<li>While building a new web site, it&#8217;s not at all unreasonable to ask your developer how much work it would be to change &#8220;x&#8221;, where &#8220;x&#8221; is something you may want to do next year. But it&#8217;s probably better to find out even&nbsp;sooner.</li>
</ul>
<p>However much planning you do, not every change will be quick and easy. However, even though a complete redesign will always be a lot of work, adding a new page shouldn&#8217;t be.
<p><strong><a href="http://www.joedolson.com/articles/2011/04/developing-and-designing-for-change/">Developing and Designing for Change</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2011/04/developing-and-designing-for-change/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Accessibility isn&#8217;t about technology</title>
		<link>http://www.joedolson.com/articles/2011/04/accessibility-isnt-about-technology/</link>
		<comments>http://www.joedolson.com/articles/2011/04/accessibility-isnt-about-technology/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 14:31:55 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[barriers]]></category>
		<category><![CDATA[pec]]></category>
		<category><![CDATA[self]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=969</guid>
		<description><![CDATA[I&#8217;m a firm believer that the first step to creating effective accessible web sites is to understand the nature of disability. Learning all the technological elements which can affect that accessibility is also necessary, but if you don&#8217;t understand why you&#8217;re employing the technology, you&#8217;re far more likely to make simple but costly&#160;mistakes. My latest [...]<p><strong><a href="http://www.joedolson.com/articles/2011/04/accessibility-isnt-about-technology/">Accessibility isn&#8217;t about technology</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a firm believer that the first step to creating effective accessible web sites is to understand the nature of disability. Learning all the technological elements which can affect that accessibility is also necessary, but if you don&#8217;t understand <strong>why</strong> you&#8217;re employing the technology, you&#8217;re far more likely to make simple but costly&nbsp;mistakes.</p>
<p>My latest article, <a href="http://developer.practicalecommerce.com/articles/2711-Web-Accessibility-10-Common-Developer-Mistakes">10 Common Developer Mistakes</a>, published at Ecommerce Developer, covers examples of some of those still-common mistakes which are fundamentally the result of a failure to understand how other people perceive and interact with your&nbsp;product. </p>
<p>What makes a web site inaccessible is your fault: your web site is not inaccessible because your visitor has a disability, it&#8217;s inaccessible because you have placed barriers on the site. These barriers are caused by a failure to understand how other people perceive or interact differently from&nbsp;yourself. </p>
<p>A self-focused perception of the world can be very damaging to accessibility or to usability. It&#8217;s not that you can&#8217;t build a great and even successful web site while primarily thinking of yourself as the user; but your site&#8217;s ability to cope with the needs and expectations of other users is greatly reduced if you aren&#8217;t able to understand how other people will interact with your web site.
<p><strong><a href="http://www.joedolson.com/articles/2011/04/accessibility-isnt-about-technology/">Accessibility isn&#8217;t about technology</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2011/04/accessibility-isnt-about-technology/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>It&#8217;s still important to talk about HTML 4</title>
		<link>http://www.joedolson.com/articles/2010/12/its-still-important-to-talk-about-html-4/</link>
		<comments>http://www.joedolson.com/articles/2010/12/its-still-important-to-talk-about-html-4/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 17:51:52 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web standards]]></category>
		<category><![CDATA[deprecation]]></category>
		<category><![CDATA[html4]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=883</guid>
		<description><![CDATA[Yes, that does say HTML 4 in the title. This is not an article about HTML 5, or, indeed, about anything which is at all new. But it&#8217;s not just new technology which needs discussion in the web development&#160;sphere! It&#8217;s sometimes hard to remember that HTML 5 is still not in common use&#8201;&#8212;&#8201;and that writing [...]<p><strong><a href="http://www.joedolson.com/articles/2010/12/its-still-important-to-talk-about-html-4/">It&#8217;s still important to talk about HTML 4</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>Yes, that does say <abbr title="HyperText Markup Language">HTML</abbr> <strong>4</strong> in the title. This is not an article about <abbr title="HyperText Markup Language">HTML</abbr> 5, or, indeed, about anything which is at all <em>new</em>. But it&#8217;s not just new technology which needs discussion in the web development&nbsp;sphere!</p>
<p>It&#8217;s sometimes hard to remember that <abbr title="HyperText Markup Language">HTML</abbr> 5 is still not in common use&thinsp;&#8212;&thinsp;and that writing about <abbr title="HyperText Markup Language">HTML</abbr> 5 is something which almost exclusively targets forward-thinking and experienced web developers. <abbr title="HyperText Markup Language">HTML</abbr> 4 is still in widespread use across the web. If you&#8217;re looking at volume, <abbr title="HyperText Markup Language">HTML</abbr> 4.01 and <abbr title="eXtensible HyperText Markup Language - HTML reformulated as XML">XHTML</abbr> 1.0 cover most of the web site editing by webmasters, internet entrepreneurs, content management systems, or on personal&nbsp;sites.</p>
<p>But, more importantly, the internet continues to be littered with tutorials on how to abuse&nbsp;<abbr title="HyperText Markup Language">HTML</abbr>. </p>
<p>If you look for <abbr title="HyperText Markup Language">HTML</abbr> tutorials, you will primarily find fair and reasonable articles on standards-based usage. This is good. You will not, however, <em>exclusively</em> find tutorials which exhibit best practices in front-end development. This is, in part, the fault of an un-revised web: the well-reasoned article you wrote in 1998 may still be present, exhibiting years of inbound links and an honest but obsolete point of view. To the undiscerning reader, the authority of your article may be more apparent than it&#8217;s&nbsp;obsolescence. </p>
<p>I have mixed feelings about the idea of deprecating web content. There&#8217;s a part of me which is hesitant to edit the past by deleting and redirecting from older articles. After all, this isn&#8217;t done in print materials&thinsp;&#8212;&thinsp;if a volume is edited and re-released, the prior version is still available. In fact, the prior versions won&#8217;t even have any reference of any kind to let you know that they&#8217;ve been updated! The web has the power to avoid that problem entirely: in theory, you can delete, revise, or redirect away from any obsolete article on the web, making it impossible for any new explorer to come across out-dated&nbsp;material. </p>
<p>In practice, however, that doesn&#8217;t always happen. The best publications focus (as they should) on producing quality new content, and let their archives stand. While this means that they retain an honest history of their publishing, it also means that authoritative publications may still be promoting outdated&nbsp;ideas. </p>
<p>Today, for example, I ran across a web site which had a professional-looking design (albeit rather generic) and offered a prominent section of <abbr title="HyperText Markup Language">HTML</abbr> tutorials. The first article in the set of tutorials was discussing how to use the <code>font</code> element to change the size, color, and font used in your&nbsp;text. </p>
<p>It even used Comic Sans as the example for an alternate font to use.&nbsp;Seriously.</p>
<p>For obvious reasons, I&#8217;m not actually linking to this site&thinsp;&#8212;&thinsp;the whole point of my article is to try and avoid the promotion of outdated material, after&nbsp;all. </p>
<p>Now, to me, it&#8217;s fairly apparent that this article is sitting here pretty much as advertising fodder. The site isn&#8217;t one which has anything like a prominent position in results for <abbr title="HyperText Markup Language">HTML</abbr> tutorial, or is a place somebody would be expected to land when looking for an <abbr title="HyperText Markup Language">HTML</abbr> tutorial. But it&#8217;s there, and somebody has undoubtedly made use of&nbsp;it. </p>
<h3>Is the article above a representative&nbsp;example?</h3>
<p>In point of fact, a lot of web publications have behaved moderately responsibly about promoting better practices in web development. However, the actual results you&#8217;ll find in a search are all over the map&thinsp;&#8212;&thinsp;and examples like what I cited above are definitely present. In an example search for &#8220;html tutorial change font color&#8221;, among the 9 relevant results in the the top 10&nbsp;included:</p>
<ul>
<li><strong>3</strong> sites which mentioned that the <code>font</code> element had been&nbsp;deprecated;</li>
<li><strong>5</strong> sites which suggested the use of stylesheets&nbsp;instead;</li>
<li><strong>3</strong> sites which linked to a tutorial page on Cascading Style&nbsp;Sheets;</li>
<li><strong>3</strong> sites which linked to a tutorial page on adjusting fonts with Cascading Style&nbsp;Sheets;</li>
<li><strong>0</strong> sites which had removed the information on changing font size with the <code>font</code>&nbsp;element;</li>
<li><strong>4</strong> sites which did none of these things, and recommended use of the <code>font</code> element&nbsp;whole-heartedly;</li>
</ul>
<p>Interestingly, not one of the results was <strong>exclusively</strong> a discussion of changing font color using <abbr title="Cascading Style Sheets">CSS</abbr>. None of them. In fact, only one of these articles even included information on changing colors with <abbr title="Cascading Style Sheets">CSS</abbr> on the page, and the example provided in that article only pertained to changing the colors of of the anchor element. This very fact should make it evident that people searching for <abbr title="HyperText Markup Language">HTML</abbr> information are still very likely to come across bad&nbsp;information. </p>
<p>It&#8217;s not 1998 anymore, but 1998&#8242;s <abbr title="HyperText Markup Language">HTML</abbr> tutorials are still haunting&nbsp;us.</p>
<p>It&#8217;s clear from examining the search results that the larger players in the tutorial realm (Tizag.com and W3schools.com, for example) have done some due diligence in updating their articles, which is good. However, they could do&nbsp;better. </p>
<h3>The&nbsp;Conclusion</h3>
<p>So, I get back to my original point. It&#8217;s still important to talk about older technology: it&#8217;s still relevant to write or promote articles which offer tutorials on simple tasks, like changing font color using <abbr title="Cascading Style Sheets">CSS</abbr> or properly forming an unordered list. The reason it&#8217;s relevant is because the internet knowledge base is polluted&thinsp;&#8212;&thinsp;those who are in control of outdated material should take responsibility for updating their information, ideally, but we don&#8217;t all have that power. The best we can do is continue to promote best practices in all&nbsp;areas. </p>
<p>If you think about it, a significant part of web site updating is done by non-experts: the person tasked with maintaining the web site in a small business may not be at all knowledgeable. The beginning blogger may not know anything about <abbr title="HyperText Markup Language">HTML</abbr>. Their learning will still come through basic searches, starting from a task-oriented question which is probably not technology specific. Those are people we need to reach if we seriously want to improve the quality of <abbr title="HyperText Markup Language">HTML</abbr> on the internet.
<p><strong><a href="http://www.joedolson.com/articles/2010/12/its-still-important-to-talk-about-html-4/">It&#8217;s still important to talk about <abbr title="HyperText Markup Language">HTML</abbr> 4</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/12/its-still-important-to-talk-about-html-4/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML 5 has cool stuff: new input types!</title>
		<link>http://www.joedolson.com/articles/2010/06/html-5-has-cool-stuff-new-input-types/</link>
		<comments>http://www.joedolson.com/articles/2010/06/html-5-has-cool-stuff-new-input-types/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 16:04:06 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web standards]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=799</guid>
		<description><![CDATA[Even though many elements of HTML 5 have only limited application at this time due to lacking browser support, there&#8217;s little reason not to make use of them. The design of the markup language is intended to minimize dependence on user agents, failing invisibly if the browser doesn&#8217;t offer that feature, which helps encourage early [...]<p><strong><a href="http://www.joedolson.com/articles/2010/06/html-5-has-cool-stuff-new-input-types/">HTML 5 has cool stuff: new input types!</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>Even though many elements of <abbr title="HyperText Markup Language">HTML</abbr> 5 have only limited application at this time due to lacking browser support, there&#8217;s little reason not to make use of them. The design of the markup language is intended to minimize dependence on user agents, failing invisibly if the browser doesn&#8217;t offer that feature, which helps encourage early use of new&nbsp;elements.</p>
<p>Of course, the lack of support does have some consequences. We can&#8217;t just go out writing <abbr title="HyperText Markup Language">HTML</abbr> 5 without having significant awareness of this lack of native support&thinsp;&#8212;&thinsp;we have to&nbsp;compensate. </p>
<p>Nonetheless, being able to incorporate great new elements like <code>figure</code>, <code>progress</code>, <code>meter</code>, <code>nav</code> to improve semantics or browser capabilities including <a href="http://keyboardy.com/programming/html5-link-prefetching/">content prefetching</a> to provide a faster, more seamless experience for users is actually pretty&nbsp;exciting. </p>
<p><div id="attachment_801" class="wp-caption alignleft" style="width: 329px"><img src="http://www.joedolson.com/articles/wp-content/uploads/html-input-date.png" alt="HTML5 Datetime input in Opera 10.53" title="HTML5 Datetime input in Opera 10.53" width="319" height="306" class="size-full wp-image-801" /><p class="wp-caption-text">HTML5 Datetime input in Opera&nbsp;10.53</p></div>The coolest thing coming, in my opinion, is the numerous new attribute values for the <code>input</code> element. It seems like everybody&#8217;s always talking about the video element&thinsp;&#8212;&thinsp;but, not being somebody who&#8217;s all that excited by video, those conversations just make me say&nbsp;&#8220;Meh.&#8221;</p>
<p>But new input types&#8230;<em>cold&nbsp;shivers.</em></p>
<p>Sadly, they&#8217;re also one of the less useful elements at the moment. Until support is available in browsers, they&#8217;ll simply fall back to a text field, unless supplemented by scripting to customize their behavior. But hey&thinsp;&#8212;&thinsp;easy upgrade,&nbsp;right?</p>
<p>From an accessibility perspective, this is fabulous news. Or rather, <em>potentially</em> fabulous news. These new input types&thinsp;&#8212;&thinsp;including date formats, time formats, numbers, ranges, and colors&thinsp;&#8212;&thinsp;are intended to provide user-friendly and accessibility-enabled interfaces for inputting these kinds of custom data. Ultimately, they&#8217;ll provide replacements (or fallbacks) to the innumerable JavaScripted widgets used to create date input or color selectors. Users, instead of encountering a different style of calendar every time they need to enter a date, could have a consistent user experience. Having the behavior built directly into the browser, and tied from there directly into any accessibility software in use offers a hugely more dependable experience for users of assistive&nbsp;technology. </p>
<p>Now, this all depends on several factors: vendor implementations need to meet user agent accessibility guidelines; interfaces between browsers need to be consistent; and, of course, the attribute values need to be implemented by enough browsers to make their use truly&nbsp;valuable!</p>
<p><time datetime="2010-06-03">Today</time>, support is pretty limited. You can take a look at <a href="http://www.456bereastreet.com/lab/html5-input-types/">Roger Johansson&#8217;s <abbr title="HyperText Markup Language">HTML</abbr> 5 input type test page</a> and see whether your current browser supports any of them. If you&#8217;re using recent versions of Opera or Safari, the answer will be yes&thinsp;&#8212;&thinsp;otherwise, you won&#8217;t be seeing very much of interest for a&nbsp;while. </p>
<p><strong>But you can implement these input types&nbsp;today.</strong></p>
<p>All of these different input types fallback to a simple text input. If you&#8217;re using the <abbr title="HyperText Markup Language">HTML</abbr> 5 doctype, there&#8217;s nothing stopping you from applying <abbr title="HyperText Markup Language">HTML</abbr> 5 input types <em>right now</em>. Any browser that doesn&#8217;t support them will simply provide a field to enter plain text&thinsp;&#8212;&thinsp;so if you&#8217;re currently collecting email addresses in a text input (which seems pretty likely,) then you have no excuse not to change now. You may not see the benefits right away, but why wait? You&#8217;re not going to see any downsides,&nbsp;either. </p>
<p>Creating forms has long been a thorn in many a developer&#8217;s side. Dealing with how to best layout and collect date information, for example, is always a pain. Do you leave it as a simple text field, and have to deal with who-know-what kind of data received from the user? Do you use multiple select boxes, and force the user to walk through three or more fields just to enter the date? Do you use a JavaScript-based tool to provide a calendar, which may not have great accessibility, may behave strangely in some browsers, and may take a lot of development time to massage into providing the functionality you&#8217;re looking&nbsp;for? </p>
<p>Even when browser support for <abbr title="HyperText Markup Language">HTML</abbr> 5 input types is fully available, it&#8217;s entirely possible that you&#8217;ll want to take the route to custom develop interfaces for various fields. However, unlike the past, you&#8217;ll only be needing to do this because something particularly unique is required for the project; for lower-budget projects, you can save a lot of labor and provide a solid interface just by using native&nbsp;features. </p>
<p><strong><a href="http://www.joedolson.com/articles/2010/06/html-5-has-cool-stuff-new-input-types/"><abbr title="HyperText Markup Language">HTML</abbr> 5 has cool stuff: new input types!</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/06/html-5-has-cool-stuff-new-input-types/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The future of WP to Twitter</title>
		<link>http://www.joedolson.com/articles/2010/05/the-future-of-wp-to-twitter/</link>
		<comments>http://www.joedolson.com/articles/2010/05/the-future-of-wp-to-twitter/#comments</comments>
		<pubDate>Wed, 05 May 2010 20:02:17 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[wptotwitter]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=787</guid>
		<description><![CDATA[In June of 2010, Twitter will be permanently disabling basic authentication in favor of the OAuth protocol for authentication. For WordPress plugins which make use of the Twitter API, this is a change which will have significant&#160;repercussions. The specific repercussion will be that every implementation of a plugin will need to be registered with Twitter [...]<p><strong><a href="http://www.joedolson.com/articles/2010/05/the-future-of-wp-to-twitter/">The future of WP to Twitter</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>In June of 2010, Twitter will be <a href="http://apiwiki.twitter.com/OAuth-FAQ#WhenareyougoingtoturnoffBasicAuth">permanently disabling basic authentication</a> in favor of the <a href="http://oauth.net/">OAuth protocol</a> for authentication. For WordPress plugins which make use of the Twitter <abbr title="Application Programming Interface">API</abbr>, this is a change which will have significant&nbsp;repercussions. </p>
<p>The specific repercussion will be that every implementation of a plugin will need to be <a href="http://twitter.com/oauth_clients">registered with Twitter as a separate&nbsp;application</a>. </p>
<p>This means that the development of WP to Twitter will need to move in a slightly different direction. After pondering a bit, I&#8217;m left with four plausible&nbsp;choices:</p>
<ol>
<li><a href="/articles/2010/05/the-future-of-wp-to-twitter/#die">Let the plugin&nbsp;die</a></li>
<li><a href="/articles/2010/05/the-future-of-wp-to-twitter/#oauth">Implement OAuth for the&nbsp;plugin</a></li>
<li><a href="/articles/2010/05/the-future-of-wp-to-twitter/#webservice">Build a pass-through web service to act as an application interface with&nbsp;Twitter</a></li>
<li><a href="/articles/2010/05/the-future-of-wp-to-twitter/#3rdparty">Associate with a 3rd party web service in the same&nbsp;capacity</a></li>
</ol>
<p>These all have downsides, obviously&thinsp;&#8212;&thinsp;but I want to lay out my thoughts on each possibility and I&#8217;m asking for comments from the users of my plugin on their&nbsp;preference. </p>
<h3 id="die">Death of WP to&nbsp;Twitter</h3>
<p>Although it&#8217;s not really my favorite option, I have to acknowledge that it&#8217;s plausible. It&#8217;s certainly the easy answer&thinsp;&#8212;&thinsp;maintaining an even moderately popular WordPress plugin is a lot of free labor. I already spend more time on maintaining than I really should, from a financial perspective, and this may push it over the&nbsp;edge. </p>
<h3 id="oauth">Implement&nbsp;OAuth</h3>
<p>This would be a fair amount of work for me, although not insurmountable. The real downside to it would be how much work it would be for users&thinsp;&#8212;&thinsp;every one of you would have to register one application with Twitter for every site where you installed the plugin. With one site, this may not be a big deal&thinsp;&#8212;&thinsp;but I know it could be a real pain for people with more than&nbsp;that. </p>
<p>It&#8217;s not without some potential advantages, of course&thinsp;&#8211;&thinsp;when you&#8217;re registering your own application, you could customize the application name, the home <abbr title="Uniform Resource Locator">URL</abbr> for the application,&nbsp;etc. </p>
<h3 id="webservice">Build a pass-through&nbsp;service</h3>
<p>One way around the Oauth mess is for me to build a separate service which would handle actually connecting to Twitter. WP to Twitter would authenticate with that service, and pass the post off to Twitter. Again, this would be a lot of work&thinsp;&#8212;&thinsp;but, more significantly, it would involve some definite&nbsp;expenses. </p>
<p>I&#8217;ve been happy to maintain this plugin for not-much-better than free, but when it comes to incurring expenses, I start to feel a bit unexcited. It&#8217;s not like WP to Twitter is a commercially viable business, and I have expectations of profit from it&thinsp;&#8212;&thinsp;but I&#8217;d prefer not to find myself going into the hole because of it. I&#8217;d probably need to see an increase in donations to make this&nbsp;feasible.</p>
<h3 id="thirdparty">Use a 3rd Party&nbsp;Service</h3>
<p>Obviously, if I can build a service to connect with Twitter, so can somebody else. This is almost certainly the easiest solution which keeps the plugin usable&thinsp;&#8212;&thinsp;but it does mean creating a dependency on a 3rd party to keep the plugin functioning. Depending on Twitter is just natural; obviously, if Twitter goes away, the <em>point</em> of the plugin is lost. Depending on somebody else is something I&#8217;m less certain of, on the whole. There&#8217;s a reason, after all, that the plugin allows for use of URLs without an external&nbsp;shortener. </p>
<h3>Give me your&nbsp;thoughts</h3>
<p>This is very important to me&thinsp;&#8212;&thinsp;I want to know what direction you&#8217;d like to see WP to Twitter go. Please let me know! Do you know another solution? Do&nbsp;tell! </p>
<p>And if there are no responses&#8230;well, that has a <a href="/articles/2010/05/the-future-of-wp-to-twitter/#die">pretty obvious meaning</a> as well.
<p><strong><a href="http://www.joedolson.com/articles/2010/05/the-future-of-wp-to-twitter/">The future of WP to Twitter</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/05/the-future-of-wp-to-twitter/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Form over Function? Never thought about it&#8230;</title>
		<link>http://www.joedolson.com/articles/2010/04/form-over-function-never-thought-about-it/</link>
		<comments>http://www.joedolson.com/articles/2010/04/form-over-function-never-thought-about-it/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 15:15:04 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=779</guid>
		<description><![CDATA[A couple of weeks ago, I launched a WordPress Calendar plugin. Now, there are a *lot* of Calendar plugins available out there, so I&#8217;ll freely admit that my primary reason for doing this was to meet my own needs&#8201;&#8212;&#8201;and given the &#8220;profit margin&#8221; on writing WordPress plugins, that&#8217;s generally the best plan when writing&#160;one. Interestingly, [...]<p><strong><a href="http://www.joedolson.com/articles/2010/04/form-over-function-never-thought-about-it/">Form over Function? Never thought about it&#8230;</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago, I launched a <a href="/articles/my-calendar/">WordPress Calendar plugin</a>. Now, there are a *lot* of Calendar plugins available out there, so I&#8217;ll freely admit that my primary reason for doing this was to meet my own needs&thinsp;&#8212;&thinsp;and given the &#8220;profit margin&#8221; on writing WordPress plugins, that&#8217;s generally the best plan when writing&nbsp;one. </p>
<p>Interestingly, the most frequent complaints I&#8217;ve heard since launching it were in an area which I had considered to be the least important area of the plugin&thinsp;&#8212;&thinsp;what it looks&nbsp;like.</p>
<p>I only did minimal work in setting up the appearance for this plugin; checking whether it basically worked in the default WordPress themes and little else. My assumption was that if anybody needed the plugin, they&#8217;d just have to be prepared to customize it to meet their needs. There was no reasonable way I could set it up to mesh with all possible themes, after&nbsp;all!</p>
<p>But apparently, in order to have the plugin be generally accepted, people need it to have &#8220;a look.&#8221; Most advanced users will probably change it; but I clearly hadn&#8217;t considered the more beginner users, without sufficient <abbr title="Cascading Style Sheets">CSS</abbr> knowledge to readily customize the&nbsp;output.</p>
<p>What&#8217;s really interesting to me about this situation, however, is not whether the plugin is accepted, popular, or heavily designed; that&#8217;s just an example. I was intrigued to observe in my own development process an approach which almost entirely ignored what the product looked like. From start to finish, I was really thinking about whether the plugin produced well-structured <abbr title="HyperText Markup Language">HTML</abbr> and whether the various functions involved in producing information worked&nbsp;well. </p>
<p>I just never thought about design. And why would I? If I can&#8217;t predict what context the plugin will be used in, why should I design it at all, beyond making the basic functionality&nbsp;clear? </p>
<p>It&#8217;s an interesting question; from my perspective, as a fairly advanced WordPress developer, I honestly prefer plugins I use to have absolutely minimal styles, and for me to be able to disable those styles at will so that I can replace them. However, WordPress has a very broad user base. Most of those millions of users probably expect that they can install a plugin and immediately make use of it&thinsp;&#8212;&thinsp;and any changing of colors or reskinning to better match their design is purely optional. For those users, I really should be providing something which can be immediately&nbsp;useful.</p>
<p>It actually does come down to usability: advanced users can do what they want with the calendar design regardless of how extensively I&#8217;ve set up styles. Beginning users, however, may not be able to fix anything that I&#8217;ve left unresolved, or not fully tested. In order to provide the best usability, I need to consider those users, as&nbsp;well.</p>
<p>Having determined that it does make sense to actually design the plugin&#8217;s output, but also knowing that there&#8217;s no reasonable way I can design it to match all themes, I do have to make a firm decision about what the basic color scheme for the plugin will be. Originally, I&#8217;d used a basic, Kubrick-derived color set. Now? Well, the sensible thing seems to be to consider branding; set it up using my own website&#8217;s color scheme. It may be subtle, but it will convey my identity, even without my name or <abbr title="Uniform Resource Locator">URL</abbr>. That seems&nbsp;worthwhile.</p>
<p>Guess I better get to work!
<p><strong><a href="http://www.joedolson.com/articles/2010/04/form-over-function-never-thought-about-it/">Form over Function? Never thought about it&#8230;</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/04/form-over-function-never-thought-about-it/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>New WordPress Plugin: My Calendar</title>
		<link>http://www.joedolson.com/articles/2010/04/new-wordpress-plugin-my-calendar/</link>
		<comments>http://www.joedolson.com/articles/2010/04/new-wordpress-plugin-my-calendar/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 22:59:24 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=718</guid>
		<description><![CDATA[Version 1.3.0 released. Numerous bug fixes and new&#160;features. I just launched the first public draft of an online calendar plugin I&#8217;ve been working on for a while. It&#8217;s based on a plugin from Kieran O&#8217;Shea, Calendar, but has been adapted extensively to better suit my own&#160;needs. Hopefully, it&#8217;ll also suit other people&#8217;s&#160;needs. Read more about [...]<p><strong><a href="http://www.joedolson.com/articles/2010/04/new-wordpress-plugin-my-calendar/">New WordPress Plugin: My Calendar</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<div id="update">
<p><strong>Version 1.3.0 released.</strong> Numerous bug fixes and new&nbsp;features.</p>
</div>
<p>I just launched the first public draft of an online calendar plugin I&#8217;ve been working on for a while. It&#8217;s based on a plugin from Kieran O&#8217;Shea, <a href="http://wordpress.org/extend/plugins/calendar/">Calendar</a>, but has been adapted extensively to better suit my own&nbsp;needs. </p>
<p>Hopefully, it&#8217;ll also suit other people&#8217;s&nbsp;needs.</p>
<ul>
<li><a href="/articles/my-calendar/">Read more about My&nbsp;Calendar</a>.</li>
<li><a href="http://wordpress.org/extend/plugins/my-calendar/">Download My&nbsp;Calendar</a>.</li>
<li><a href="/articles/my-calendar/sample-calendar/">View a sample&nbsp;installation</a>.</li>
</ul>
<p>Please leave comments or questions at <a href="/articles/my-calendar/faq/">the My Calendar support page</a>; leave <a href="/articles/my-calendar/requests/">feature requests</a> on the feature request&nbsp;page!</p>
<p><strong><a href="http://www.joedolson.com/articles/2010/04/new-wordpress-plugin-my-calendar/">New WordPress Plugin: My Calendar</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/04/new-wordpress-plugin-my-calendar/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>When More is Less</title>
		<link>http://www.joedolson.com/articles/2010/03/when-more-is-less/</link>
		<comments>http://www.joedolson.com/articles/2010/03/when-more-is-less/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 16:14:08 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=693</guid>
		<description><![CDATA[One of the most famously cliched spy movie themes is the absurdly complex method (and accompanying explanation) in which the villain intends to kill the hero. Layer upon layer of killer sharks, laser beams, poisonous gases, and robot assassins employed with the sole intention of killing one fundamentally normal person (albeit a very suave person, [...]<p><strong><a href="http://www.joedolson.com/articles/2010/03/when-more-is-less/">When More is Less</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>One of the most famously cliched spy movie themes is the absurdly complex method (and accompanying explanation) in which the villain intends to kill the hero. Layer upon layer of killer sharks, laser beams, poisonous gases, and robot assassins employed with the sole intention of killing one fundamentally normal person (albeit a very <em>suave</em> person, of&nbsp;course.)</p>
<p>And, naturally, it always fails. Something goes wrong in the system; gross negligence of maintenance causes a malfunction; or some unanticipated exception allows the hero to&nbsp;escape. </p>
<p>This is an important thing to keep in mind when designing or building a web site, in every aspect. When you think you&#8217;re adding fabulous new functionality or greater accessibility, you should always be thinking about whether you&#8217;re ultimately supporting your visitor&#8217;s needs&thinsp;&#8212;&thinsp;or just making your system needlessly more&nbsp;complex. </p>
<p>Jared Smith, from Web AIM, recently published an article on <a href="http://webaim.org/blog/web-accessibility-preferences-are-for-sissies/">web accessibility preferences</a> expounding on the notion that in most cases, providing tools for your disabled users to change their experience usually means that you haven&#8217;t done your job right in the first place. Perhaps, rather than adding a tool to enable people to adjust your site, you should simply <strong>fix the site</strong>. Jared makes the very good point that in most cases, the people who need text enlargement have already taken care of it through their browser settings or operating system; and those who need extreme enlargement can&#8217;t be helped by a common accessibility widget&thinsp;&#8212;&thinsp;they need software&nbsp;support.</p>
<p>So, given this case, what do you actually accomplish by adding accessibility widgets to a web&nbsp;site? </p>
<p>If you&#8217;ve added them to a global element, to make them available throughout the site, you&#8217;ve made your site more complex: there&#8217;s more information on every page which needs to be sorted through or skipped over. You&#8217;ve added an additional technical element which needs to be supported and maintained&thinsp;&#8212;&thinsp;as browsers change, you&#8217;ll need to be rechecking not just your default settings, but all of the various combinations you&#8217;re providing, as&nbsp;well. </p>
<p>If you&#8217;ve added the same options to a page dedicated to these accessibility options, you&#8217;ve pretty well avoided the problem of having a globally more complicated interface. However, you need to ask yourself whether the problems your accessibility options fix will prevent the users who need them from finding the options!  Take this example: you&#8217;ve chosen a relatively low-contrast (but attractive) text color for your footer and secondary header navigation. Since this color is below the <a href="http://www.joedolson.com/articles/2008/05/testing-color-contrast/"><abbr title="Web Content Accessibility Guidelines">WCAG</abbr> 2 color contrast requirements</a>, you&#8217;re providing a link to a page where the user can select a high-contrast&nbsp;option. </p>
<p>Unfortunately, since the link is in your footer, that user who needs a high-contrast page can&#8217;t actually find the page where they can make the&nbsp;change. </p>
<p>Problems with site complexity don&#8217;t only effect web accessibility, however. Any additional function to your web site needs to be carefully considered before  implementation: is it worth while to add an audio player with auto start to your home page? What are the consequences of making this change? You may think that it&#8217;s a great opportunity to immediately promote your band&#8217;s music to those who want to hear it; but you&#8217;re making the gross assumption that those visitors want to hear it <strong>right now</strong>. They may not. And if they&#8217;re in a sensitive situation&thinsp;&#8212;&thinsp;checking you out from their quiet office cubicle, for example&thinsp;&#8212;&thinsp;then their first reaction is likely to be &#8220;How do I turn this&nbsp;off!&#8221;</p>
<p>Assuming you have decided to add this audio player to your web site&thinsp;&#8212;&thinsp;you may not realize that the most important control you need to have is a prominent <em>STOP</em> button. Otherwise, the most natural way to stop the music is to leave your&nbsp;site. </p>
<p>Any piece of new functionality adds complexity to a site. It may create an undesirable reaction, it may create user confusion&thinsp;&#8212;&thinsp;or it may be a brilliant idea which turns your home business into a multi-million dollar corporation. You shouldn&#8217;t avoid adding functionality on the grounds that anything complicated is going to be a problem; but you should certainly take a very close look at every new feature and decide whether it will add to the user experience. When making that decision, the points to consider are not limited to the value of that feature alone. You need to also consider all the other features which will be simultaneously available; you may want to add a new feature, but move an existing one. It&#8217;s usually not any given feature which causes problems; it&#8217;s having too many paths to follow which may confuse your visitors.
<p><strong><a href="http://www.joedolson.com/articles/2010/03/when-more-is-less/">When More is Less</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/03/when-more-is-less/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Taking a holistic view of SEO in parts.</title>
		<link>http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/</link>
		<comments>http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 15:40:33 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[discussion]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[sef]]></category>
		<category><![CDATA[sem]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=582</guid>
		<description><![CDATA[A couple years ago, I wrote an article addressing the differences between working in a search engine friendly manner and working on search engine optimization. That article talked extensively about what is included in optimization which is not necessarily a part of being search engine&#160;friendly. Shari Thurow, a well-respected researcher in the search engine optimization [...]<p><strong><a href="http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/">Taking a holistic view of SEO in parts.</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>A couple years ago, I wrote an <a href="http://www.joedolson.com/articles/2007/05/search-engine-friendly-vs-search-engine-optimized/">article addressing the differences between working in a search engine <em>friendly</em> manner and working on search engine <em>optimization</em></a>. That article talked extensively about what is included in optimization which is not necessarily a part of being search engine&nbsp;friendly. </p>
<p>Shari Thurow, a well-respected researcher in the search engine optimization and usability realm, suggested that separating the two concepts is, in fact,&nbsp;ridiculous. </p>
<p>Well, that may be. However, I think that it&#8217;s crucial to break a task into parts if you want to gain a thorough understanding of the whole. Search engine marketing is an excellent example of a whole which is greater than the sum of it&#8217;s&nbsp;parts. </p>
<p>As I see it, building a search engine friendly site is one of the first stages of best practice search marketing. The adage &#8220;if you build it, they will come&#8221; fails to hold, however: a site which is constructed <em>merely</em> to be search engine friendly will gain little to no&nbsp;traffic.</p>
<h3>Being part of the&nbsp;process</h3>
<p>Being search engine friendly is a part of the process of search engine optimization; which is, itself, a part of the process of search engine marketing. In addition to these two aspects, search engine marketing may also include pay-per-click advertising, print advertising, link building and social media participation. Search engine marketing is a large area, and very, very few people are expert in all aspects. I&#8217;m certainly&nbsp;not. </p>
<p>From a marketing standpoint, what parts of this marketing whole are necessary for your business to succeed is going to vary radically depending on your industry and the way your business intersects with the internet. It will also depend on your definition of success. If you&#8217;re looking to maximize growth, you&#8217;ll probably want to be investing in all aspects of&nbsp;marketing. </p>
<p>So I&#8217;m arguing that search marketing, while clearly a practice in which the parts of the whole are highly interwoven and carry clear dependencies on each other, can nonetheless be separated into it&#8217;s component parts for a variety of reasons, including for the sake of&nbsp;discussion. </p>
<p>Now let me take this a step further. Not only is it possible to separate search engine marketing into separate aspects for discussion, it&#8217;s&nbsp;<em>valuable</em>.</p>
<p>If you want to understand the interactions between the different aspects of a task, it&#8217;s important to have some information about all parts. In this context, it&#8217;s necessary to treat the whole of search engine marketing in a given discussion. However, when you want to understand the details of a specific task, it&#8217;s important to stay focused on your part of that&nbsp;task. </p>
<p>It&#8217;s necessary for practitioners in search engine marketing to know, in general, what the impact their work will be on all aspects of the marketing campaign. It is <em>crucial</em> for practitioners in search marketing to know, in detail, exactly how to perform their own tasks in the best possible manner for their clients.  It&#8217;s important to treat an area of expertise specifically. Talking through the nature of that area; comparing and contrasting it to other related areas; considering the specific nature of tasks within that area of expertise: these are all ways of better defining and refining knowledge on a specific&nbsp;subject. </p>
<h3>Why does this&nbsp;matter?</h3>
<p>It doesn&#8217;t, really. It&#8217;s all semantics. Search engine optimization is the commonly known term, and it frequently is understood to encapsulate search engine marketing. Or the other way around. The industries around search engines and marketing (and just about anything internet) are young, and the vocabularies aren&#8217;t really all the firmly established. As a result, some people have a very firm opinion of what a given term means which may not always coincide with others&nbsp;definitions. </p>
<p>Well, that&#8217;s why we write about it. We&#8217;re all hoping that our definitions will ultimately win. <img src='http://www.joedolson.com/articles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
<p><strong><a href="http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/">Taking a holistic view of SEO in parts.</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How NOT to use Post meta fields in WordPress Themes</title>
		<link>http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/</link>
		<comments>http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 23:09:54 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[post object]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=577</guid>
		<description><![CDATA[A little while ago, while working on a site built by another developer, I came across this rather interesting example of how to use custom fields badly in a WordPress theme (abbreviated for, well,&#160;brevity): (The original also did this for meta keywords and meta descriptions&#8201;&#8212;&#8201;but the demonstration of this &#8220;logic&#8221; only requires one&#160;field.) &#160; &#60;? [...]<p><strong><a href="http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/">How NOT to use Post meta fields in WordPress Themes</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>A little while ago, while working on a site built by another developer, I came across this rather interesting example of how to use custom fields <em>badly</em> in a WordPress theme (abbreviated for, well,&nbsp;brevity):</p>
<p>(The original also did this for meta keywords and meta descriptions&thinsp;&#8212;&thinsp;but the demonstration of this &#8220;logic&#8221; only requires one&nbsp;field.)</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>is_front_page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;Handwritten title&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">334</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">383</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">381</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-4&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">383</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-5&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">387</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>And so on. For approximately 40 separate pages. It made my brain hurt. For reference, the exact same thing&thinsp;&#8212;&thinsp;for all pages on the site&thinsp;&#8212;&thinsp;could have been accomplished (with better fallback conditions, in fact) with this&nbsp;code:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #339933;">&amp;&amp;</span> is_page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?</span> wp_title<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'right'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span>get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Now, the original code may actually look cleaner&thinsp;&#8212;&thinsp;it does, after all, have fewer functions and fewer variables. However, the second example is a <strong>hell</strong> of a lot more&nbsp;maintainable. </p>
<p>If you add a new page to the site in the first example, you have&nbsp;to:</p>
<ol>
<li>Create the new&nbsp;page.</li>
<li>Add a custom field with the&nbsp;title.</li>
<li>Check the new page&#8217;s&nbsp;ID.</li>
<li>Find the theme file which contains the meta data&nbsp;references.</li>
<li>Add a new line in the <code>elseif</code> loops which references your new page first by slug and then by&nbsp;ID</li>
</ol>
<p>With the second example, you&nbsp;simply:</p>
<ol>
<li>Create the new&nbsp;page.</li>
<li>Add a custom field with the&nbsp;title.</li>
</ol>
<p>No coding, no <abbr title="Hypertext PreProcessing">PHP</abbr>, no editing themes&thinsp;&#8212;&thinsp;it just works. Well, isn&#8217;t that handy? This is just basic good coding practice: make your code reusable. There&#8217;s absolutely no reason to code something into your WordPress Themes which is not readily transportable unless you&#8217;re doing yourself a favor by avoiding an unnecessary server call by hard-coding the site name or other known&nbsp;elements. </p>
<p>The basic difference between these two examples is simple: the first requires you to hard code the ID and page slug for each example; the second grabs the post ID from the existing post object. The second example also has a fall-back if no information has been entered in a given custom field&thinsp;&#8212;&thinsp;which is lacking in the original&nbsp;code. </p>
<p>Word to the wise: save yourself some&nbsp;work!</p>
<p><strong><a href="http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/">How NOT to use Post meta fields in WordPress Themes</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2011 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

