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


Использование нового класса 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.' )
    ) );
}

Похоже на взлом. Есть ли лучший способ?

Author: chrisguitarguy, 2012-03-11

3 answers

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

 7
Author: Mamaduka, 2012-03-11 21:04:36

Как предложил @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.' )
    ) );
}
 6
Author: chrisguitarguy, 2012-03-12 00:38:13

Я предполагаю, что у вас есть три шанса:

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