The entry has an arbitrary field named gender with the value male .
This field has only one entry, so why displays other entries that have a different meaning?
$arr = [ 'cat' => $id, 'meta_query' => array( 'key' => 'gender', 'value' => 'male' ), ]; $recent = new WP_Query($arr);