Экран позиционирования (Контекстный) Вкладки Справки
Использование нового класса 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.' )
) );
}
Похоже на взлом. Есть ли лучший способ?
3 answers
Используйте действие admin_head-$hook_suffix
, этот же метод просто удаляет действие exta и обратный вызов.
Как предложил @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.' )
) );
}
Я предполагаю, что у вас есть три шанса:
- Используйте
WP_Screen->$_help_tabs
, чтобы изменить их порядок вручную. - Захватите существующие вкладки справки, временно сохраните их в другом месте. Затем используйте
WP_Screen->remove_help_tab( $id )
, а затем добавьте их обратно вручную. - Используйте фильтр
admin_head
для заполнения вкладок справки или пропустите один из фильтров или крючков, которые срабатывают перед ним в admin-header.php