Sorry to bother . It was one of my other functions which was limiting the error to echo only once. Here is the previous code :
function display_message( $message = false ) {
if( is_wp_error( $message ) ) {
echo '<div class="error"><p>' . $message->get_error_message() . '</p></div>';
}
It worked fine when i changed it too :
function display_message( $message = false ) {
if( is_wp_error( $message ) ) {
echo '<div class="error"><p>';
foreach ( $message->get_error_messages($code) as $error ) {
echo $error . "<br />\n";
}
echo '</p></div>';
}