wake-up-neo.net

So fügen Sie allen Administrationsseiten eine Hilferegisterkarte hinzu - einschließlich der Pluginseiten

Ich habe Arbeitscode, der allen Bildschirmen im Admin, die bereits Hilfeoptionen oder einen Hilfebildschirm haben, einen Hilfebutton hinzufügt. Bildschirme, die keine kontextbezogene Hilfe haben, wie das Plugin, das ich schreibe, erkennen die add_action ebenfalls nicht Aufruf - Wie kann ich sicherstellen, dass die Registerkarte "help_tab" auf jedem einzelnen Bildschirm des Administrators angezeigt wird?

Ein einfacher Code - aber er ist mehr oder weniger genau wie im Codex .

Ich füge die Aktion in der Klasse __construct hinzu

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

Dies ruft eine Methode in der Klasse "add_help_tab" auf:

public function add_help_tab() {
        foreach ( $this->help_tabs as $id => $data ) {
            get_current_screen()->add_help_tab( 
                array(
                    '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' )
                ) 
            );
        }
}

Welches ruft wiederum die Rückrufmethode "callback_function" auf - dies funktioniert alles wie erwartet, außer auf Bildschirmen ohne bereits vorhandene Hilferegisterkarten - kann ich sicherstellen, dass jede Seite die Hilferegisterkartenfunktion enthält?

2
Q Studio

So können Sie allen Administrationsseiten Hilfetabs hinzufügen - unabhängig davon, ob bereits welche vorhanden sind oder nicht:

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();
        $screen->remove_help_tabs();

        $screen->add_help_tab(array(
            'id' => 'my_help_tab',
            'title' => 'My Help',
            'content' => '<p>My help content...</p>',
        ));

        if (count($help_tabs))
            foreach ($help_tabs as $help_tab)
                $screen->add_help_tab($help_tab);
    }
} // function wpse_124979_add_help_tabs

In Ihrer OOP -Einstellung sollte dies ungefähr so ​​aussehen:

// 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();
        $screen->remove_help_tabs();

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

        if (count($help_tabs))
            foreach ($help_tabs as $help_tab)
                $screen->add_help_tab($help_tab);
    }
} // function add_help_tabs

in_admin_header ist so ziemlich der letzte Aktions-Hook, bevor das Bildschirm-Meta (und damit die Hilfe) gerendert wird.

Also, was bekommen Sie davon?

  • Fügen Sie jeder einzelnen Admin-Seite (Core, Plugin, Sonstiges) Hilfetabs hinzu.
  • ihre Registerkarten werden vor/über den ursprünglichen Hilfe-Registerkarten angezeigt (sofern vorhanden).
  • auch wenn es überhaupt keine Hilfe-Registerkarten gibt, werden Ihre Registerkarten dem Bildschirm-Meta hinzugefügt.
3
tfrommen