Экран позиционирования (контекстная) Вкладки справки


9

Использование нового WP_Screenкласса значительно упрощает добавление текста справки на экран.

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

Это отлично подходит для пользовательских страниц. Но, добавляя вкладку справки к существующему экрану, допустим options-reading.php, происходит какая-то странность.

На load-options-reading.phpкрючок срабатывает до встроенного WP страницы добавляет свои собственные вкладки справки. Другими словами, добавление вкладки справки к существующему экрану сводит все встроенные вкладки справки в конец списка.

Вот некоторый код, если вы хотите попробовать это:

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

Есть ли способ изменить порядок вкладок справки на экране?

РЕДАКТИРОВАТЬ:

Нашли способ обойти это. Вкладки справки по умолчанию добавляются до включения admin-header.phpфайла.

Таким образом, вы можете подключить load-{$built_in_page}и оттуда подключить функцию, admin_headкоторая позаботится о настройке ваших вкладок справки.

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

Кажется, вроде как взломать. Есть ли способ лучше?

Ответы:


7

Используйте admin_head-$hook_suffixдействие, этот же метод просто удаляет действие exta и обратный вызов.


6

Как предложил @Mamaduka, вы можете подключиться admin_head-{$page_hook}и добавить туда контекстную справку. admin_headсрабатывает после добавления вкладок контекстной справки по умолчанию.

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

Я думаю, у вас есть три шанса:

  1. Используйте, WP_Screen->$_help_tabsчтобы изменить их порядок вручную.
  2. Возьмите существующие вкладки справки, временно сохраните их в другом месте. Затем используйте, WP_Screen->remove_help_tab( $id )а затем добавьте их обратно вручную.
  3. Используйте admin_headфильтр, чтобы заполнить вкладки справки или пропустите один из фильтров или хуков, которые запускаются перед ним в admin-header.php

1
WP_Screen::$_help_tabsэто личное. К сожалению, не могу получить к нему доступ напрямую. Смотрите мое редактирование, я сделал ваше третье предложение!
chrisguitarguy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.