Positionierungsbildschirm (Kontext) Hilfetabellen

9

Die Verwendung der neuen WP_ScreenKlasse erleichtert das Hinzufügen von Hilfetext zu einem Bildschirm.

<?php
add_action( "load-{$somepage}", 'wpse_load_reading' );
function wpse_load_reading()
{
    get_current_screen()->add_help_tab( array(
        'id'        => 'my-help-tab',
        'title'     => __( 'My Title' ),
        'content'   => __( 'Help Content' )
    ) );
}

Dies ist ideal für benutzerdefinierte Seiten. Wenn Sie jedoch einem vorhandenen Bildschirm eine Registerkarte "Hilfe" hinzufügen, tritt beispielsweise eine options-reading.phpgewisse Verrücktheit auf.

Der load-options-reading.phpHook wird ausgelöst, bevor die integrierte WP-Seite eigene Hilfe-Registerkarten hinzufügt. Mit anderen Worten, wenn Sie einem vorhandenen Bildschirm eine Registerkarte "Hilfe" hinzufügen, werden alle integrierten Registerkarten "Hilfe" am Ende der Liste angezeigt.

Hier ist ein Code, wenn Sie dies ausprobieren möchten:

<?php
add_action( "load-options-reading.php", 'wpse_load_reading2' );
function wpse_load_reading2()
{
    get_current_screen()->add_help_tab( array(
        'id'        => 'my-help-tab',
        'title'     => __( 'My Title' ),
        'content'   => __( 'Why is this tab above the built in tab?' )
    ) );
}

Gibt es eine Möglichkeit, die Hilfe-Registerkarten auf einem Bildschirm neu anzuordnen?

BEARBEITEN:

Ich habe einen Weg gefunden, dies zu umgehen. Die Standard-Hilfe-Registerkarten werden hinzugefügt, bevor die admin-header.phpDatei aufgenommen wird.

Sie können also load-{$built_in_page}eine Funktion einbinden und von dort aus eine Funktion einbinden, admin_headdie sich um das Einrichten Ihrer Hilfetabellen kümmert.

<?php
add_action( 'load-options-reading.php', 'wpse45210_load' );
function wpse45210_load()
{
    add_action( 'admin_head', 'wpse45210_add_help' );
}

function wpse45210_add_help()
{
    get_current_screen()->add_help_tab( array(
        'id'        => 'my-help-tab',
        'title'     => __( 'My Title' ),
        'content'   => __( 'This tab is below the built in tab.' )
    ) );
}

Scheint ein bisschen wie ein Hack. Gibt es einen besseren Weg?

chrisguitarguy
quelle

Antworten:

7

Verwenden admin_head-$hook_suffixAktion ist diese gleiche Methode entfernt nur exta Aktion und Rückruf.

Mamaduka
quelle
6

Wie von @Mamaduka vorgeschlagen, können Sie sich dort einbinden admin_head-{$page_hook}und die kontextbezogene Hilfe hinzufügen. admin_headwird ausgelöst, nachdem die Standardregisterkarten für die kontextbezogene Hilfe hinzugefügt wurden.

<?php
add_action( 'admin_head-options-reading.php', 'wpse45210_add_help' );
function wpse45210_add_help()
{
    get_current_screen()->add_help_tab( array(
        'id'        => 'my-help-tab',
        'title'     => __( 'My Title' ),
        'content'   => __( 'This tab is below the built in tab.' )
    ) );
}
chrisguitarguy
quelle
1

Ich denke du hast drei Chancen:

  1. Verwenden Sie WP_Screen->$_help_tabsdiese Option, um sie manuell neu zu ordnen.
  2. Ergreifen Sie die vorhandenen Hilfetabellen und speichern Sie sie vorübergehend an einem anderen Ort. Verwenden WP_Screen->remove_help_tab( $id )Sie sie dann und fügen Sie sie manuell wieder hinzu.
  3. Verwenden Sie den admin_headFilter, um die Hilfetabellen zu füllen, oder missbrauchen Sie einen der Filter oder Hooks, die zuvor in admin-header.php ausgelöst werden
Kaiser
quelle
1
WP_Screen::$_help_tabsist privat. Ich kann leider nicht direkt darauf zugreifen. Siehe meine Bearbeitung, ich habe Ihren dritten Vorschlag gemacht!
Chrisguitarguy