Index: wp-admin/users.php
===================================================================
--- wp-admin/users.php	(revision 19633)
+++ wp-admin/users.php	(working copy)
@@ -382,6 +382,8 @@
 	</div>
 <?php endif;
 
+$messages = apply_filters( 'admin_messages', $messages );
+
 if ( ! empty($messages) ) {
 	foreach ( $messages as $msg )
 		echo $msg;
Index: wp-admin/edit-comments.php
===================================================================
--- wp-admin/edit-comments.php	(revision 19633)
+++ wp-admin/edit-comments.php	(working copy)
@@ -220,6 +220,8 @@
 			}
 		}
 
+		$messages = apply_filters( 'admin_messages', $messages );
+
 		echo '<div id="moderated" class="updated"><p>' . implode( "<br/>\n", $messages ) . '</p></div>';
 	}
 }
Index: wp-admin/edit-tags.php
===================================================================
--- wp-admin/edit-tags.php	(revision 19633)
+++ wp-admin/edit-tags.php	(working copy)
@@ -268,10 +268,20 @@
 	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_REQUEST['s']) ) ); ?>
 </h2>
 
-<?php if ( isset($_REQUEST['message']) && ( $msg = (int) $_REQUEST['message'] ) ) : ?>
-<div id="message" class="updated"><p><?php echo $messages[$msg]; ?></p></div>
-<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
-endif; ?>
+<?php
+if ( isset($_REQUEST['message']) && ( $msg = (int) $_REQUEST['message'] ) ):
+	$_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
+	$message = $messages[$msg];
+else:
+	$message = false;
+endif;
+$message_list = apply_filters( 'admin_messages', array( $message ) );
+if ( 0 != count( $message_list ) ):?>
+<div id="message" class="updated"><p><?php
+	foreach( $message_list as $message )
+		echo $message;
+?></p></div>
+<?php endif; ?>
 <div id="ajax-response"></div>
 
 <form class="search-form" action="" method="get">
Index: wp-admin/user-new.php
===================================================================
--- wp-admin/user-new.php	(revision 19633)
+++ wp-admin/user-new.php	(working copy)
@@ -231,6 +231,8 @@
 	</div>
 <?php endif;
 
+$messages = apply_filters( 'admin_messages', $messages );
+
 if ( ! empty( $messages ) ) {
 	foreach ( $messages as $msg )
 		echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
Index: wp-admin/upload.php
===================================================================
--- wp-admin/upload.php	(revision 19633)
+++ wp-admin/upload.php	(working copy)
@@ -220,8 +220,13 @@
 	$_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
 }
 
-if ( !empty($message) ) { ?>
-<div id="message" class="updated"><p><?php echo $message; ?></p></div>
+$message_list = apply_filters( 'admin_messages', empty( $message ) ? array() : array( $message ) );
+
+if ( 0 != count( $message_list ) ) { ?>
+	<div id="message" class="updated"><p><?php
+	foreach( $message_list as $msg )
+		echo $msg;
+?></p></div>
 <?php } ?>
 
 <?php $wp_list_table->views(); ?>
Index: wp-admin/network/site-new.php
===================================================================
--- wp-admin/network/site-new.php	(revision 19633)
+++ wp-admin/network/site-new.php	(working copy)
@@ -112,6 +112,7 @@
 <?php screen_icon('ms-admin'); ?>
 <h2 id="add-new-site"><?php _e('Add New Site') ?></h2>
 <?php
+$messages = apply_filters( 'admin_messages', $messages );
 if ( ! empty( $messages ) ) {
 	foreach ( $messages as $msg )
 		echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
Index: wp-admin/network/site-info.php
===================================================================
--- wp-admin/network/site-info.php	(revision 19633)
+++ wp-admin/network/site-info.php	(working copy)
@@ -113,6 +113,7 @@
 ?>
 </h3>
 <?php
+$messages = apply_filters( 'admin_messages', $messages );
 if ( ! empty( $messages ) ) {
 	foreach ( $messages as $msg )
 		echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
Index: wp-admin/network/site-settings.php
===================================================================
--- wp-admin/network/site-settings.php	(revision 19633)
+++ wp-admin/network/site-settings.php	(working copy)
@@ -104,6 +104,7 @@
 </h3>
 <?php
 if ( ! empty( $messages ) ) {
+	$messages = apply_filters( 'admin_messages', $messages );
 	foreach ( $messages as $msg )
 		echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
 } ?>
Index: wp-admin/network/user-new.php
===================================================================
--- wp-admin/network/user-new.php	(revision 19633)
+++ wp-admin/network/user-new.php	(working copy)
@@ -74,6 +74,7 @@
 <h2 id="add-new-user"><?php _e('Add New User') ?></h2>
 <?php
 if ( ! empty( $messages ) ) {
+	$messages = apply_filters( 'admin_messages', $messages );
 	foreach ( $messages as $msg )
 		echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
 }
Index: wp-admin/nav-menus.php
===================================================================
--- wp-admin/nav-menus.php	(revision 19633)
+++ wp-admin/nav-menus.php	(working copy)
@@ -473,6 +473,9 @@
 	<?php screen_icon(); ?>
 	<h2><?php esc_html_e('Menus'); ?></h2>
 	<?php
+
+	$messages = apply_filters( 'admin_messages', $messages );
+
 	foreach( $messages as $message ) :
 		echo $message . "\n";
 	endforeach;
Index: wp-admin/widgets.php
===================================================================
--- wp-admin/widgets.php	(revision 19633)
+++ wp-admin/widgets.php	(working copy)
@@ -318,12 +318,30 @@
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?></h2>
 
-<?php if ( isset($_GET['message']) && isset($messages[$_GET['message']]) ) { ?>
-<div id="message" class="updated"><p><?php echo $messages[$_GET['message']]; ?></p></div>
-<?php } ?>
-<?php if ( isset($_GET['error']) && isset($errors[$_GET['error']]) ) { ?>
-<div id="message" class="error"><p><?php echo $errors[$_GET['error']]; ?></p></div>
-<?php } ?>
+<?php
+if ( isset($_GET['message']) && isset($messages[$_GET['message']]) ) {
+	$message_list = apply_filters( 'admin_messages', array( $messages[$_GET['message']] ) );
+} else {
+	$message_list = array();
+}
+if ( 0 != count( $message_list ) ) {
+	echo '<div id="message" class="updated"><p>';
+	foreach( $message_list as $msg )
+		echo $msg;
+	echo '</p></div>';
+}
+if ( isset($_GET['error']) && isset($errors[$_GET['error']]) ) {
+	$error_list = apply_filters( 'error_messages', array( $errors[$_GET['error']] ) );
+} else {
+	$error_list = array();
+}
+if ( 0 != count( $message_list ) ) {
+	echo '<div id="message" class="error"><p>';
+	foreach( $error_list as $error_msg )
+		echo $error_msg;
+	echo '</p></div>';
+}
+?>
 
 <?php do_action( 'widgets_admin_page' ); ?>
 
