$name="John Doe";
// Split $name
$name = preg_split( '/\s+/', trim( $name ) );
// Set first name
$first_name = $name[0];
// Last name was provided?
$last_name = isset( $name[1] ) ? $name[1] : null;
// Define meta query args array
$meta_query_args = array();
// Set "first name" meta query or "first name" + "last name" if both exist
if ( is_null( $last_name ) ) {
$meta_query_args[] = array(
'key' => 'customer_first_name',
'value' => $first_name,
'compare' => 'LIKE',
);
} else {
$meta_query_args[] = array(
'relation' => 'AND', // This is default, just trying to be descriptive
array(
'key' => 'customer_first_name',
'value' => $first_name,
'compare' => 'LIKE'
),
array(
'key' => 'customer_last_name',
'value' => $last_name,
'compare' => 'LIKE'
)
);
}
// Set 'meta_query' in your $args variable
$args['meta_query'] = $meta_query_args;
Note that you’ll have to add extra code to support “last name” + “first name” besides of “first name” + “last name” (order matters).