Search only in the same category as the current post or page (single page)

There is no back-end option for this feature, but can be easily achieved by a small custom code. A similar code for archive pages can be found here.

What is this, and where do I put this custom code?

add_filter( 'asp_query_args', 'asp_posts_from_same_cat', 10, 2 );
function asp_posts_from_same_cat($args, $search_id) {
  $taxonomy = 'category'; // Enter the taxonomy name
  
  // Do not change anything below
  $categories = wp_get_post_terms( $args['_page_id'], $taxonomy, array('fields' => 'ids') );
  if ( !is_wp_error($categories) && count($categories) ) {
    $args['post_tax_filter'][] = array(
      'taxonomy'  => $taxonomy,    // taxonomy name
      'include'   => $categories,   // array of taxonomy term IDs to include
      'exclude'   => array(),
      'allow_empty' => false        // allow (empty) items with no connection to any of the taxonomy terms filter
    );
  }

  return $args;
}

Last updated