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?

Antworten:


7

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


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.' )
    ) );
}

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

1
WP_Screen::$_help_tabsist privat. Ich kann leider nicht direkt darauf zugreifen. Siehe meine Bearbeitung, ich habe Ihren dritten Vorschlag gemacht!
Chrisguitarguy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.