Onglets d'aide de l'écran de positionnement (contextuel)

9

L'utilisation de la nouvelle WP_Screenclasse facilite l'ajout de texte d'aide à un écran.

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

C'est parfait pour les pages personnalisées. Mais lors de l'ajout d'un onglet d'aide à un écran existant, disons options-reading.php, une certaine bizarrerie se produit.

Le load-options-reading.phpcrochet se déclenche avant que la page WP intégrée ajoute ses propres onglets d'aide. En d'autres termes, l'ajout d'un onglet d'aide à un écran existant fait remonter tous les onglets d'aide intégrés au bas de la liste.

Voici du code, si vous souhaitez l'essayer:

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

Existe-t-il un moyen de réorganiser les onglets d'aide sur un écran?

ÉDITER:

J'ai trouvé un moyen de contourner cela. Les onglets d'aide par défaut sont ajoutés avant que le admin-header.phpfichier ne soit inclus.

Vous pouvez donc vous connecter à load-{$built_in_page}, et à partir de là, accrocher une fonction admin_headqui prend en charge la configuration de vos onglets d'aide.

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

Semble un peu comme un hack. Y a-t-il une meilleure façon?

chrisguitarguy
la source

Réponses:

7

Utilisez l' admin_head-$hook_suffixaction, cette même méthode supprime simplement l'action exta et le rappel.

Mamaduka
la source
6

Comme l'a suggéré @Mamaduka, vous pouvez vous y connecter admin_head-{$page_hook}et y ajouter l'aide contextuelle. admin_headse déclenche après l'ajout des onglets d'aide contextuelle par défaut.

<?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
la source
1

Je suppose que vous avez trois chances:

  1. Utilisez-les WP_Screen->$_help_tabspour les réorganiser manuellement.
  2. Saisissez les onglets d'aide existants, enregistrez-les temporairement ailleurs. Ensuite, utilisez WP_Screen->remove_help_tab( $id )-les puis ajoutez-les manuellement.
  3. Utilisez le admin_headfiltre pour remplir les onglets d'aide ou mal utiliser l'un des filtres ou crochets qui se déclenchent avant dans admin-header.php
kaiser
la source
1
WP_Screen::$_help_tabsest privé. Impossible d'y accéder directement, malheureusement. Voir mon montage, j'ai fait votre troisième suggestion!
chrisguitarguy