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); 

    2 answers 2

    In short, FIG knows how this WordPress works, but after adding 'meta_key' => 'gender', it worked.

     $arr = [ 'cat' => 8, 'meta_key' => 'gender', 'meta_query' => array( 'key' => 'gender', 'value' => $gender ), ]; 
       $arr = [ 'cat' => $id, 'meta_query' => array( 'key' => 'gender', 'value' => 'male', 'compare' => '=' ), ]; $recent = new WP_Query($arr); 

      Forgot compare.