I have working code which adds a help tab to all screens in the admin which already have help options or a help screen - however, screens which don't have contextual help - such as the plugin I writing, also don't recognize the add_action call - how can I ensure that the help_tab appears on each and every screen in the admin?

Some simple code - but it's more or less exactly like in the Codex.

I add the action in the class __construct

// add help tab to admin UI ##
add_action( "load-{$GLOBALS['pagenow']}", array( $this, 'add_help_tab' ), 20 );

This calls a method in the class "add_help_tab":

public function add_help_tab() {
        foreach ( $this->help_tabs as $id => $data ) {
                    'id'       => $id
                   ,'title'    => __( $data['title'], 'q_support' )
                   // Use the content only if you want to add something
                   // static on every help tab. Example: Another title inside the tab
                   ,'callback' => array( $this, 'callback_function' )

Which in turn calls the callback method "callback_function" - this all works as expected, except on screens without pre-existing help tabs - is there a way I can ensure each and every page includes the help tab feature?


This is how you can add help tabs to all admin pages—no matter if there already are any, or not:

add_action('in_admin_header', 'wpse_124979_add_help_tabs');

function wpse_124979_add_help_tabs() {
    if ($screen = get_current_screen()) {
        $help_tabs = $screen->get_help_tabs();

            'id' => 'my_help_tab',
            'title' => 'My Help',
            'content' => '<p>My help content...</p>',

        if (count($help_tabs))
            foreach ($help_tabs as $help_tab)
} // function wpse_124979_add_help_tabs

In your OOP setting this should look something like the following:

// This could go in your constructor, for instance
add_action('in_admin_header', array($this, 'add_help_tabs'));

function add_help_tabs() {
    if ($screen = get_current_screen()) {
        $help_tabs = $screen->get_help_tabs();

        foreach ($this->help_tabs as $id => $data)
                'id' => $id,
                'title' => __($data['title'], 'q_support'),
                'callback' => array($this, 'callback_function'),

        if (count($help_tabs))
            foreach ($help_tabs as $help_tab)
} // function add_help_tabs

in_admin_header is pretty much the last action hook before the screen meta (and so the help) is being rendered.

So, what do you get from this?

  • Add help tabs to every single Admin page (core, plugin, other);
  • your tabs will come before/on top of the original help tabs (if there are any);
  • even if there are no help tabs at all, your tabs will be added to the screen meta.
  • Yeh - that's perfect - thanks a million! – Q Studio Jan 3 '14 at 9:30
  • 1
    You may want to consider wrapping the 'content' part of the add_help_tab array in a <p> tag to get a consistent amount of padding above the text (for those using the non-OOP version above). – GreatBlakes Oct 14 '14 at 19:04

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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