Black Friday sale! Get 25% off WPSP Pro! Discount automatically applied at checkout.

Support Forum

Please login to receive premium support.

Support for the free plugin can be found here.

Home Forums Pro Support Archive for Custom Post Types Reply To: Archive for Custom Post Types

#9746
Dee
Participant

For those looking for a solution to use WPShowposts as the display of the archive pages, including with custom post types, here is what I did:

I have 2 custom post types, each with their own custom taxonomies which I created in PODS. I set the archive to true for each.
CPT ‘event’ custom taxonomy ‘event_category’
CPT ‘client’ custom taxonomy ‘source’

1. Create a WP Show Posts list for each post type:
Post type: post Taxonomy: category
Post type: event Taxonomy: event_category
Post type: client Taxonomy: source

2. Copy the archive.php file to the generatepress-child folder

3. Replace the coding between do_action( ‘generate_archive_title’ ); and generate_content_nav( ‘nav-below’ ); with the following

$cat = get_queried_object();
$cat_slug = $cat->slug;
$cat_tax = $cat->taxonomy;

if ($cat_tax=='category'):  $list = get_page_by_title( 'Simple', 'OBJECT', 'wp_show_posts' );
elseif ($cat_tax=='event_category'): $list = get_page_by_title( 'Simple-Event', 'OBJECT', 'wp_show_posts' );
elseif ($cat_tax=='source'): $list = get_page_by_title( 'Simple-Client', 'OBJECT', 'wp_show_posts' );
endif;
wpsp_display( $list->ID, 'tax_term="' . $cat_slug . '"' );

Issues resolved:
1. I originally used is_post_type_archive() for testing if an archive of a custom post type, but it only evaluates as true if the archive is of the custom post type, and not for the associated taxonomies

2. get_category() returns an object, so you can get the slug value with the associated object or post, but for custom post types you use get_term() or get_the_terms() which returns an array, so you cannot get the slug value. I changed the code to get_queried_object() and it works for both custom post types and regular posts.

3. You need a different WP Show Post list for each different post type, which I missed for a while, even though it is obvious.

To minimize the coding further, you could remove the $list=get_page_by_title…. And just use the WPSP ID for each list, but I like being able to see which list is being used.

There is still a display issue with WPSP in archives with repeating post thumbnails which I will cover in another post.