Home › Forums › Pro Support › Archive for Custom Post Types
Tagged: archive, Custom post type archive, wpsp_display
- This topic has 12 replies, 3 voices, and was last updated 3 years, 2 months ago by
Tom.
-
AuthorPosts
-
June 2, 2019 at 7:40 am #9666
Dee
ParticipantI have successfully used the following to use WPSP for my standard archives.
$cat = get_category( get_query_var( 'cat' ) ); $cat_slug = $cat->slug; $list = get_page_by_title( 'Simple', 'OBJECT', 'wp_show_posts' ); wpsp_display( $list->ID, 'tax_term="' . $cat_slug . '"' );
I would like to use something similar for my custom post archives, but I cannot get it to display for my CPT archive. This is what I have so far:
if ( is_post_type_archive('event') ) : $cat = get_the_terms( $post->ID, 'event_category', get_query_var( 'event_category' ) ); else : $cat = get_category( get_query_var( 'cat' ) ); endif; $cat_slug = $cat->slug; $list = get_page_by_title( 'Simple', 'OBJECT', 'wp_show_posts' ); wpsp_display( $list->ID, 'tax_term="' . $cat_slug . '"' );
The standard post archives display as desired, but the CPT show nothing.
June 4, 2019 at 3:28 pm #9727Tom
KeymasterWhat if instead of this:
get_the_terms( $post->ID, 'event_category', get_query_var( 'event_category' ) );
You do this:
get_term( get_query_var( 'event_category' ), 'event_category' );
Let me know 🙂
June 5, 2019 at 3:48 pm #9746Dee
ParticipantFor 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: source2. 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 taxonomies2. 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.
June 6, 2019 at 4:51 pm #9763Tom
KeymasterVery cool – thanks for sharing everything here 🙂
June 10, 2019 at 7:16 am #9823Dee
ParticipantI thought this was working correctly as I had my blog redirected to a page, but for my generic “blog” archive, I am not getting the correct WPshowposts. I belive it is the “else” below, but I am not sure how to fix this.
Here is what I have in the content section of the archive.php file”if ( have_posts() ) : /** * generate_archive_title hook. * * @since 0.1 * * @hooked generate_archive_title - 10 */ do_action( 'generate_archive_title' ); $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 . '"' ); generate_content_nav( 'nav-below' ); else : get_template_part( 'no-results', 'archive' ); endif;
I am getting the generic post format instead of the wpsp_display format.
I have a page named “Blog”, and my Homepage settings are set to “Posts”.
Blog displays like I want, but when I switch my home page settings to “Blog” instead of “Posts” it reverts to the generic layout.
I have the archive.php saved in the GP-child theme.June 13, 2019 at 3:44 pm #9856Tom
KeymasterJust to confirm, it works when you have your front page set as the “Posts Page”, but breaks when you set the posts page as a static page?
June 13, 2019 at 4:07 pm #9859Dee
ParticipantSo this site is live now, so perhaps some links will help. I disabled my redirect, so you can see both pages.
I have 2 pages and both are identical /posts and /blog with content
[wp_show_posts name=”Simple”]I currently have /posts/ set as my static blog page, and am redirecting to blog to get the format I desire with the above shortcode.
If a switch the static page to point to /blog, then the default format (from where?) is shown, and not the wpshowposts shortcode version.The above coding works on the category and CPT archives, just not the main archive.
https://www.deezunkerphotography.com/blog/
https://www.deezunkerphotography.com/posts/June 14, 2019 at 5:13 pm #9866Tom
KeymasterIs there a need to set the “Posts page” in “Settings > Reading”? Or is it possible to just leave it blank? WordPress will overwrite the content of that page completely if it’s set as the posts page.
July 23, 2020 at 11:14 am #17611Jon
ParticipantHey there, was attempting to use WPSP within my CPT archive built with Toolset here:https://matchlessweb.com/project/
I created the CPT and archive with Toolset. I would like to not have to use Toolset to design the loop layout or “view” as they call it. I much prefer the styling an ease of use of WPSP.
Toolset doesn’t seem to allow you to delete the loop from the page. But I suppose I could leave it empty and just drop the WPSP shortcode below that. So there’d be an empty loop function but at least the shortcode would show up. At least I think.
Since I don’t want the loop function of the Toolset archive page, would I be better of creating a static page called https://matchlessweb.com/projects <—-with an “s” (on the end of the slug) and just treat that static page as my pseudo-archive for this CPT?
Currently, the single CPT posts have this link structure: https://matchlessweb.com/project/ms-mane-co/ (but I might be able to change that in the Toolset settings, and maybe even the archive page title if it would help)
But I guest the CPT posts themselves wouldn’t actually be children of the CPT because the relationship between the archive page and the posts would be severed. Tell me if I’m wrong. I’m just guessing here.
Would that be a bad idea? Any negative impact from a site structure or SEO standpoint or anything else I’m not considering?
July 23, 2020 at 2:56 pm #17627Tom
KeymasterIt may be better to create a custom page template with the
wpsp_display()
function: https://generatepress.com/forums/topic/create-custom-category-php-template-wp-show-posts-wpsp/July 23, 2020 at 3:15 pm #17630Jon
ParticipantThanks for pointing me in the right direction, Tom. That’s what I needed. You the real MVP!
July 23, 2020 at 10:28 pm #17643Jon
ParticipantOk I’m feeling pretty dense. I feel like I’ve followed the instructions from the post you linked above, but I’m not having any luck getting the posts to display on the front end of the site. Maybe I’ve got the syntax wrong. I’ve got the following code in a my child theme’s category-projects.php file with the understanding it should allow the archive of my categories to be displayed by WPSP at the following link https://matchlessweb.com/category-projects
<?php /** * The template for displaying Archive pages. * * @package GeneratePress */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } get_header(); ?> <div id="primary" <?php generate_do_element_classes( 'content' ); ?>> <main id="main" <?php generate_do_element_classes( 'main' ); ?>> <?php /** * generate_before_main_content hook. * * @since 0.1 */ do_action( 'generate_before_main_content' ); <?php if ( function_exists( 'wpsp_display' ) ) wpsp_display( 1746 ); ?> } /** * generate_after_main_content hook. * * @since 0.1 */ do_action( 'generate_after_main_content' ); ?> </main><!-- #main --> </div><!-- #primary --> <?php /** * generate_after_primary_content_area hook. * * @since 2.0 */ do_action( 'generate_after_primary_content_area' ); generate_construct_sidebars(); get_footer();
Does that look right? or is there an error in here I’m missing?
The function from the WPSP page is: <?php if ( function_exists( ‘wpsp_display’ ) ) wpsp_display( 1746 ); ?>
And the shortcode is: [wp_show_posts id=”1746″]
July 24, 2020 at 2:31 pm #17655Tom
KeymasterHi there,
Instead of this:
<?php if ( function_exists( 'wpsp_display' ) ) wpsp_display( 1746 ); ?> }
Try this:
if ( function_exists( 'wpsp_display' ) ) { wpsp_display( 1746 ); }
Also,
category-projects.php
will work when you visit this URL:/category/projects/
If your category is actually
category-projects
, you’d need this file name:category-category-projects.php
-
AuthorPosts
- You must be logged in to reply to this topic.