<?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>Digging into WordPress &#187; SEO</title>
	<atom:link href="http://digwp.com/category/seo/feed/" rel="self" type="application/rss+xml" />
	<link>http://digwp.com</link>
	<description>Take your WordPress skills to the next level.</description>
	<lastBuildDate>Fri, 18 May 2012 18:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WordPress CMS Plugins</title>
		<link>http://digwp.com/2012/01/wordpress-cms-plugins/</link>
		<comments>http://digwp.com/2012/01/wordpress-cms-plugins/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:59:05 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=5607</guid>
		<description><![CDATA[To make room for new content for the DiW 3.3 update, we&#8217;re &#8220;excerpting&#8221; this section into its own blog post. Here you&#8217;ll find an extensive round-up of CMS plugins for WordPress. Includes CMS plugins for better admin functionality, user-role management, custom content display, e-commerce &#38; shopping carts, forums, newsletters, and more. Administration Tools These plugins [...]]]></description>
			<content:encoded><![CDATA[<p>To make room for new content for the <abbr title="Digging into WordPress">DiW</abbr> 3.3 update, we&#8217;re &#8220;excerpting&#8221; this section into its own blog post. Here you&#8217;ll find an extensive round-up of CMS plugins for WordPress. Includes CMS plugins for better admin functionality, user-role management, custom content display, e-commerce &amp; shopping carts, forums, newsletters, and more.</p>
<p><span id="more-5607"></span></p>
<h3>Administration Tools</h3>
<p>These plugins provide CMS-like functionality to the WordPress Admin area.</p>
<ul>
<li><a href="http://digwp.com/u/55">WP-CMS Post Control</a> &mdash; Provides complete control over the Write-Page and Write-Post areas of the WordPress Admin. Enables you to hide unwanted items, disable the Flash uploader, kill post revisions, and even add a personal message.</li>
<li><a href="http://digwp.com/u/56">WP-CMS</a> &mdash; Transforms the Admin area to focus more on page creation and less on post creation. Designed to simplify the whole process for your newbie clients. You can even disable the blog functionality entirely.</li>
<li><a href="http://digwp.com/u/57">Flutter</a> &mdash; Enables you to edit posts without leaving the post page and also provides custom write panels that enable further publishing functionality.</li>
<li><a href="http://digwp.com/u/58">Supple Forms</a> &mdash; Enables you to create custom write panels, as well as format and insert values into posts using shortcodes and snippets of HTML.</li>
<li><a href="http://digwp.com/u/59">Custom Write Panel</a> &mdash; Enables you to create additional write panels with customized input fields. Add textboxes, checkboxes, radio-buttons, dropdown menus, and more.</li>
<li><a href="http://digwp.com/u/79">Pods </a> &mdash; Comprehensive CMS functionality, enabling you to create, manage, and display custom content types. Features automatic pagination, public-form filtering, access control, menu editing, and more.</li>
</ul>
<h3>User Role Management</h3>
<ul>
<li><a href="http://digwp.com/u/145">Members</a> &mdash; Comprehensive user-, role-, and content-management plugin that was created to make WordPress a more powerful CMS. Provides more control over your blog with an extensive collection of component-based features.</li>
<li><a href="http://digwp.com/u/567">s2Member</a> &mdash; s2Member provides robust tools for setting up a PayPal-driven membership site, including secure members-only content with custom roles and capabilities.</li>
<li><a href="http://digwp.com/u/60">Role Scoper</a> &mdash; Provides you the ability to specify different permissions levels for different WordPress roles. Also provides options for implementing user groups.</li>
<li><a href="http://digwp.com/u/61">Disclose-Secret</a> &mdash; Enables you to hide specified posts from users unless they meet certain criteria.</li>
<li><a href="http://digwp.com/u/62">Page Restrict</a> &mdash; Enables you to restrict specified pages to logged-in users.</li>
</ul>
<h3>Ordering, Filtering, Limiting and Displaying Content</h3>
<ul>
<li><a href="http://digwp.com/u/65">AStickyPostOrderER</a> &mdash; Enables you to customize post-display order for category views, archive views, and even sitewide.</li>
<li><a href="http://digwp.com/u/66">Advanced Category Excluder</a> &mdash; Provides advanced content separation and category management for WordPress. Exclude any number of categories according to your needs. Also provides control over feeds and search results.</li>
<li><a href="http://digwp.com/u/519">Custom Post Limits</a> &mdash; Provides control over the number of posts that appear on the home page, in various archive views, and in search results.</li>
<li><a href="http://digwp.com/u/495">Custom Query String Reloaded</a> &mdash; Rework of the original plugin, CQS Reloaded controls the number of posts displayed on just about any type of page view, including archives, months, categories, home page, search, and many more. For more information on CQS Reloaded, check out the popout in section 5.1.4.</li>
</ul>
<h3>eCommerce and Shopping Carts</h3>
<ul>
<li><a href="http://digwp.com/u/69">eShop</a> &mdash; Provides shopping-cart functionality that includes customizable product listings, multiple product options, advanced payment options, basic statistics, and more.</li>
<li><a href="http://digwp.com/u/70">WP e-Commerce</a> &mdash; Provides an “elegant and easy to use fully featured shopping cart” that claims to be the “most complete and powerful Shopping Plugin you will find for WordPress.”</li>
<li><a href="http://digwp.com/u/71">YAK for WordPress</a> &mdash; Provides basic shopping-cart functionality that associates products with blog posts.
<li><a href="http://digwp.com/u/72">Quick Shop</a> &mdash; Adds a sidebar widget that displays cart contents to the user and enables easy item removal. Also enables you to easily add products to your posts and pages.</li>
<li><a href="http://digwp.com/u/598">Cart66 Lite</a> &mdash; Shopping cart plugin that enables you to sell digital and/or physical products with a host of useful options. Features include advanced shipping options, custom fields for products, customizable email receipts, Amazon S3 integration, and much more.</li>
</ul>
<h3>Email Mailing List and Newsletter Plugins</h3>
<ul>
<li><a href="http://digwp.com/u/74">WP-Campaign-Monitor</a> &mdash; Email newsletter and SMS functionality enabling users to send campaigns, track results, and manage subscribers. Even includes a plug-n-play sidebar widget.</li>
<li><a href="http://digwp.com/u/75">PHPList Form Integration</a> &mdash; Enables users to easily subscribe to your newsletter or RSS feed from any page on your blog. Designed to work with PHPList, an excellent open-source newsletter manager.
<li><a href="http://digwp.com/u/76">WordPress Double Opt-In Manager Widget</a> &mdash; Enables users to subscribe to your mailing list by way of a double opt-in method that includes the email form and a confirmation email.
<li><a href="http://digwp.com/u/466">MailChimp</a> &mdash; MailChimp is a third-party email newsletter sending service. They have an official plugin to help integrate with WordPress.</li>
</ul>
<h3>Miscellaneous CMS Plugins</h3>
<ul>
<li><a href="http://digwp.com/u/80">ProjectManager</a> &mdash; Manage any number of projects with recurrent datasets. Great for portrait systems, music and DVD collections, and just about anything else imaginable.</li>
<li><a href="http://digwp.com/u/81">WP-PostRatings</a> &mdash; Enables users to rate your post content. Highly customizable. One of the best.</li>
<li><a href="http://digwp.com/u/520">User Submitted Posts</a> &mdash; Enables visitors to submit posts and images from anywhere on your site. User-submitted posts optionally include tags, categories, post title, URL and more.</li>
</ul>
<h3>Using WordPress as a Forum</h3>
<p>Although forum functionality is not (yet) built into the WordPress core, implementing a forum on your site is easily accomplished with the help of these awesome plugins.</p>
<ul>
<li><a href="http://digwp.com/u/119">bbPress Forum</a> &mdash; bbPress is simple, fast, and elegant forum software from the same people who make WordPress. bbPress is focused on web standards, ease of use, ease of integration, and speed.</li>
<li><a href="http://digwp.com/u/521">Simple:Press Forum</a>, aka <em>Simple Forum</em> &mdash; A feature-rich forum plugin for WordPress that fully integrates into your WordPress-powered site. Fully customizable and includes plenty of skins and icons to get you started.</li>
</ul>
<h3>More Forum Plugins</h3>
<p>Here are two more useful forum plugins for WordPress, both include great features and look like great forum solutions.</p>
<ul>
<li><a href="http://digwp.com/u/472">Tal.ki Embeddable Forums</a></li>
<li><a href="http://digwp.com/u/473">Zingiri Forum</a></li>
</ul>
<h3>What else?</h3>
<p>Know of a sweet CMS-related plugin that needs mentioned? Shout it out in the comments to share with the community!</p>
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/01/wordpress-cms-plugins/">Permalink</a> | <a href="http://digwp.com/2012/01/wordpress-cms-plugins/#comments">41 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/01/wordpress-cms-plugins/&title=WordPress CMS Plugins">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/cms/" rel="tag">CMS</a>, <a href="http://digwp.com/tag/plugin/" rel="tag">plugin</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a>, <a href="http://digwp.com/tag/tools/" rel="tag">tools</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/01/wordpress-cms-plugins/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Optimizing WordPress Permalinks</title>
		<link>http://digwp.com/2010/07/optimizing-wordpress-permalinks/</link>
		<comments>http://digwp.com/2010/07/optimizing-wordpress-permalinks/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 08:45:19 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[permalink]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=2026</guid>
		<description><![CDATA[Configuring your WordPress permalinks is simple and only takes a second, but understanding what they are and how they work is key to setting up the best permalink structure possible. Your site&#8217;s permalinks are like the street address for your site&#8217;s web pages. They help both people and robots understand your site&#8217;s structure and navigate [...]]]></description>
			<content:encoded><![CDATA[<p>Configuring your <strong>WordPress permalinks</strong> is simple and only takes a second, but understanding what they are and how they work is <em>key</em> to setting up the <strong>best permalink structure possible</strong>. Your site&rsquo;s permalinks are like the street address for your site&rsquo;s web pages. They help both people and robots understand your site&rsquo;s structure and navigate its contents. There is no &ldquo;one magic permalink recipe to rule them all,&rdquo; but keeping a few tips in mind makes it <em>easy</em> to <strong>optimize your WordPress permalinks</strong>. This <abbr title="Digging into WordPress">DiW</abbr> article shows you how..</p>
<p><span id="more-2026"></span></p>
<h3>WordPress makes it <em>so</em> easy</h3>
<p>WordPress gives you full control over your permalinks. First, you have control over the <em>general structure</em> of your permalinks. Navigate to <strong>Settings &gt; Permalinks</strong> and you will see several options for configuring your permalinks:</p>
<p><img src="http://digwp.com/wp-content/blog-images/optimize-permalinks-setting.gif" alt="[ Screenshot: WP Permalink Settings ]" title="WordPress provides control over the general structure of your permalinks" /></p>
<p>This is where you configure the general structure of your permalinks, as seen here with green underline. The portion underlined in red is post/page-specific, and will vary depending on your individual posts and pages. For <a href="http://digwp.com/" title="Digging into WordPress">DigWP.com</a>, we chose the &ldquo;month and name&rdquo; format, which creates the following permalinks according to page-view:</p>
<ul>
<li><strong>Pages</strong> &rarr; <code>http://digwp.com/about/</code></li>
<li><strong>Tag Archives</strong> &rarr; <code>http://digwp.com/tag/permalinks/</code></li>
<li><strong>Category Archives</strong> &rarr; <code>http://digwp.com/category/seo/</code></li>
<li><strong>Single Posts</strong> &rarr; <code>http://digwp.com/2010/05/wordpress-json-api-plugin/</code></li>
</ul>
<p>..and so on. The main thing that you want to optimize at this point is the structure of your single-post permalinks. We chose to include the year and month for our posts, but it has been argued that it is better to omit the date entirely, using a &ldquo;Custom structure&rdquo; like so:</p>
<p><code>/%postname%/</code></p>
<p>This simple structure will produce single-post permalinks that include only the post name:</p>
<p><code>http://digwp.com/wordpress-json-api-plugin/</code></p>
<p>Without the additional date information, this structure is definitely shorter and cleaner, but there may be <a href="http://dougal.gunters.org/blog/2009/02/04/efficient-wordpress-permalinks" title="Efficient permalink strategies for WordPress">performance issues involved with using the &ldquo;name-only&rdquo; permalink format</a>. Perhaps a good trade-off is to include either the post ID or the year:</p>
<pre><code>/%post_id%/%postname%/
/%year%/%postname%/</code></pre>
<p>I think either of these formats is probably an optimal way to configure your permalinks, but you also want to consider the frequency with which you&rsquo;ll be posting content. It may be beneficial to further organize/classify your posts by including the month and day as well. </p>
<p>Certain &ldquo;experts&rdquo; will tell you that including extraneous date information is bad for <acronym title="Search Engine Optimization">SEO</acronym>. The thinking here is that shorter <acronym title="Uniform Resource Locator">URL</acronym>s correspond to a more &ldquo;flat&rdquo; directory structure, which <a href="http://www.seomoz.org/blog/whiteboard-friday-flat-site-architecture" title="Whiteboard Friday - Flat Site Architecture">may provide some SEO benefits</a>. I think the key is to use what&rsquo;s necessary and omit any extraneous information.</p>
<h3>Post/page-specific permalink structures (slugs!)</h3>
<p>Once you&rsquo;ve defined the <em>general</em> permalink structure in the WordPress Admin, you now have full control over your post-specific and page-specific permalink structures (as seen in the above screenshot, red underline). The part of your permalinks that is specific to each page or post is set in the <strong>Write/Edit Post</strong> screen in the WordPress Admin.</p>
<p><img src="http://digwp.com/wp-content/blog-images/optimize-permalinks-slugs.gif" alt="[ Screenshot: WordPress Post Slugs ]" /></p>
<p>As shown in the above screenshot, WordPress provides an &ldquo;Edit&rdquo; button that enables you to modify the post-specific portion of your permalinks:</p>
<p><img src="http://digwp.com/wp-content/blog-images/optimize-permalinks-slugs-e.gif" alt="[ Screenshot: Editing Post Slugs ]" /></p>
<p>This feature enables you to customize your post/page-specific permalinks (also known as a post &ldquo;slug&rdquo;) according to your current permalink optimization strategy. Here are a few examples of commonly employed &ldquo;post-slug&rdquo; strategies:</p>
<dl>
<dt>Don&rsquo;t even worry about it</dt>
<dd>Just let WordPress generate the post-specific slug based on the post or page title. Pros: this is certainly the easiest method of creating permalinks because no thought or action is required. Cons: depending on your post title, you could get some pretty long permalinks that look awkward and sloppy.</dd>
<dt>Remove extraneous words, leave only keywords</dt>
<dd>I have seen lots of blogs do this. It basically involves using the permalink that WordPress generates based on your title, then going in and removing words like &ldquo;the&rdquo;, &ldquo;and&rdquo;, and &ldquo;you&rdquo;, as well as other pronouns and such. Basically the idea is to leave only keywords in your permalinks. This helps keep them short, focused, and optimized for the search engines.</dd>
<dt>Customize every permalink with optimized keywords</dt>
<dd>This is the most labor-intensive strategy, but also potentially the most lucrative in terms of return on investment. The idea here is to research or otherwise understand which keywords your page is going to rank for, and then crafting a post-specific permalink structure based on those keywords. I have seen cases where this is taken to such an extreme that the post slug is completely different than the original post title.</dd>
</dl>
<p>The same goes for both posts and pages, regardless of which method you choose. Personally, I employ a combination of the first two strategies, whereby I go in, write a title, and then look at it and see if there is anything that could be improved. Usually there are several words that need to go, and possibly a keyword or two is added or removed. It&rsquo;s funny because I usually end up rewriting some of the post content after spending some time actually thinking about what to name it. </p>
<blockquote><p>There is always a better title than the one you think should be used.</p></blockquote>
<p>The take-home message here is that, by paying attention to post titles and permalinks, you benefit from improved relevancy and potential <acronym title="Search Engine Optimization">SEO</acronym> advantage.</p>
<h3>Think of your users</h3>
<p>When visitors land on your page, does the <acronym title="Uniform Resource Locator">URL</acronym> make sense? Does it correlate with the page title? These are some of the things to think about while setting up the general structure and post-specific slugs for your permalinks. Look at the permalink and ask yourself if it makes complete sense based on what the user will be looking at on the page. If you get too carried away with optimization, a user may get a sense that something isn&rsquo;t quite right. Perhaps the post title says something like:</p>
<p><strong>The Best Name-Brand Shoes</strong></p>
<p>..but then the post slug looks something like this:</p>
<p><code>http://example.com/nike-adidas-reebok-zip-converse-shoes/</code></p>
<p>Perhaps a weak example, but it serves to illustrate the semantic gap that may occur when over-thinking your permalinks.</p>
<h3>Think of the search engines</h3>
<p><em>After</em> considering your users, think about what the search engines are going to see when they come crawling your pages. Does the permalink match the content of the page? If you aren&rsquo;t bothering with changing or optimizing your post slugs, then the answer is probably yes because WordPress generates the slug from the post title.</p>
<p>Also, as mentioned previously, some have argued in favor of a more &ldquo;flat&rdquo; directory structure in order to improve the <acronym title="Search Engine Optimization">SEO</acronym> value of your blog. Whether or not this is actually the case is up for discussion, but it always makes sense to keep things as simple and concise as possible. So when deciding on the general structure for your permalinks, ask yourself if you really need a directory structure that is over three levels deep, like this:</p>
<pre><code>domain/
	2010/
	      01/
		  1/
			post-slug-1
			post-slug-2
			post-slug-3
		  2/
			post-slug-4
			post-slug-5
			post-slug-6
		  3/
			post-slug-7
			post-slug-8
			post-slug-9
	      .
	      .
	      .
	2011/
	2012/</code></pre>
<p>That&rsquo;s going to give you some <em>long</em> permalinks, especially if you just use the default WordPress-generated slugs. When you look at a permalink using &ldquo;<code>year/month/name</code>&rdquo; format, you are essentially creating a virtual folder structure with a subdirectory for each part of the permalink &ndash; the year represents a directory in which you have a bunch of directories for each month, and within each of those directories there could be as many as 31 subdirectories for each day of the month. Then, within each day of the month, you have the post file itself, which may involve further subdirectories when paging is used. It can get crazy pretty quickly, and even though these subdirectories only exist virtually, to a search spider, there is no practical difference between <em>virtual</em> directories that are deeply nested and <em>actual</em> directories that are deeply nested.</p>
<p>When deciding on your permalink structure, ask yourself if you really need the date built into your permalinks. If you are posting prolifically, then you may want to include the date to help keep things organized. Anything less than a few posts a week, and I would opt to go with something simpler, like maybe &ldquo;<code>year/post</code>&rdquo; or &ldquo;<code>id/post</code>&rdquo;, as mentioned above.</p>
<p>Another thing that needs considering is the notion of &ldquo;evergreen content&rdquo;, which generally refers to content that is intended to stay &ldquo;fresh&rdquo; or relevant forever. Regardless how silly this <acronym title="Search Engine Optimization">SEO</acronym> idea happens to be, you may want to consider either omitting or including some sort of date information based on how easily you want the publication date to be recognized by your visitors. I.e., if you are trying to &ldquo;hide&rdquo; the post date in hopes that your content will rank for a longer period of time, then you should omit it from the general permalink structure. Conversely, if you aren&rsquo;t that slimy and want to make it easy for people to know when the post was produced, then throw a year or year/month into the mix. Whatever!</p>
<h3>Think simplicity</h3>
<p>When it comes to organizing the content of your site, <strong>there is a fine balance</strong> between being <em>well-organized</em> and keeping things <em>simple</em>. For example, the simplest structure would involve all posts and pages directly under the root domain. Clean and simple, but as time goes on and your post count gets into the hundreds or thousands, it could be a drag trying to sort through everything in a flat directory structure. Thus, another reason why breaking things down into categories or dates may help your long-term organizational and maintenance strategy.</p>
<p>For the post-specific portion of the permalinks (the post slug), it is also wise to keep things simple, but not at the risk of duplicating post names. For example, if you are writing a post about jQuery, you might have a post slug that is simply &ldquo;<code>jquery</code>&rdquo;, but it&rsquo;s not going to be very helpful. First, it probably will never rank for that term. Second, telling users that the article is about &ldquo;jQuery&rdquo; is about as useless as it gets for both people <em>and</em> machines. So although that would be the simplest permalink possible, it is your interest to specify a little more clearly the content of your post. It just makes everything easier when meaning is readily available from your permalinks.</p>
<h3>Do it <em>before</em> posting</h3>
<p>Once you hit the &ldquo;Publish&rdquo; button, there is <strong>one</strong> thing that you shouldn&rsquo;t change: the post slug. After publishing a post, you can easily and without consequence go back and change the title, meta title, post content, and just about everything else. But as soon as you change that permalink, you will need to 301 redirect the former <acronym title="Uniform Resource Locator">URL</acronym> to the new one in order to avoid perpetual 404 errors now and in the future. But, if you do need to change the permalink <em>after</em> posting, here is a simple line of <acronym title="Hypertext Access">HTAccess</acronym> to help you eliminate any potential 404 errors:</p>
<pre><code>Redirect 301 /old-post-slug/ http://example.com/new-post-slug/</code></pre>
<p>So it&rsquo;s really very simple: we first call the redirect directive, declare it as status 301 (permanent), and then add the old slug followed by the new one. That line will redirect any requests for your previously &ldquo;slugged&rdquo; <acronym title="Uniform Resource Locator">URL</acronym> to your new <acronym title="Uniform Resource Locator">URL</acronym>. For more information on htaccess redirects, check <a href="http://perishablepress.com/press/2008/12/31/redirect-all-broken-links-from-any-domain-via-htaccess/" title="Redirect All (Broken) Links from any Domain via HTAccess">here</a> and <a href="http://perishablepress.com/press/2008/08/12/redirect-all-requests-for-a-nonexistent-file-to-the-actual-file/" title="Redirect All Requests for a Nonexistent File to the Actual File">here</a>.</p>
<h3>Think of the keywords</h3>
<p>As discussed, a great way to create focused, relevant permalinks is to remove the fluff and include only the important keywords. Granted, Google et al may already discount simple words such as &ldquo;if&rdquo;, &ldquo;and&rdquo;, and &ldquo;the&rdquo;, but you may also have keywords for which you don&rsquo;t necessarily want to rank. For example, if you published a post on why Batman is terrible at website design, you may wind up with a auto-generated post slug like this:</p>
<p><code>batman-sucks-at-website-design</code></p>
<p>The word &ldquo;at&rdquo; should probably go, leaving this:</p>
<p><code>batman-sucks-website-design</code></p>
<p>But you may want to rank primarily for the term &ldquo;website-design&rdquo;, while &ldquo;batman&rdquo; is merely anecdotal, used as example, or whatever. Chances are low that anybody is searching for &ldquo;batman website design&rdquo;, but you never know.</p>
<h3>WordPress removes stuff too</h3>
<p>It should also be noted that WordPress removes certain things from your post/page slugs as well. Namely, any punctuation that is included in your post titles will be removed when WordPress automatically generates the post slug. This is both a good thing and a bad thing, depending on how you look at it. There are certain characters that are not allowed in <em>any</em> <acronym title="Uniform Resource Locator">URL</acronym>, so WordPress is wise to remove them for you. On the downside, removal of punctuation and the use of hyphens as replacements for periods can leave you with some rather odd-looking permalinks. For example, when writing about the latest WordPress update, say version 3.1 specifically, writing this as your title:</p>
<p><code>Introducing WordPress 3.1</code></p>
<p>..will give you this as the default post slug:</p>
<p><code>/introducing-wordpress-3-1/</code></p>
<p>..which to me just looks incorrect, like somebody wasn&rsquo;t paying attention. Moral of the story: even if you&rsquo;re too lazy to optimize your permalink slugs, it is <em>wise to be mindful</em> of what&rsquo;s going on with the auto-generated stuff. In this regard, the WordPress devs made an excellent decision when they decided to move the permalink edit box to just below the post title. I do think it could be a little longer though. Most of the time you need to scroll sideways a bit to see what the entire permalink is looking like.</p>
<h3>WordPress short URLs</h3>
<p>What about Twitter-friendly &ldquo;shortlinks&rdquo; for your posts? Generally even the shortest permalink is going to be too long for tweeting, posting, sharing, etc. There are <a href="http://perishablepress.com/press/2009/10/18/stupid-twitter-tricks/" title="Stupid Twitter Tricks">many ways to create short links</a>, but WordPress actually has <em>two</em> built-in ways to create and display short <acronym title="Uniform Resource Locator">URL</acronym>s. Let&rsquo;s take a look at each:</p>
<p>First is the &ldquo;old&rdquo; way of doing it. By default, WordPress uses a query-string format for your <acronym title="Uniform Resource Locator">URL</acronym>s. As discussed throughout this article, most WordPress users opt for the &ldquo;pretty&rdquo; permalinks instead of going with the &ldquo;ugly&rdquo; default <acronym title="Uniform Resource Locator">URL</acronym>s. But even when permalinks are used, WordPress still understands the default query-string <acronym title="Uniform Resource Locator">URL</acronym> structure, so you can include short links in your posts by doing something like this:</p>
<pre><code>&lt;?php echo get_bloginfo('url')."/?p=".$post-&gt;ID; ?&gt;</code></pre>
<p>Shortlinks have become so common that <a href="http://codex.wordpress.org/Function_Reference/the_shortlink" title="Function Reference/the shortlink">WordPress 3.0 now includes</a> a built-in template tag for this very purpose. All you need to display shortlinks in WordPress 3 and above is include the following code in your theme template file(s):</p>
<p><code>&lt;?php the_shortlink('link text', 'link title', 'before link', 'after link'); ?&gt;</code></p>
<p>Either of these methods will output a link with the following <acronym title="Uniform Resource Locator">URL</acronym> structure:</p>
<p><code>http://example.com/?p=77</code></p>
<p>Also note that WordPress 3.0 now includes a shortlink in the <code>&lt;head&gt;</code> section of your posts and pages, something like this:</p>
<p><code>&lt;link rel='shortlink' href='http://example.com/?p=77' /&gt;</code></p>
<p>This is in <em>addition</em> to the canoncial link tag that is also included in the <code>&lt;head&gt;</code> section.</p>
<h3>WordPress canonical links</h3>
<p>WordPress canonical <acronym title="Uniform Resource Locator">URL</acronym>s are included in the <code>&lt;head&gt;</code> section of your posts and pages. They look like this:</p>
<p><code>&lt;link rel='canonical' href='http://example.com/post-slug/' /&gt;</code></p>
<p>These canonical links help the search engines better understand the structure and content of your site. By including the canoncial element in your pages, you are telling Google et al which pages are <em>the</em> actual, canonical pages for your site. There are several cases where this is extremely helpful, namely:</p>
<ul>
<li>Social media linking often involves shortlinks &ndash; specifying a canonical link helps ensure that all of the shortlinking is sorted out and that your actual page gets the credit</li>
<li>Shopping cart sites that feature lots of query-string <acronym title="Uniform Resource Locator">URL</acronym>s &ndash; when many links look practically identical, having a canonical link specified helps to sort things out</li>
<li>Guest posting and other duplicate content &ndash; when your content is featured (or scraped) in multiple places around the Web, it is nice to have a clear signal as to which case is canonical</li>
</ul>
<h4>You don&#8217;t need htaccess to make changes</h4>
<p>What if you want to change the <em>general</em> structure of your permalinks? How do you go about doing that without losing your page rank while creating a mess of 404 errors? In older versions of WordPress, this was a real concern. Many folks began with full-date permalinks and then later realized they wanted cleaner, shorter, &ldquo;dateless&rdquo; permalinks instead. To do this back in the day, some <a href="http://perishablepress.com/press/2008/02/06/permalink-evolution-customize-and-optimize-your-dated-wordpress-permalinks/" title="Permalink Evolution: Customize and Optimize Your Dated WordPress Permalinks">HTAccess trickery</a> was required to keep the old links from going nowhere. </p>
<p>Fortunately those days are long gone, as WordPress now automagically handles all the redirecting for you when making changes to the <strong>general structure</strong> of your permalinks (via the <strong>Settings &gt; Permalinks</strong> options in the WordPress Admin). All you need to do is change the setting to whatever structure you would like and WordPress takes care of the rest. Just remember to backup your database and htaccess file before making any changes.</p>
<hr />
<p><small>© 2010 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2010/07/optimizing-wordpress-permalinks/">Permalink</a> | <a href="http://digwp.com/2010/07/optimizing-wordpress-permalinks/#comments">38 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2010/07/optimizing-wordpress-permalinks/&title=Optimizing WordPress Permalinks">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/optimization/" rel="tag">optimization</a>, <a href="http://digwp.com/tag/permalink/" rel="tag">permalink</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2010/07/optimizing-wordpress-permalinks/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Custom Page Titles from Scratch</title>
		<link>http://digwp.com/2010/04/custom-page-titles/</link>
		<comments>http://digwp.com/2010/04/custom-page-titles/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 18:33:20 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[title]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=1953</guid>
		<description><![CDATA[The titles of pages are controlled by the &#60;title> tag in the &#60;head> section of a website. They are important for all kinds of reasons. Telling the user where they are. The name of the page when bookmarked both locally and socially. They are important for SEO. So how do we typically handle page titles [...]]]></description>
			<content:encoded><![CDATA[<p>The titles of pages are controlled by the &lt;title> tag in the &lt;head> section of a website. They are important for all kinds of reasons. Telling the user where they are. The name of the page when bookmarked both locally and socially. They are important for SEO.  </p>
<p>So how do we typically handle page titles in WordPress? Hopefully we are A) Using a theme that uses <a href="http://digwp.com/2009/06/custom-wordpress-title-tags/">a pretty smart default page titling system</a> or B) using a plugin that helps us with this same task automatically, as most SEO plugins at least attempt.</p>
<p>The problem with A is that it doesn&#8217;t afford any way to individually override any particular page with a special title. With B, it depends on which plugin you use, but not all of them allow for <em>full</em> control over the <em>entire</em> title, often just the slug that fits into the overall chosen method.</p>
<p><img src="http://digwp.com/wp-content/blog-images/bendtomywill.jpg" width="549" height="268" alt="" title="" /></p>
<p>Finally fed up with both of these techniques, I rolled my own!</p>
<p><span id="more-1953"></span></p>
<h3>Step 1: Remove &lt;title></h3>
<p>Whatever you have for the &lt;title> tag in the header.php file, just get rid of it.</p>
<p><img src="http://digwp.com/wp-content/blog-images/removetitle.png" width="590" height="248" alt="" title="" /></p>
<p>We&#8217;ll be inserting that automatically in the wp_head(); function, so that needs to be there.</p>
<h3>Step 2: New stuff for functions.php file</h3>
<p>We&#8217;re doing three things here.</p>
<ol>
<li>Add a new input box to the admin pages for creating and editing new Posts/Pages</li>
<li>Save the the value of that input box when that Post/Page is saved</li>
<li>Echo out a new title as part of the wp_head() function</li>
</ol>
<pre><code>// Custom Page Titles
add_action('admin_menu', 'custom_title');
add_action('save_post', 'save_custom_title');
add_action('wp_head','insert_custom_title');
function custom_title() {
	add_meta_box('custom_title', 'Change page title', 'custom_title_input_function', 'post', 'normal', 'high');
	add_meta_box('custom_title', 'Change page title', 'custom_title_input_function', 'page', 'normal', 'high');
}
function custom_title_input_function() {
	global $post;
	echo '&lt;input type="hidden" name="custom_title_input_hidden" id="custom_title_input_hidden" value="'.wp_create_nonce('custom-title-nonce').'" /&gt;';
	echo '&lt;input type="text" name="custom_title_input" id="custom_title_input" style="width:100%;" value="'.get_post_meta($post-&gt;ID,'_custom_title',true).'" /&gt;';
}
function save_custom_title($post_id) {
	if (!wp_verify_nonce($_POST['custom_title_input_hidden'], 'custom-title-nonce')) return $post_id;
	if (defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE) return $post_id;
	$customTitle = $_POST['custom_title_input'];
	update_post_meta($post_id, '_custom_title', $customTitle);
}
function insert_custom_title() {
	if (have_posts()) : the_post();
	  $customTitle = get_post_meta(get_the_ID(), '_custom_title', true);
	  if ($customTitle) {
		echo "&lt;title&gt;$customTitle&lt;/title&gt;";
      } else {
    	echo "&lt;title&gt;";
	      if (is_tag()) {
	         single_tag_title("Tag Archive for &amp;quot;"); echo '&amp;quot; - '; }
	      elseif (is_archive()) {
	         wp_title(''); echo ' Archive - '; }
	      elseif ((is_single()) || (is_page()) &amp;&amp; (!(is_front_page())) ) {
	         wp_title(''); echo ' - '; }
	      if (is_home()) {
	         bloginfo('name'); echo ' - '; bloginfo('description'); }
	      else {
	          bloginfo('name'); }
	      if ($paged&gt;1) {
	         echo ' - page '. $paged; }
        echo "&lt;/title&gt;";
    }
    else :
      echo "&lt;title&gt;Page Not Found | Envision&lt;/title&gt;";
	endif;
	rewind_posts();
}</code></pre>
<p>The new input box we are putting on the page saves its value as a custom field on the Post/Page you are on. The key of that custom field is &#8220;_custom_title&#8221;, so it doesn&#8217;t show in the regular custom field list (custom fields that start with underscores don&#8217;t).</p>
<p>Now when any front-end page of the site loads, it checks that page to see if that custom field exists. If it does exist, it uses that value exactly for the page title. If it doesn&#8217;t, it defaults to a generically smart page title structure.</p>
<h3>Result</h3>
<p>This is the box that now is available when creating or editing a Page/Post:</p>
<p><img src="http://digwp.com/wp-content/blog-images/custompagetitle.png" width="590" height="194" alt="" title="" /></p>
<p>And that is what will be used:</p>
<p><img src="http://digwp.com/wp-content/blog-images/customtitleexerted.jpg" width="520" height="200" alt="" title="" /></p>
<hr />
<p><small>© 2010 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2010/04/custom-page-titles/">Permalink</a> | <a href="http://digwp.com/2010/04/custom-page-titles/#comments">21 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2010/04/custom-page-titles/&title=Custom Page Titles from Scratch">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/functions/" rel="tag">functions</a>, <a href="http://digwp.com/tag/title/" rel="tag">title</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2010/04/custom-page-titles/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>How To: Breadcrumbs in WordPress</title>
		<link>http://digwp.com/2009/09/how-to-breadcrumbs-in-wordpress/</link>
		<comments>http://digwp.com/2009/09/how-to-breadcrumbs-in-wordpress/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 08:01:59 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=729</guid>
		<description><![CDATA[I&#8217;ve always used plugins for breadcrumbs, but of course rolling your own is always appealing. Gilbert Pellegrom shows us how to do it with our own custom functions. Update: apparently the page is no longer active. If anyone knows an alternate location of Gilbert&#8217;s post, please let us know. Thanks. Dead link: http://www.gilbertpellegrom.co.uk/how-to-breadcrumbs-in-wordpress/ Update: Thanks [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always used plugins for breadcrumbs, but of course rolling your own is always appealing. Gilbert Pellegrom shows us how to do it with our own custom functions.</p>
<p><strong>Update:</strong> apparently the page is no longer active. If anyone knows an  alternate location of Gilbert&#8217;s post, please let us know. Thanks.</p>
<p>Dead link: <code>http://www.gilbertpellegrom.co.uk/how-to-breadcrumbs-in-wordpress/</code></p>
<p><strong>Update:</strong> Thanks to Tricia for sending a working URL for the post:</p>
<p>Live link: <a href="http://gilbert.pellegrom.me/how-to-breadcrumbs-in-wordpress/">http://gilbert.pellegrom.me/how-to-breadcrumbs-in-wordpress/</a></p>
<hr />
<p><small>© 2009 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2009/09/how-to-breadcrumbs-in-wordpress/">Permalink</a> | <a href="http://digwp.com/2009/09/how-to-breadcrumbs-in-wordpress/#comments">No comment</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2009/09/how-to-breadcrumbs-in-wordpress/&title=How To: Breadcrumbs in WordPress">del.icio.us</a> | Post tags: <br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2009/09/how-to-breadcrumbs-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

