WP_Screen::add_help_tab( array $args )

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

Description

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.

Parameters

$argsarrayrequired
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.

Source

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'] ) {
		return;
	}

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

Changelog

VersionDescription
4.4.0The $priority argument was added.
3.3.0Introduced.

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.

    <?php 
    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)

        <?php
    /**
     * 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 )
    	    {
    	    	printf( 
    			 '<p>%s</p>'
    			,__( 
    	    			 $tab['callback'][0]->tabs[ $tab['id'] ]['content']
    				,'dmb_textdomain' 
    			 )
    		);
    	}
    }
    // 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.

     <?php
    $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 ) {
            return;
        }
    
        // 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
        get_current_screen()->set_help_sidebar(
            '<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.