Schede della Guida (contestuale) della schermata di posizionamento


9

L'uso della nuova WP_Screenclasse semplifica l'aggiunta di testo di aiuto a uno schermo.

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

Questo è ottimo per le pagine personalizzate. Ma quando si aggiunge una scheda di aiuto a una schermata esistente, diciamo options-reading.php, accadono alcune stranezze.

L' load-options-reading.phphook si attiva prima che la pagina WP integrata aggiunga le proprie schede di aiuto. In altre parole, l'aggiunta di una scheda di aiuto a una schermata esistente blocca tutte le schede di aiuto integrate nella parte inferiore dell'elenco.

Ecco un po 'di codice, se vuoi provarlo:

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

Esiste un modo per riordinare le schede della guida su uno schermo?

MODIFICARE:

Ho trovato un modo per aggirare questo. Le schede di aiuto predefinite vengono aggiunte prima di admin-header.phpincludere il file.

Quindi puoi collegarti load-{$built_in_page}e da lì agganciare una funzione admin_headche si occupa di impostare le tue schede di aiuto.

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

Sembra un po 'come un trucco. Esiste un modo migliore?

Risposte:


7

Usa admin_head-$hook_suffixazione, questo è lo stesso metodo che rimuove l'azione exta e il callback.


6

Come suggerito da @Mamaduka, puoi collegarti admin_head-{$page_hook}e aggiungere l'aiuto contestuale lì. admin_headviene generato dopo aver aggiunto le schede di aiuto contestuali predefinite.

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

Mi immagino si hanno tre possibilità:

  1. Utilizzare WP_Screen->$_help_tabsper riordinarli manualmente.
  2. Prendi le schede di aiuto esistenti, salvale temporaneamente altrove. Quindi utilizzare WP_Screen->remove_help_tab( $id )e quindi aggiungerli nuovamente manualmente.
  3. Utilizzare il admin_headfiltro per popolare le schede della guida o utilizzare uno dei filtri o hook che si attivano prima di esso in admin-header.php

1
WP_Screen::$_help_tabsè privato. Purtroppo non è possibile accedervi direttamente. Vedi la mia modifica, ho fatto il tuo terzo suggerimento!
chrisguitarguy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.