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?

Réponses:


7

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


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

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

1
WP_Screen::$_help_tabsest privé. Impossible d'y accéder directement, malheureusement. Voir mon montage, j'ai fait votre troisième suggestion!
chrisguitarguy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.