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.