5

I'm wondering how you go about creating an info/help message at the top of a custom post type in WP's dashboard? I often see these at the top of plugins and Id like to do the same thing for my custom post types if possible (see image below for example --- Note: Screenshot has been taken from NSP-Code's "Post-Types Order" plugin on the settings page")

enter image description here

EDIT #1

Thanks for the help everyone! It appears that I have two distinctly different ways available to me in how I can approach this as outlined by @Stephen & @Bainternet...Both look like viable options so Im going to try them all out and report back with what seems to work best in my situation.

Thanks again for the assistance. WPSE is by far my fav place to learn new things about Wordpress, this place is great.

9

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.

  • This solution seemed to work best for my needs, thank you for the thorough explanation as well! – Mr.Brown May 8 '12 at 18:46
3

If you want something like this:

enter image description here

Then here's something that does the job:

add_action('admin_footer','print_mynote');
function print_mynote(){
    global $typenow,$pagenow;
    if  (in_array( $pagenow, array( 'post.php', 'post-new.php' ))  && "Post_Type_Name" == $typenow ) {
        ?>
        <SCRIPT TYPE="text/javascript">
            jQuery(document).ready(function(){
                var myDiv = jQuery('<div>');
                myDiv.css("border","1px dashed #000000");
                myDiv.css("padding","5px");
                myDiv.css("background","lightyellow");
                myDiv.css("width","70%");
                myDiv.html("PUT your info help message here....");
                jQuery(".wrap").find("h2").after(myDiv);
            });
        </SCRIPT>
    <?php
    }
}

Just make sure you change Post_Type_Name to the name of your post type, and change PUT your info help message here.... to your actual message.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.