The hook you are after is admin_notices
. This is fired at the top of every admin page.
If you wish to restrict the notice to certain pages you can use: get_current_screen() to get the current screen.
$screen = get_current_screen();
You can wrap the notices in div
elements with class ‘error’ or ‘updated’ to get the red, or yellow styled notices.
For instance:
function wpse51463_admin_notice(){
$screen = get_current_screen();
//If not on the screen with ID 'edit-post' abort.
if( $screen->id !='edit-post' )
return;
?>
<div class="updated">
<p>
A notice on the post list screen
</p>
</div>
<div class="error">
<p>
An error message
</p>
</div>
<?php
}
add_action('admin_notices','wpse51463_admin_notice');
For a plug-ins settings page (nested under the Settings tab) the screen id should be settings_page_{page-name}
. You can of course determine the id of a page by using the above to print the current screen id of every page.