based on the docu:
- the $in_same_term parameter in https://developer.wordpress.org/reference/functions/next_post_link/
- the categories' parameters in WP_Query https://developer.wordpress.org/reference/classes/wp_query/#category-parameters
- and how to get a post's category https://developer.wordpress.org/reference/functions/get_the_category/
- and in collaboration with @zackwww;
'infinitely looping 'next post' link at the bottom of a post that only links to posts in that category'
if( get_adjacent_post(true, '', false, 'category') ) { next_post_link($format = '%link', $link = 'Next Article', $in_same_term = true, $taxonomy = 'category'); } else { $thiscat = get_the_category(); $catslug = $thiscat[0]->slug; $last = new WP_Query( array( 'posts_per_page' => 1, 'order' => 'ASC', 'category_name' => $catslug ) ); $last->the_post(); echo '<a href="' . get_permalink() . '">Next Article</a>'; wp_reset_postdata(); }