For those that want to use a filter and not update the core code:
function filter_ep_formatted_args($formatted_args, $args) {
$new_formatted_args = $formatted_args;
// Update each $formatted_args["filter"]["and"]["bool"]["must"]["terms"] to expand terms into
// array using comma delimiter
if ( ! empty($formatted_args["filter"]["and"]) ) {
for ( $and_ix=0; $and_ix<count($formatted_args["filter"]["and"]); $and_ix++ ) {
if ( ! empty( $formatted_args["filter"]["and"][$and_ix]["bool"]["must"] ) ) {
for ( $must_ix=0; $must_ix < count($formatted_args["filter"]["and"][$and_ix]["bool"]["must"]); $must_ix++ ) {
if ( ! empty($formatted_args["filter"]["and"][$and_ix]["bool"]["must"][$must_ix]["terms"]) ) {
foreach ( $formatted_args["filter"]["and"][$and_ix]["bool"]["must"][$must_ix]["terms"] as $term_key => $term_value ) {
$new_formatted_args["filter"]["and"][$and_ix]["bool"]["must"][$must_ix]["terms"][$term_key] = explode(',',$term_value[0]);
} // foreach
} // if
} // for
} // if
} // for
} // if
return $new_formatted_args;
} // filter_ep_formatted_args
add_filter('ep_formatted_args', array($this,'filter_ep_formatted_args'), 10, 2);