WP_Screen::add_help_tab( array $args )

Adds a help tab to the contextual help for the screen.


Call this on the load-$pagenow hook for the relevant screen, or fetch the $current_screen object, or use get_current_screen() and then call the method from the object.

You may need to filter $current_screen using an if or switch statement to prevent new help tabs from being added to ALL admin screens.


Array of arguments used to display the help tab.
  • title string
    Title for the tab. Default false.
  • id string
    Tab ID. Must be HTML-safe and should be unique for this menu.
    It is NOT allowed to contain any empty spaces. Default false.
  • content string
    Optional. Help tab content in plain text or HTML. Default empty string.
  • callback callable
    Optional. A callback to generate the tab content. Default false.
  • priority int
    Optional. The priority of the tab, used for ordering. Default 10.


public function add_help_tab( $args ) {
	$defaults = array(
		'title'    => false,
		'id'       => false,
		'content'  => '',
		'callback' => false,
		'priority' => 10,
	$args     = wp_parse_args( $args, $defaults );

	$args['id'] = sanitize_html_class( $args['id'] );

	// Ensure we have an ID and title.
	if ( ! $args['id'] || ! $args['title'] ) {

	// Allows for overriding an existing tab with that ID.
	$this->_help_tabs[ $args['id'] ] = $args;


4.4.0The $priority argument was added.

User Contributed Notes

  1. Skip to note 5 content

    This is from Codex Usage.
    This example shows how you would add contextual help to an admin page you’ve created with the add_options_page() function. Here, we assume that your admin page has a slug of ‘my_admin_page’ and exists under the Options tab.

    add_action( 'admin_menu', 'my_admin_add_page' );
    function my_admin_add_page() {
        $my_admin_page = add_options_page( __( 'My Admin Page', 'map' ), __('My Admin Page', 'map'), 'manage_options', 'map', 'my_admin_page' );
        // Adds my_help_tab when my_admin_page loads
        add_action( 'load-'.$my_admin_page, 'my_admin_add_help_tab' );
    function my_admin_add_help_tab () {
        $screen = get_current_screen();
        // Add my_help_tab if current screen is My Admin Page
        $screen->add_help_tab( array(
            'id'	=> 'my_help_tab',
            'title'	=> __('My Help Tab'),
            'content'	=> '<p>' . __( 'Descriptive content that will show in My Help Tab-body goes here.' ) . '</p>',
        ) );
  2. Skip to note 6 content

    This is from Codex Usage.
    Advanced Usage (from within a class)

     * Plugin Name: Help Tab Test Case
     * Plugin URI:  http://unserkaiser.com
     * Description: Add Help Tab test case
    class example_help
    	public $tabs = array(
    		// The assoc key represents the ID
    		// It is NOT allowed to contain spaces
    		 'EXAMPLE' => array(
    		 	 'title'   => 'TEST ME!'
    		 	,'content' => 'FOO'
    	static public function init()
    		$class = __CLASS__ ;
    		new $class;
    	public function __construct()
    		add_action( "load-{$GLOBALS['pagenow']}", array( $this, 'add_tabs' ), 20 );
    	public function add_tabs()
    		foreach ( $this->tabs as $id => $data )
    			get_current_screen()->add_help_tab( array(
    				 'id'       => $id
    				,'title'    => __( $data['title'], 'some_textdomain' )
    				// Use the content only if you want to add something
    				// static on every help tab. Example: Another title inside the tab
    				,'content'  => '<p>Some stuff that stays above every help text</p>'
    				,'callback' => array( $this, 'prepare' )
    			) );
    	public function prepare( $screen, $tab )
    	    			 $tab['callback'][0]->tabs[ $tab['id'] ]['content']
    // Always add help tabs during "load-{$GLOBALS['pagenow'}".
    // There're some edge cases, as for example on reading options screen, your
    // Help Tabs get loaded before the built in tabs. This seems to be a core error.
    add_action( 'load-post.php', array( 'example_help', 'init' ) );
    add_action( 'load-post-new.php', array( 'example_help', 'init' ) );

    Above example came out of a WPSE question.
    You can read this WPSE question about how to fix the wrong order bug without changing core code.

  3. Skip to note 7 content

    This is from Codex Usage.
    Basic Usage.

    $screen = get_current_screen();
    $screen->add_help_tab( array( 
       'id' => $id,            //unique id for the tab
       'title' => $title,      //unique visible title for the tab
       'content' => $content,  //actual help text
       'callback' => $callback //optional function to callback
    ) );
  4. Skip to note 8 content
    add_filter( 'contextual_help', 'my_admin_help', 5, 3 );
    function my_admin_help( $old_help, $screen_id, $screen ) {
    	// Not our screen, exit earlier
        if( 'my-admin' != $screen_id ) {
        // Add one help tab
        $screen->add_help_tab( array(
            'id'      => 'my-admin-help',
            'title'   => esc_html__( 'My Help Tab', 'my-text-domain' ),
            'content' => '<p>' . esc_html__( 'Descriptive content that will show in My Help Tab-body goes here.', 'my-text-domain' ) . '</p>',
    		// Use 'callback' to use callback function to display tab content
        ) );
        // This sets the sidebar for help screen, if required
            '<p><strong>' . esc_html__( 'For more information:', 'my-text-domain' ) . '</strong></p>' .
            '<p><a href="https://wordpress.org/">WordPress</a></p&gt;' .
            '<p><a href="https://wordpress.org/support/&quot; target="_blank">' . esc_html__( 'Support Forums', 'my-text-domain' ) . '</a></p>'
        return $old_help;

You must log in before being able to contribute a note or feedback.