<?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>Monday By Noon &#187; Custom Post Types</title>
	<atom:link href="http://mondaybynoon.com/tag/custom-post-types/feed/" rel="self" type="application/rss+xml" />
	<link>http://mondaybynoon.com</link>
	<description>A resource for Web designers and developers to read about and discuss their craft.</description>
	<lastBuildDate>Wed, 08 Feb 2012 13:49:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>&#8226; WordPress Archive Pages Based on Custom Taxonomy</title>
		<link>http://mondaybynoon.com/feeder/?FeederAction=clicked&#038;feed=Posts+%28RSS2%29&#038;seed=http%3A%2F%2Fmondaybynoon.com%2F20100906%2Fwordpress-archive-pages-taxonomy%2F&#038;seed_title=%26%238226%3B+WordPress+Archive+Pages+Based+on+Custom+Taxonomy</link>
		<comments>http://mondaybynoon.com/20100906/wordpress-archive-pages-taxonomy/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 17:25:56 +0000</pubDate>
		<dc:creator>Jonathan Christopher</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Custom Post Types]]></category>
		<category><![CDATA[permalinks]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[slug]]></category>
		<category><![CDATA[Taxonomies]]></category>
		<category><![CDATA[taxonomy]]></category>

		<guid isPermaLink="false">http://mondaybynoon.com/?p=1253</guid>
		<description><![CDATA[Customizing and segmenting Custom Taxonomy archive pages can be a bit difficult until you determine what exactly is going on under the hood and implementing from there. Custom Taxonomies in WordPress are a very powerful feature, let's figure out how to make some nice looking archive pages for them.<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1253&c=312075646' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1253&c=312075646' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></description>
			<content:encoded><![CDATA[<p class="update"><strong>Please Note:</strong> This article has since been extended. Please read more up-to-date information in <a href="/2011/05/20/revisiting-custom-post-types-taxonomies-permalinks-slugs/">Revisiting Custom Post Types, Custom Taxonomies, and Permalinks</a></p>
<p class="update"><strong>Note:</strong> This article is an extension of <a href="/2010/09/06/custom-post-types-taxonomies-permalinks-wordpress/">Custom Post Types, Custom Taxonomies, and Permalinks in WordPress 3.0</a> which discusses the Custom Post Type and Custom Taxonomy implementation we&#8217;ve setup thus far. While a summary is offered here, please know that some details discussed herein reflect the <a href="/2010/09/06/custom-post-types-taxonomies-permalinks-wordpress/">implementation discussed previously</a>.</p>
<p>In order to set up front end visible archive pages for Custom Taxonomies, everything begins with the rewrite slug attached to your Custom Taxonomy. This can be edited using the Custom Rewrite Slug field provided by <a href="http://wordpress.org/extend/plugins/custom-post-type-ui/">Custom Post Type UI</a>. Some planning is required on your part, but the plan must take into consideration the Page structure currently implemented.</p>
<p>So far, we&#8217;ve based our Cameras Custom Post Type on the slug of <code>/cameras/</code>. This works out well as our Custom Post Type houses information based on DSLR Cameras. We&#8217;ve set up an index-style page that sits at <code>/cameras/</code>, and our single pages are stored under <code>/cameras/%postname%/</code>. We&#8217;ve just now included a Custom Taxonomy, and we&#8217;d like to include that in the mix as well.</p>
<h2>Out of the box taxonomy permalinks</h2>
<p>By default, a Custom Taxonomy rewrite slug is based on the Taxonomy Name. Considering our Brands Custom Taxonomy, we might expect the Taxonomy listing would be made available at <code>/cameras/brands/%taxonomyname%/</code>; unfortunately that&#8217;s not the case. Given the Taxonomy being a default implementation, we&#8217;d actually find the listing at <code>/brands/%taxonomyname%/</code>. You&#8217;ll also note that any Cameras we&#8217;ve marked under a particular brand will show up in the listing. For example, if we navigated to <code>http://wordpress/cpt/brands/canon/</code>, we&#8217;d be faced with a page resembling:</p>
<p><img class="alignnone size-full wp-image-1256" title="01-default-listing" src="/wp-content/uploads/2010/09/01-default-listing.jpg" alt="Default post listing based on taxonomy" width="1020" height="1130" /></p>
<p>This listing behaves just like a regular Posts archive page would, and that&#8217;s because it&#8217;s literally based on the <code>archive.php</code> template file of your theme. While it works, it&#8217;s not ideal. Thinking ahead, if you have multiple Custom Post Types along with WordPress posts, there isn&#8217;t much segmentation when it comes to actually viewing archive pages on the front end.</p>
<p>Take into consideration the possibility of us expanding our content by also including a Custom Post Type for Flashes. If we were to use a Custom Taxonomy for Flash Brands (as opposed to Camera Brands) with that Custom Post Type as well, we&#8217;d have overlapping entries and it would quickly become unorganized as results for both flashes and cameras would turn up when viewing <code>http://wordpress/cpt/brands/canon/</code> which isn&#8217;t always desirable.</p>
<p>At this point it&#8217;s important to note the specificity of a Custom Post Type/Custom Taxonomy implementation. There is a strong possibility that you very well may want to merge Canon flashes and cameras in your archive pages, but you may not. For the purpose of example, we&#8217;re going to deem it necessary to segment the two. To accomplish that, you&#8217;ll need to beef up the rewrite slug for your Custom Taxonomies.</p>
<h2>Customizing your Custom Taxonomy template</h2>
<p>When dealing with taxonomies, WordPress looks for specific theme files. As with other theme files, templates for Custom Taxonomies can be based on the taxonomy name, in this case <code>brands</code>. Create a file called <code>taxonomy-brands.php</code> in your theme directory, WordPress checks for this file before hitting <code>archive.php</code> which can allow you to make the front end more custom. As an example, we&#8217;ll use the following for our <code>taxonomy-brands.php</code>:</p>
<pre class="sh_php"><code>&lt;?php get_header(); ?&gt;

  &lt;?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?&gt;
  &lt;div id="container"&gt;
    &lt;div id="content" role="main"&gt;

      &lt;h1 class="page-title"&gt;&lt;?php echo $term-&gt;name; ?&gt; Archives&lt;/h1&gt;

      &lt;?php if (have_posts()) : ?&gt;
        &lt;?php while (have_posts()) : the_post(); ?&gt;

          &lt;div class="post type-post hentry"&gt;
            &lt;h2 class="entry-title"&gt;
              &lt;a href="&lt;?php echo get_permalink(); ?&gt;" title="&lt;?php the_title(); ?&gt;" rel="bookmark"&gt;
                &lt;?php the_title(); ?&gt;
              &lt;/a&gt;
            &lt;/h2&gt;

            &lt;div class="entry-meta"&gt;
              &lt;span class="meta-prep meta-prep-author"&gt;Posted on&lt;/span&gt;
              &lt;a href="&lt;?php echo get_permalink(); ?&gt;" title="&lt;?php the_time( 'g:i a' ); ?&gt;" rel="bookmark"&gt;
              &lt;span class="entry-date"&gt;&lt;?php the_time( 'F j, Y' ); ?&gt;&lt;/span&gt;&lt;/a&gt;
            &lt;/div&gt;&lt;!-- .entry-meta --&gt;

            &lt;div class="entry-summary"&gt;
              &lt;?php the_excerpt(); ?&gt;
            &lt;/div&gt;&lt;!-- .entry-summary --&gt;
          &lt;/div&gt;

        &lt;?php endwhile; ?&gt;
      &lt;?php endif; ?&gt;

    &lt;/div&gt;&lt;!-- #content --&gt;
  &lt;/div&gt;&lt;!-- #container --&gt;

  &lt;?php get_sidebar(); ?&gt;
&lt;?php get_footer(); ?&gt;</code></pre>
<p>This file is based on <code>category.php</code> with a few modifications. First is the call to <code>get_term_by()</code> which uses <code>get_query_var()</code> to determine what Custom Taxonomy term we&#8217;re working with. From there, we carry on through The Loop as normal, outputting the information we&#8217;d like to use and where.</p>
<p>The only lasting problem here, is the fact that we&#8217;re still sitting at <code>http://wordpress/cpt/brands/canon/</code>. I&#8217;d much rather have this page available at <code>http://wordpress/cpt/<strong>cameras</strong>/brands/canon/</code> as to differentiate it from other Custom Post Types and their Custom Taxonomies.</p>
<h2>Correctly identifying your rewrite slug</h2>
<p><a href="http://wordpress.org/extend/plugins/custom-post-type-ui/">Custom Post Type UI</a> makes it really easy to modify our Custom Rewrite Slug, which controls this change entirely. As mentioned earlier, a rewrite slug, unless otherwise defined, is based on the Custom Taxonomy name itself, hence our current <code>/brands/%taxonomyname%/</code> result. We simply need to change our Custom Rewrite Slug to include the URL structure we&#8217;re looking for, in this case <strong>cameras/brands</strong>:</p>
<p><img class="alignnone size-full wp-image-1257" title="02-new-slug" src="/wp-content/uploads/2010/09/02-new-slug.jpg" alt="Refining the slug used for a taxonomy archive page" width="393" height="221" /></p>
<p>Saving the change to our Custom Taxonomy rewrite slug will push the permalink change and we&#8217;ll finally be able to hit our more appropriate <code>http://wordpress/cpt/<strong>cameras</strong>/brands/canon/</code> URL, right? <strong>Not quite</strong>. It turns out that if we hit <code>http://wordpress/cpt/cameras/brands/canon/</code> WordPress thinks we&#8217;re trying to hit a single post from our Cameras Custom Post Type and redirects us to the closest match.</p>
<p>In order to get our final archives-style pages to load properly, we&#8217;re going to have to modify our Custom Post Type Custom Rewrite Slug to differentiate a request for a single post entry versus our archive-style pages. To do that, we&#8217;ll need to change the slug from <code>cameras</code> to something more appropriate like <code>cameras/body</code> which could signify that we&#8217;re viewing a camera body.</p>
<p>With that change in place, we&#8217;re in business! We&#8217;re now able to hit <code>http://wordpress/cpt/cameras/brands/canon/</code> and view the Posts that have been marked as Canon Posts, using our custom permalink as well as our custom template file. You can repeat this process with additional taxonomies by creating appropriate rewrite slugs in conjunction with new <code>taxonomy-%taxonomyname%.php</code> template files.</p>
<h2>Adding links to Taxonomy archives in the sidebar</h2>
<p>Many of the WordPress-native functions can be adapted for use with Custom Post Types and Custom Taxonomies. To add links to your newly created Custom Taxonomy archive pages, you could add something like this snippet to your <code>sidebar.php</code>:</p>
<pre class="sh_php"><code>&lt;li id="camera-brands" class="widget-container"&gt;
  &lt;h3 class="widget-title"&gt;Camera Brands&lt;/h3&gt;
  &lt;?php $cam_brands = get_terms('brands', 'hide_empty=1'); ?&gt;
  &lt;ul&gt;
    &lt;?php foreach( $cam_brands as $brand ) : ?&gt;
      &lt;li&gt;
        &lt;a href="&lt;?php echo get_term_link( $brand-&gt;slug, 'brands' ); ?&gt;"&gt;
          &lt;?php echo $brand-&gt;name; ?&gt;
        &lt;/a&gt;
        &lt;ul&gt;
          &lt;?php
            $wpq = array( 'post_type' =&gt; 'cameras', 'taxonomy' =&gt; 'brands', 'term' =&gt; $brand-&gt;slug );
            $brand_posts = new WP_Query ($wpq);
          ?&gt;
          &lt;?php foreach( $brand_posts-&gt;posts as $post ) : ?&gt;
            &lt;li&gt;
              &lt;a href="&lt;?php echo get_permalink( $post-&gt;ID ); ?&gt;"&gt;
                &lt;?php echo $post-&gt;post_title; ?&gt;
              &lt;/a&gt;
            &lt;/li&gt;
          &lt;?php endforeach ?&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;?php endforeach ?&gt;
  &lt;/ul&gt;
&lt;/li&gt;</code></pre>
<p>While a bit of the markup is specific to Twenty Ten&#8217;s <code>sidebar.php</code> we can dissect what&#8217;s going on here:</p>
<ol>
<li>Pull our brands</li>
<li>Create a list item for our brand</li>
<li>Pull all posts that have been marked as being that brand (via the <code>taxonomy</code> and <code>term</code> arguments)</li>
<li>Loop through each post within that defined Custom Taxonomy entry and dump out what we&#8217;d like to use</li>
<li>Repeat until finished with all Custom Taxonomy entries</li>
</ol>
<p>When incorporated into the sidebar, we&#8217;ll get something like this:</p>
<p><img class="alignnone size-full wp-image-1258" title="03-sidebar" src="/wp-content/uploads/2010/09/03-sidebar.jpg" alt="Customized sidebar based on Custom Post Types and Custom Taxonomies" width="228" height="440" /></p>
<p>As you can imagine, that sidebar listing would quickly grow to an unmanageable size, but the example illustrates just what&#8217;s possible using a few WordPress native functions and your Custom Post Types/Custom Taxonomies.</p>
<h3>Custom Post Types and Custom Taxonomies are powerful</h3>
<p>These changes in WordPress 3.0 are more than welcome, as they&#8217;re going to set the stage for much more <strong>traditional</strong> CMS-like behavior. The implementation discussed in this short series of articles is quite specific but hopefully outlines one of the many ways to work with Custom Post Types and Custom Taxonomies, all the while keeping a prettier permalink structure throughout your sites.</p>
<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1253&c=88090620' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1253&c=88090620' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded>
			<wfw:commentRss>http://mondaybynoon.com/20100906/wordpress-archive-pages-taxonomy/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>&#8226; Custom Post Types, Custom Taxonomies, and Permalinks in WordPress 3.0</title>
		<link>http://mondaybynoon.com/feeder/?FeederAction=clicked&#038;feed=Posts+%28RSS2%29&#038;seed=http%3A%2F%2Fmondaybynoon.com%2F20100906%2Fcustom-post-types-taxonomies-permalinks-wordpress%2F&#038;seed_title=%26%238226%3B+Custom+Post+Types%2C+Custom+Taxonomies%2C+and+Permalinks+in+WordPress+3.0</link>
		<comments>http://mondaybynoon.com/20100906/custom-post-types-taxonomies-permalinks-wordpress/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 15:54:48 +0000</pubDate>
		<dc:creator>Jonathan Christopher</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Custom Post Types]]></category>
		<category><![CDATA[Taxonomies]]></category>
		<category><![CDATA[WordPress 3.0]]></category>

		<guid isPermaLink="false">http://mondaybynoon.com/?p=1236</guid>
		<description><![CDATA[Custom Post Types are a huge boon to everything WordPress. The feature has been long awaited, and lays a nice foundation for WordPress becoming more of a CMS to those still convinced it's merely a blogging engine.<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1236&c=2104174327' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1236&c=2104174327' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></description>
			<content:encoded><![CDATA[<p class="update"><strong>Please Note:</strong> This article has since been extended. Please read more up-to-date information in <a href="/2011/05/20/revisiting-custom-post-types-taxonomies-permalinks-slugs/">Revisiting Custom Post Types, Custom Taxonomies, and Permalinks</a></p>
<p><a href="http://codex.wordpress.org/Custom_Post_Types">Custom Post</a> Types are a <em>huge</em> boon to everything WordPress. The feature has been long awaited, and lays a nice foundation for WordPress becoming more of a <abbr title="Content Management System">CMS</abbr> to those still convinced it&#8217;s <strong>merely a <em>blogging</em> engine</strong>.</p>
<p>Custom Post Types, for those not familiar, is basically a templated content type based at their core off of WordPress&#8217; Posts. There are a number of optional fields you can include within a Custom Post Type, and you can also build in your own. It opens the door to building a refined UI for data storage within WordPress given custom circumstances.</p>
<p>That said, you may be curious how that effects other systems such as <a href="http://podscms.org/">Pods</a>. If you haven&#8217;t had a chance, I <a href="/2010/05/31/wordpress-custom-post-types-pods/">discussed WordPress 3.0 and Pods</a> in detail and have concluded that Custom Post Types and Pods achieve different goals at this point, and working with Pods gives you a level of control Custom Post Types currently do not (and in part do not strive to) achieve.</p>
<p>As full disclosure, I&#8217;ve recently been accepted as a <a href="http://podscms.org/about/">Pods Core Developer</a> but hope to express that circumstance having no effect or any biased opinions toward Custom Post Types. The Pods team wouldn&#8217;t exist without WordPress, and we&#8217;re all <em>super thrilled</em> about the existence of Custom Post Types.</p>
<p>In this walkthrough, I&#8217;d like to cover a fully top-to-bottom implementation of Custom Post Types, specifically targeting the task of ensuring a pretty permalink structure for your <code>single</code> pages. A follow-up article will take into consideration custom taxonomies for archive-style pages.</p>
<h2>Up and running with Custom Post Types</h2>
<p>Perhaps the biggest outstanding learning curve with Custom Post Types is the implementation itself. While programmers will love it, less experienced theme developers are likely to become quickly frustrated with the initial setup of Custom Post Types. While there is a lot of information in the always useful Codex, Custom Post Types still require an understanding of WordPress established conventions for implementation.</p>
<p>I&#8217;m a stickler for understanding the ins and outs of a system in which you work professionally, but I also understand that WordPress is a fantastic platform for tinkering. That said, if you&#8217;re a professional you&#8217;re looking to save as much time as possible. If you&#8217;re a tinkerer you&#8217;re looking to get up and running as quickly as possible so (hopefully) you can dissect how it happened. Given that, a really nice way to rapidly set up your Custom Post Types is the <a href="http://wordpress.org/extend/plugins/custom-post-type-ui/">Custom Post Type UI</a> WordPress plugin. Custom Post Type UI completely removes the tediousness of setting up Custom Post Types by providing an interface within the WordPress admin to do so. I&#8217;ve been using it on all of my recent projects and it&#8217;s a <em>huge</em> time saver. I do recommend though, that prior to using the plugin, you take the time to really understand what Custom Post Types are and how they fit into the big picture.</p>
<p>For the purposes of this walkthrough, we&#8217;ll set up an informational DSLR site with some information about a few cameras. Using Custom Post Type UI, we&#8217;ll set up a Cameras Custom Post Type:</p>
<p><img class="alignnone size-full wp-image-1237" title="01-initial-setup" src="/wp-content/uploads/2010/09/01-initial-setup.jpg" alt="Initial setup of the Custom Post Type" width="469" height="541" /></p>
<p>While you can create a Custom Post Type filling out just the fields above, we&#8217;re working for a full implementation here, so we&#8217;re going to fill in the Advanced Label Options too:</p>
<p><img class="alignnone size-full wp-image-1238" title="02-label-options" src="/wp-content/uploads/2010/09/02-label-options.jpg" alt="Setting label options" width="472" height="718" /></p>
<p>If these fields are not populated, defaults will be used based on the initial labels used to set up the Custom Post Type. In this particular case, using those defaults would have worked out just fine, but there will be circumstances where a revised nomenclature will be much more meaningful to clients.  We&#8217;re also going to customize the Advanced Options offered by Custom Post Types/Custom Post Types UI:</p>
<p><img class="alignnone size-full wp-image-1239" title="03-advanced-options" src="/wp-content/uploads/2010/09/03-advanced-options.jpg" alt="Setting Advanced Options" width="454" height="619" /></p>
<p>Using these fields we&#8217;re able to further refine the attributes of our Custom Post Type. Many of these can be left as default, but we&#8217;ll pay particular attention to both the Custom Rewrite Slug as well as the Supports areas. Built-in Taxonomies are also important, but we&#8217;re going to revisit that later. The Custom Rewrite Slug is responsible for ensuring your permalink structure remains accurate and in tact. More on that during implementation.  Now that our options are set, clicking <strong>Create Custom Post Type</strong> will add our Custom Post type to the admin UI:</p>
<p><img class="alignnone size-full wp-image-1240" title="04-ui" src="/wp-content/uploads/2010/09/04-ui.jpg" alt="Custom Post Type in the admin UI" width="149" height="224" /></p>
<p>Adding a new entry will provide a familiar, but customized content entry view:</p>
<p><img class="alignnone size-full wp-image-1241" title="05-add-new" src="/wp-content/uploads/2010/09/05-add-new.jpg" alt="Adding a new Camera" width="971" height="756" /></p>
<p>Once we&#8217;ve added some entries, we&#8217;ll begin building our library of content:</p>
<p><img class="alignnone size-full wp-image-1242" title="06-content-list" src="/wp-content/uploads/2010/09/06-content-list.jpg" alt="Content added to Custom Post Type" width="983" height="507" /></p>
<p>With Custom Post Types comes all of the built in content management functionality of WordPress, but at this point, we&#8217;ve got nothing to show for it within our theme; these pages are nowhere in sight on the front end. Our first option could be to use WordPress 3.0 Menus and manually build out a navigation system with a series of Custom Links, but that would quickly become overbearing given the fact that we&#8217;re hoping to build a website with hundreds (or thousands) of content pages.</p>
<h2>Structuring WordPress for Custom Post Types</h2>
<p>Custom Post Types are just that, they&#8217;re a collection of content. For the sake of organization as well as user experience, there should be some sort of hierarchy that incorporates your Custom Post Types. Currently, if you were to hit one of our Camera pages using the Permalink outlined on the edit page, you&#8217;d see the content included in the post:</p>
<p><img class="alignnone size-full wp-image-1243" title="07-view" src="/wp-content/uploads/2010/09/07-view.jpg" alt="Viewing an entry" width="663" height="128" /></p>
<p><img class="alignnone size-full wp-image-1244" title="08-stock-page" src="/wp-content/uploads/2010/09/08-stock-page.jpg" alt="Custom Post on the front end" width="1020" height="1222" /></p>
<p>For the purpose of this example, the permalink we&#8217;re working with is <code>http://wordpress/cpt/cameras/canon-7d/</code> which is just fine; I like the way it&#8217;s structured. The trouble creeps in when, by experience, we want to view an index page by stripping off the last URL segment and trying to hit <code>http://wordpress/cpt/cameras/</code>. Out of the box we&#8217;re slammed with a <code>404</code> error. As a fix, I&#8217;d suggest creating a WordPress Page called Cameras (with the proper slug) to ensure we no longer hit that <code>404</code>.</p>
<p>This ties into my philosophy of structuring WordPress sites; WordPress Pages should dictate the overall structure (for both content and URLs) and be the foundation of everything built on top of it. To our benefit, Custom Post Types work within thsi philosophy.</p>
<p>With our <code>http://wordpress/cpt/cameras/</code> URL now properly resolving, we could create a custom Page template to pull in all of our Cameras. There are two approaches here, you can either set the Page Template in the Page Attributes sidebar on the edit screen, or simply name your template file using the Page slug. We&#8217;ll take the latter approach and create a new file within our theme directory called <code>page-cameras.php</code> consisting of:</p>
<pre class="sh_php sh_html"><code>&lt;?php

/* Template Name: Cameras index */

get_header(); ?&gt;

  &lt;div id="container"&gt;
    &lt;div id="content" role="main"&gt;

      &lt;?php
        query_posts( 'post_type=cameras' );
        get_template_part( 'loop' ); // looks for loop.php which is specific to Twenty Ten
        wp_reset_query();
      ?&gt;

    &lt;/div&gt;&lt;!-- #content --&gt;
  &lt;/div&gt;&lt;!-- #container --&gt;

  &lt;?php get_sidebar(); ?&gt;

&lt;?php get_footer(); ?&gt;</code></pre>
<p><strong>Note:</strong> The call <code>get_template_part()</code> looks for <code>loop.php</code>, a template file specific to Twenty Ten, the stock theme that ships with WordPress 3.0</p>
<p>What we&#8217;re doing in this template is simply querying all posts for our <code>cameras</code> Custom Post Type and sending that data to The Loop. Last, we reset to the original query fired during page creation which will prevent any funkyness with sidebar and/or footer logic. What results is a page that mimics a default Posts entry view in Twenty Ten:</p>
<p><img class="alignnone size-full wp-image-1245" title="09-cameras" src="/wp-content/uploads/2010/09/09-cameras.jpg" alt="Cameras index page" width="1020" height="4897" /></p>
<p>While the implementation so far is great for including the data stored in our Custom Post Type, it&#8217;s not very organized.</p>
<h2 id="custom-taxonomies">Organizing Custom Post Type data using a Custom Taxonomy</h2>
<p>Closely related to Custom Post Types are Custom Taxonomies. To our benefit, the <a href="http://wordpress.org/extend/plugins/custom-post-type-ui/">Custom Post Type UI</a> plugin handles the creation and maintenance of Custom Taxonomies as well. We&#8217;re going to organize our Cameras Custom Post Type by attaching a few Taxonomies:</p>
<p><img class="alignnone size-full wp-image-1246" title="10-taxonomy-brand" src="/wp-content/uploads/2010/09/10-taxonomy-brand.jpg" alt="Taxonomy setup" width="406" height="377" /></p>
<p><img class="alignnone size-full wp-image-1247" title="11-taxonomy-price-range" src="/wp-content/uploads/2010/09/11-taxonomy-price-range.jpg" alt="Taxonomy settings" width="406" height="377" /></p>
<p>When creating them, we&#8217;ve attached the Taxonomies to our Custom Post Type, and they now show up as expected:</p>
<p><img class="alignnone size-full wp-image-1248" title="12-taxonomy-ui" src="/wp-content/uploads/2010/09/12-taxonomy-ui.jpg" alt="Custom Taxonomies in the UI" width="154" height="270" /></p>
<p>Out of the box, Custom Taxonomies behave like tags. Depending on how you&#8217;d like to use your Taxonomy, tags might be an applicable solution. In this case, however, I&#8217;d like to offer a choice-based system for my client. To do that, and therefore make your Taxonomy behave more like a WordPress Category, you&#8217;ll need to edit the Advanced Options of the Taxonomy:</p>
<p><img class="alignnone size-full wp-image-1249" title="13-hierarchical" src="/wp-content/uploads/2010/09/13-hierarchical.jpg" alt="Hierarchy option" width="401" height="239" /></p>
<p>By setting your Taxonomy to being hierarchical you&#8217;ll provide a listing of all existing entries as well as a check/uncheck interaction:</p>
<p><img class="alignnone size-full wp-image-1250" title="14-taxonomies" src="/wp-content/uploads/2010/09/14-taxonomies.jpg" alt="Taxonomies" width="291" height="652" /></p>
<p>As with most things Custom Post Type, while you&#8217;re able to add/edit/remove the data, it doesn&#8217;t do much out of the box on the front end. Viewing the Canon 7D page we just edited on the front end results in no visible change. We&#8217;re going to use our Custom Taxonomy to provide category-style archive listings.</p>
<h3>The end of the basics</h3>
<p>This walkthrough sets the stage for the more difficult task of <a href="/2010/09/06/wordpress-archive-pages-taxonomy/">setting up Custom Taxonomy-based archive-style pages using appropriate permalinks</a>. If you&#8217;d like to take the next step in pushing your Custom Taxonomies to the front end of your site check out <a href="/2010/09/06/wordpress-archive-pages-taxonomy/">WordPress Archive Pages Based on Custom Taxonomies</a>.</p>
<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1236&c=670210582' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1236&c=670210582' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded>
			<wfw:commentRss>http://mondaybynoon.com/20100906/custom-post-types-taxonomies-permalinks-wordpress/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>&#8226; WordPress Custom Post Types &amp; PHPurchase: Best Cart Ever – Part 2</title>
		<link>http://mondaybynoon.com/feeder/?FeederAction=clicked&#038;feed=Posts+%28RSS2%29&#038;seed=http%3A%2F%2Fmondaybynoon.com%2F20100809%2Fwordpress-custom-post-types-phpurchase-cart-part-2%2F&#038;seed_title=%26%238226%3B+WordPress+Custom+Post+Types+%26amp%3B+PHPurchase%3A+Best+Cart+Ever+%E2%80%93+Part+2</link>
		<comments>http://mondaybynoon.com/20100809/wordpress-custom-post-types-phpurchase-cart-part-2/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 04:28:09 +0000</pubDate>
		<dc:creator>Jonathan Christopher</dc:creator>
				<category><![CDATA[Favorites]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Custom Post Types]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[PHPurchase]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://mondaybynoon.com/?p=1197</guid>
		<description><![CDATA[After discussing the benefits of using WordPress 3.0+, Custom Post Types, and PHPurchase over other available e-commerce solutions, this article will walk you through the installation of PHPurchase and integration with Custom Post Types for your product listings.<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1197&c=782572164' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1197&c=782572164' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></description>
			<content:encoded><![CDATA[<p class="update">If you haven&#8217;t read <a href="/2010/08/09/wordpress-custom-post-types-phpurchase-cart-part-1/">part 1</a> I took some time to outline why I feel that the combination of PHPurchase and Custom Post Types can result in the best e-commerce solution for WordPress.</p>
<p>In <a href="/2010/08/09/wordpress-custom-post-types-phpurchase-cart-part-1/">part 1</a> I examined the current WordPress cart plugin landscape and outlined a number of reasons I feel that <a href="http://www.phpurchase.com/">PHPurchase</a> is currently the leading solution for an e-commerce solution, especially with the arrival of Custom Post Types. I&#8217;d like to share how and why using Custom Post Types works so well for a WordPress shopping cart.</p>
<h2>Setting up and prepping WordPress</h2>
<p>The first step will be to get your WordPress 3.0+ install up and running. That&#8217;s the extent of detail we&#8217;ll cover there. The next step will be to obtain and install a copy of <a href="http://www.phpurchase.com/">PHPurchase</a>. There are a number of purchase options available, but this walkthrough will cover functionality available under all licenses of PHPurchase.</p>
<p>The installation of PHPurchase is as straightforward as any other plugin. Once you&#8217;ve uploaded the plugin files and activated the plugin, you&#8217;ll need to enter your PHPurchase order number on the Settings screen:</p>
<p><img class="alignnone size-full wp-image-1198" title="cart.01.phpurchase.settings" src="/wp-content/uploads/2010/08/cart.01.phpurchase.settings.png" alt="Screenshot: PHPurchase settings" width="926" height="447" /></p>
<p>After validating your order number, the reminder to do so will disappear and you&#8217;ll be able to enter in your PayPal, Authorize.net, or Quantum Gateway payment settings. These details aren&#8217;t <em>required</em> at this point, but until that information is entered, the plugin won&#8217;t let you check out. For now, those are the only details we&#8217;ll cover as far as setup is concerned. Using the PHPurchase menu in the WordPress admin, you can begin adding products.</p>
<p><img class="alignnone size-full wp-image-1227" title="cart.02.phpurchase.add_.product.2" src="/wp-content/uploads/2010/08/cart.02.phpurchase.add_.product.2.png" alt="Screenshot: Adding a product to PHPurchase" width="926" height="724" /></p>
<p><img class="alignnone size-full wp-image-1200" title="cart.03.phpurchase.products" src="/wp-content/uploads/2010/08/cart.03.phpurchase.products.png" alt="Screenshot: PHPurchase product listing" width="953" height="245" /></p>
<p>As it stands PHPurchase will automatically implement a number of system Pages it will use to handle the cart view and checkout process for purchases.</p>
<p><img class="alignnone size-full wp-image-1202" title="cart.04.phpurchase.pages" src="/wp-content/uploads/2010/08/cart.04.phpurchase.pages_1.png" alt="Screenshot: PHPurchase default Pages" width="967" height="554" /></p>
<p>While these pages are an extremely important part of the overall e-commerce implementation, none of the products we just added are made available out of the box.</p>
<p><img class="alignnone size-full wp-image-1203" title="cart.05.store.no.products" src="/wp-content/uploads/2010/08/cart.05.store_.no_.products.png" alt="Screenshot: No products displayed in the WordPress theme" width="1128" height="842" /></p>
<p>By editing the Store page, you can quickly add a number of products using the PHPurchase icon in the editor toolbar:</p>
<p><img class="alignnone size-full wp-image-1204" title="cart.06.store.add.product.1" src="/wp-content/uploads/2010/08/cart.06.store_.add_.product.1.png" alt="Screenshot: Adding a product via PHPurchase, step 1" width="649" height="433" /></p>
<p><img class="alignnone size-full wp-image-1205" title="cart.07.store.add.product.2" src="/wp-content/uploads/2010/08/cart.07.store_.add_.product.2.png" alt="Screenshot: Adding a product via PHPurchase, step 2" width="582" height="347" /></p>
<p><img class="alignnone size-full wp-image-1206" title="cart.08.store.add.product.3" src="/wp-content/uploads/2010/08/cart.08.store_.add_.product.3.png" alt="Screenshot: Adding a product via PHPurchase, step 3" width="646" height="435" /></p>
<p><img class="alignnone size-full wp-image-1207" title="cart.09.store.one.product" src="/wp-content/uploads/2010/08/cart.09.store_.one_.product.png" alt="Screenshot: Product visible on Store page" width="1128" height="842" /></p>
<p>At this point, you can feel to proceed as normal. Using this Store page you could add every product you have available as well as apply some style and content using imagery, product copy, and links to relevant information. You could take it a step further and also create child pages with the Store as the parent and dedicate a product detail page to each of your products.</p>
<p>While helpful, you&#8217;ll quickly discover missing features that are very commonly found in other e-commerce platforms. Features such as browsing products by category and providing additional information about products in the form of multiple product shots and/or PDF downloads aren&#8217;t directly built into PHPurchase. The beauty lies in the fact that you can customize WordPress in all the usual ways to add these features as you see fit.</p>
<p>With the arrival of WordPress 3.0, however, there is an entire layer of additional functionality found in Custom Post Types that makes working with these features a breeze.</p>
<h2>Using Custom Post Types for your PHPurchase Store</h2>
<p><a href="http://codex.wordpress.org/Custom_Post_Types">Custom Post Types</a> are sometimes intimidating to more novice developers. Out of the box in WordPress 3.0 you need to manually register and set up your Custom Post Types. As with many developer-heavy tasks at hand, there is a plugin to make life easier when it comes to Custom Post Types; <a href="http://wordpress.org/extend/plugins/custom-post-type-ui/">Custom Post Type UI</a>.</p>
<p>Custom Post Type UI gives WordPress admins the ability to create, edit, and manage all of the Custom Post Types available within the WordPress Install:</p>
<p><img class="alignnone size-full wp-image-1210" title="cart.10.custom.post.type.add" src="/wp-content/uploads/2010/08/cart.10.custom.post_.type_.add_.png" alt="Screenshot: Adding a Custom Post via Custom Post Type UI" width="489" height="579" /></p>
<p>Using the plugin you can easily create a Custom Post Type to handle all of your product pages in PHPurchase. You&#8217;re able to customize the phrasing used throughout and viewing the Advanced Label Options gives you even more to work with. On top of these Custom Post Type Settings, you can also set up custom taxonomies which can be used in this specific case for a set of categories limited to your store products and separate from your Post categories.</p>
<p>Once you&#8217;ve created your Custom Post Type, a new menu item will be made available in the main navigation:</p>
<p><img class="alignnone size-full wp-image-1213" title="cart.11.custom.post.type.menu-1" src="/wp-content/uploads/2010/08/cart.11.custom.post_.type_.menu-1.png" alt="Screenshot: Custom Post Type Menu" width="156" height="334" /></p>
<p>Using the links available you can go ahead and set up your categories as well as add your products.</p>
<p><img class="alignnone size-full wp-image-1214" title="cart.12.custom.post.add.product" src="/wp-content/uploads/2010/08/cart.12.custom.post_.add_.product.png" alt="Screenshot: Adding a Custom Post Type product" width="949" height="775" /></p>
<p><img class="alignnone size-full wp-image-1215" title="cart.13.custom.post.products" src="/wp-content/uploads/2010/08/cart.13.custom.post_.products.png" alt="Screenshot: Products added to the Custom Post Type" width="953" height="457" /></p>
<p>Once your products have been added to your Custom Post Type, you can view the page on the front end:</p>
<p><img class="alignnone size-full wp-image-1216" title="cart.14.custom.product.in.theme" src="/wp-content/uploads/2010/08/cart.14.custom.product.in_.theme_.png" alt="Screenshot: Product page on website" width="1128" height="1745" /></p>
<h3>Integrating Custom Post Types into your Menu</h3>
<p>Now that your products have been added, you&#8217;ll want to make browsing your products as easy as possible. There are a number of things you can do, the primary two being including links to your product pages within your site navigation and using your Custom Post Type taxonomy (product categories).</p>
<p>Menus were also a big addition to WordPress in 3.0 and the update comes in handy at this point in our PHPurchase setup. The Menus are smart enough to recognize your Product Pages and allow you to integrate them directly within your site navigation:</p>
<p><img class="alignnone size-full wp-image-1217" title="cart.15.nav.menu" src="/wp-content/uploads/2010/08/cart.15.nav_.menu_.png" alt="Screenshot: Menus main screen" width="954" height="1054" /></p>
<p><img class="alignnone size-full wp-image-1218" title="cart.15.nav.menu.2" src="/wp-content/uploads/2010/08/cart.15.nav_.menu_.2.png" alt="Screenshot: Store navigation" width="647" height="695" /></p>
<p>Using the Menus you&#8217;re able to mix and match your Product Pages, your Product Categories, as well as your WordPress Pages themselves. You can custom build any structure you wish using the menus and the available entries. By default, linking to a Product Category will direct readers to pages resembling those of your other category pages, likely using category.php from your theme. You can customize this to any degree as you would normally when developing your custom WordPress theme.</p>
<p><img class="alignnone size-full wp-image-1219" title="cart.16.nav.menu.on.site" src="/wp-content/uploads/2010/08/cart.16.nav_.menu_.on_.site_.png" alt="Screenshot: Custom Store navigation" width="1128" height="783" /></p>
<h3>Integration with plugins</h3>
<p>Another significant advantage to using Custom Post Types and PHPurchase to power your WordPress based e-commerce website is the direct integration with many of your favorite plugins. One of the downfalls to a number of other WordPress store plugins is a lack of attention to search engine optimization. When working with product pages powered by Custom Post Types you can continue to use the SEO plugin working to optimize the rest of your website.</p>
<p>Additionally, you&#8217;ll be able to use plugins that enhance your ability to make additional product assets available to readers. Plugins like Attachments will let you add multiple product images for use in a product image viewer, PDFs including additional product details, as well as any available product details that may exist.</p>
<p><img class="alignnone size-full wp-image-1220" title="cart.17.plugins" src="/wp-content/uploads/2010/08/cart.17.plugins.png" alt="Screenshot: Product page integration with plugins" width="951" height="886" /></p>
<h4>This is just the beginning</h4>
<p>These are just the basics of getting up and running with WordPress 3.0+, Custom Post Types, and <a href="http://phpurchase.com">PHPurchase</a> in an effort to get the best possible e-commerce shop up and running quickly and easily. While it&#8217;s a bit more work to get a large volume of products added and available on your website, I really feel that PHPurchase is a great choice when considering available e-commerce solutions for WordPress.</p>
<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1197&c=1179504368' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1197&c=1179504368' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded>
			<wfw:commentRss>http://mondaybynoon.com/20100809/wordpress-custom-post-types-phpurchase-cart-part-2/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>&#8226; WordPress Custom Post Types &amp; Pods: What&#8217;s Next?</title>
		<link>http://mondaybynoon.com/feeder/?FeederAction=clicked&#038;feed=Posts+%28RSS2%29&#038;seed=http%3A%2F%2Fmondaybynoon.com%2F20100531%2Fwordpress-custom-post-types-pods%2F&#038;seed_title=%26%238226%3B+WordPress+Custom+Post+Types+%26amp%3B+Pods%3A+What%26%238217%3Bs+Next%3F</link>
		<comments>http://mondaybynoon.com/20100531/wordpress-custom-post-types-pods/#comments</comments>
		<pubDate>Mon, 31 May 2010 14:10:38 +0000</pubDate>
		<dc:creator>Jonathan Christopher</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Custom Post Types]]></category>
		<category><![CDATA[Pods]]></category>
		<category><![CDATA[WordPress 3.0]]></category>

		<guid isPermaLink="false">http://mondaybynoon.com/?p=1126</guid>
		<description><![CDATA[On more than on occasion I've been asked about my future with Pods specifically given the immanent release of WordPress 3.0 featuring Custom Post Types. On the spot, I didn't have to ponder too much, but I did want to let things seep in for a while before explaining my stance in full.<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1126&c=764288911' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1126&c=764288911' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></description>
			<content:encoded><![CDATA[<p>On more than on occasion I&#8217;ve been asked about my future with Pods specifically given the <a href="http://wordpress.org/development/2010/05/wordpress-3-0-release-candidate/">immanent release of WordPress 3.0</a> featuring Custom Post Types. On the spot, I didn&#8217;t have to ponder too much, but I did want to let things seep in for a while before explaining my stance in full. There&#8217;s a lot to consider with both Custom Post Types and Pods and also a lot of theory and philosophy behind each, in my opinion. I&#8217;m going to avoid the technical details in this overview and keep it simple.</p>
<h2>What are Custom Post Types?</h2>
<p>First and foremost we need to understand what Custom Post Types <em>are</em>. I&#8217;ll try to do my best to sum them up as quickly and as easily as possible in my own words.</p>
<p>Custom Post Types defines our new ability to better organize more advanced content structures within our WordPress sites. That is to say, using Custom Post Types will allow us to create groups of content in addition to the stock Posts and Pages. Subsequently, we&#8217;re also able to <strong>define the data fields</strong> used in each group. Further, we&#8217;re able to take advantage of many standard features built into WordPress such as creating custom taxonomies (used for categorization among other things) and more.</p>
<p>If I had to label one final stake in the ground that WordPress is fantastically stating that it is no longer a &#8220;blogging&#8221; platform and instead a content platform, it would be Custom Post Types.</p>
<p>Custom Post Types have got a ton of attention lately, and as such deserves it. I can&#8217;t emphasize how much of a game changer this is on a platform level not only for WordPress developers, but for users as well. We&#8217;re going to see a lot of changes on the theme level which in turn will spread the word about WordPress&#8217; adaptiveness.</p>
<h2>Where does Pods fit in?</h2>
<p>Custom Post Types sound great, but what about <a href="http://podscms.org/">Pods</a>? If you want the short version: <a href="/tag/pods/">I love Pods</a> and I don&#8217;t see it going anywhere anytime soon as a result of Custom Post Types.</p>
<p>Now for the extended version.</p>
<p>Pods and Custom Post Types, although they have some overlapping functionality, don&#8217;t directly compete with one another top to bottom. Custom Post Types open a lot of doors, and I plan on using those doors as often as possible. Pods, however, is functionally superior to Custom Post Types in ways that I&#8217;ve been taking advantage of on nearly every project in recent memory.</p>
<p>The superiority lies in the fact that instead of being a new group of Custom Posts or Pages, Pods focuses on <strong>the relationship</strong> factor by keeping the doors wide open when it comes to how the data is displayed, how users interact with it, and <em>how you use it</em>. Additionally, the Pods developers are <em>super focused</em> on performance. That&#8217;s not to say that I&#8217;ve noticed a performance problem with WordPress, but it&#8217;s great to read that they&#8217;re focused on speed and integrity to the level of creating one-off database tables every time Pods needs one for your content types.</p>
<p>Pods takes a different approach entirely when it comes to the database level. WordPress Custom Post Types simply append your new content groups to the Posts table and under the hood are using Custom Fields to take care of your custom data. This is nowhere near magic to anyone who has written a plugin before that accomplishes the same thing. <a href="/wordpress-attachments/">Attachments</a>, for example, uses that philosophy to function.</p>
<p>Don&#8217;t take me wrong, I don&#8217;t think that&#8217;s <em>wrong</em> to do, not by any means. I always try to <a href="http://en.wikipedia.org/wiki/KISS_principle">KISS</a> and I think Custom Post Types do the same thing. I also appreciate, though, that Pods focuses on performance at its root.</p>
<p>Pods also offers more when it comes to <em>functionality offered</em>. Custom Post Types leave things pretty open-ended for you to get done what you&#8217;d like, but I&#8217;m not sure how easy it will be to relate one Post to another, or multiple for that matter in that group. What about relating that Post to a Post from a completely different group? What if you want to limit that list of available Posts to include a certain number of Posts from one group, and more from another? Pods has you covered out of the box.</p>
<p>I&#8217;ve also become addicted to the way <a href="http://ui.podscms.org/">Pods UI</a> lets you present the Pods you&#8217;ve created. You&#8217;re able to organize and group your content types in such a way that it makes perfect sense when your client needs to hop in the driver&#8217;s seat. Pods UI is founded on built-in WordPress functions and I&#8217;m not sure to what extent it can be replicated with Custom Post Types at this stage, but I&#8217;m smitten with Pods UI and hopefully that functionality can eventually find its way to Custom Post Types.</p>
<p>I&#8217;ve become very comfortable with the advanced features offered by Pods, especially when <a href="http://ui.podscms.org/">Pods UI</a> comes into play, and I won&#8217;t backtrack at this point just to take advantage of built-in functionality (my personal preference by default). I think Pods still stands on its own two feet by a long shot.</p>
<h3>Will they blend?</h3>
<p>That said, I plan on using a combination of Custom Post Types and Pods until a new catalyst enters which will cause me to reevaluate the situation at that point. I have a set of rules that help me build sites on top of WordPress and incorporate Pods all to make things as easy as possible for my clients to <strong><em>use</em></strong> and I will continue with that school of thought now that Custom Post Types are here.</p>
<p>I&#8217;ve got a lot to learn about Custom Post Types and what&#8217;s technically functional, possible, and stable. You can be sure I&#8217;ll be posting my findings along the way. I feel that Pods and Custom Post Types make a good team and will continue to do so beyond the launch of WordPress 3.0.</p>
<br /><p><a href='http://rss.buysellads.com/click.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1126&c=434590299' target='_blank' rel='nofollow'>
				<img src='http://rss.buysellads.com/img.php?z=1269068&k=2ee344414ac81fbb0f9de6ab08e9831e&a=1126&c=434590299' border='0' alt='' /></a></p><p><a href='http://buysellads.com/buy/sitedetails/pubkey/2ee344414ac81fbb0f9de6ab08e9831e/zone/1269068' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded>
			<wfw:commentRss>http://mondaybynoon.com/20100531/wordpress-custom-post-types-pods/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Database Caching 1/72 queries in 0.065 seconds using apc
Object Caching 872/968 objects using apc

Served from: www.mondaybynoon.com @ 2012-02-11 10:04:59 -->
