A client site uses custom post type taxonomies to set up a few distinct sections. The category archive page typically lists all post titles with a link, but there was one category that had just one post. In that instance, it would be nice to save the viewer a click and show the post directly.
A quick way to do handle this is to check if a category has multiple posts. This bit of code goes in the category template and says if there is only one post, show the content (in this case a custom field called member_content), but if there are multiple posts show the title and link:
<?php if ($wp_query->found_posts == 1) : echo get_field('member_content'); else: ?> <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4> <?php endif; ?>
But sometimes the category archive page has a different design and simply showing post content there won’t work. A better option would be to redirect to the post. This code goes in the functions.php file:
function stf_redirect_to_post(){ global $wp_query; // If there is one post on archive page if( is_archive() && $wp_query->post_count == 1 ){ // Setup post data the_post(); // Get permalink $post_url = get_permalink(); // Redirect to post page wp_redirect( $post_url ); } } add_action('template_redirect', 'stf_redirect_to_post');
This second bit of code came from here.