WordPress gives you the ability to add custom post types and taxonomies easily with some simple code in your functions.php file, or through the use of a plugin like CustomPress. That means, you can quickly turn your WordPress site into a fairly well-featured CMS.
The only problem is, out of the box, WordPress does not automatically take your newly created custom post types and add them to the archive pages for existing taxonomies ‘categories’ or ‘tags.’
That means, if you created a custom post type called “movies” and used the native WordPress taxonomy “category” to categorize and order that custom post type, simply navigating to the archive for that category will not show your custom post type in the list of posts for that archive.
For example, you created a movie review site and used standard WordPress categories and tags with that custom post type so you could relate those reviews to your other posts or pages. Let’s say you decided to use a category of “drama.” Navigating to the category archive for drama, namely http://yoursite.com/category/drama will not show the custom post type you just added – even though you selected the drama category.
This is frustrating for those who go through the trouble to add plan out a custom post type, taxonomies, add the content and then find out it doesn’t display correctly.
Some would call this a bug, but the developers at WordPress maintain that sorting archives is for normal post types for which WordPress was created, and adding in that functionality for custom post types requires some custom code. And indeed it does.
So, if you’d like your custom post types to show up in archive listings for your site’s standard tags and categories you can add the following code to your functions.php file:
1 2 3 4 5 6 7 8 9 10 11 |
function add_custom_types_to_tax( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
// Get all your post types
$post_types = get_post_types();
$query->set( 'post_type', $post_types );
return $query;
}
}
add_filter( 'pre_get_posts', 'add_custom_types_to_tax' );
|
If you’d like to add only specific post types to listings of tags and categories you can replace the line:
1 |
$post_types = get_post_types();
|
with:
1 |
$post_types = array( 'post', 'your_custom_type' );
|
If you’d like to read more about the difference between custom post types, custom fields, and custom taxonomies you will be interested in this series of posts right here on WPMU.org.
Craig, I’m really new to custom post types and while I make a little progress I keep ending back up where I started, which is looking for a good solution for posting press releases. I’d like to create a custom post type which includes the standard fields and also allows me to attach an image file and a PDF.
I’ve tried using a lot of different plug-ins and tried writing my own code but nothing is working out for me. The ACF plug-in gets me close but I’m not sure how to call my single-press_release.php template. I’ve been working on this for over two days without any success.
Shaun,
It can be kind of confusing if you’re just starting with CPTs, but I’d be happy to help if I can.
Why don’t you post a link to your site, and I’ll see if I can work something up simultaneously on a test site and see if we can get it working together.
Man, i’ve been searching for this around hours… hours on the web. You save me, thank you but i’m still issues with the feed, any ideas how to get it?
The category just work, but no the feed.
Feed:
http://jarochelo.com/category/radiojarochelo-podcast/feed/