Pestañas de ayuda de la pantalla de posicionamiento (contextual)

9

El uso de la nueva WP_Screenclase hace que sea bastante fácil agregar texto de ayuda a una pantalla.

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

Esto es genial para páginas personalizadas. Pero al agregar una pestaña de ayuda a una pantalla existente, digamos options-reading.php, ocurre algo extraño.

El load-options-reading.phpgancho se dispara antes de que la página WP incorporada agregue sus propias pestañas de ayuda. En otras palabras, agregar una pestaña de ayuda a una pantalla existente coloca todas las pestañas de ayuda integradas en la parte inferior de la lista.

Aquí hay un código, si desea probar esto:

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

¿Hay alguna forma de reordenar las pestañas de ayuda en una pantalla?

EDITAR:

Encontré una forma de evitar esto. Las pestañas de ayuda predeterminadas se agregan antes de admin-header.phpincluir el archivo.

Para que pueda conectarse load-{$built_in_page}, y desde allí, una función admin_headque se encarga de configurar sus pestañas de ayuda.

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

Parece una especie de truco. ¿Hay una mejor manera?

chrisguitarguy
fuente

Respuestas:

7

Use admin_head-$hook_suffixaction, este es el mismo método, solo elimina la acción exta y la devolución de llamada.

Mamaduka
fuente
6

Como sugirió @Mamaduka, puede conectar admin_head-{$page_hook}y agregar la ayuda contextual allí. admin_headse activa después de que se hayan agregado las pestañas de ayuda contextual predeterminadas.

<?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
fuente
1

Yo supongo que usted tiene tres posibilidades:

  1. Use WP_Screen->$_help_tabspara reordenarlos manualmente.
  2. Tome las pestañas de ayuda existentes, guárdelas temporalmente en otro lugar. Luego use WP_Screen->remove_help_tab( $id )y luego agréguelos manualmente.
  3. Use el admin_headfiltro para completar las pestañas de ayuda o utilice uno de los filtros o ganchos que se activan antes en admin-header.php
emperador
fuente
1
WP_Screen::$_help_tabses privado. No puedo acceder directamente, desafortunadamente. Vea mi edición, ¡hice su tercera sugerencia!
chrisguitarguy