Почему array_map и sanitize_text_field удаляют вложенный массив?
Потому что надо выкинуть на помойку бессмысленную функцию sanitize_text_field и забыть о её существовании. 
Ну и на досуге почитать в документации, что  array_map работает с одномерными массивами.
в общем, сделал очистку с помощью рекурсивной функцииfunction wp_clean($var)
{
	if (is_array($var)) {
		return array_map('wp_clean', $var);
	} else {
		return is_scalar($var) ? sanitize_text_field($var) : $var;
	}
}