Intereting Posts
Изменить сообщение Meta через AJAX из таблицы списков сообщений Иерархический пользовательский интерфейс таксономии Взломанный веб-сайт WordPress, как сообщили Google Search Console, что делать? сделать многоязычный веб-сайт wordpress Arabic-english Каковы плюсы и минусы новой установки wordpress и исправление уже существующей? Как регистрировать и размещать файлы JavaScript без нарушения зависимостей плагина? Как загрузить старые версии плагинов? WP_Query внутри существующего wp_query останавливает следующую запись, показывающую Как работает API метаданных? Пользовательские функции роли для администратора не вступают в силу (нет плагина) Выведите собственный короткий почтовый ящик. Помогите определить ошибку. Запросные сообщения с двойной таксономией Как wp_cache должен работать, и помогает ли его производительность? Как поместить массив в запрос пользователя wp Добавить тег запроса версии ко всем изображениям

Как добавить вкладку справки ко всем страницам администрирования, включая плагины

У меня есть рабочий код, который добавляет вкладку справки на все экраны администратора, у которых уже есть варианты справки или экран справки. Однако экраны, которые не имеют контекстной справки, такие как плагин, который я пишу, также не распознают add_action call – как я могу гарантировать, что help_tab появится на каждом экране администратора?

Некоторый простой код – но это более или менее точно так же, как в Codex .

Я добавляю действие в класс __construct

// add help tab to admin UI ## add_action( "load-{$GLOBALS['pagenow']}", array( $this, 'add_help_tab' ), 20 ); 

Это вызывает метод в классе «add_help_tab»:

 public function add_help_tab() { foreach ( $this->help_tabs as $id => $data ) { get_current_screen()->add_help_tab( array( 'id' => $id ,'title' => __( $data['title'], 'q_support' ) // Use the content only if you want to add something // static on every help tab. Example: Another title inside the tab ,'callback' => array( $this, 'callback_function' ) ) ); } } 

Что, в свою очередь, вызывает метод обратного вызова «callback_function» – все работает так, как ожидалось, за исключением экранов без ранее существовавших вкладок справки – есть ли способ обеспечить, чтобы каждая страница включала вкладку вкладки справки?

Solutions Collecting From Web of "Как добавить вкладку справки ко всем страницам администрирования, включая плагины"

Таким образом вы можете добавлять вкладки справки ко всем страницам администратора – независимо от того, есть ли они, или нет:

 add_action('in_admin_header', 'wpse_124979_add_help_tabs'); function wpse_124979_add_help_tabs() { if ($screen = get_current_screen()) { $help_tabs = $screen->get_help_tabs(); $screen->remove_help_tabs(); $screen->add_help_tab(array( 'id' => 'my_help_tab', 'title' => 'My Help', 'content' => '<p>My help content...</p>', )); if (count($help_tabs)) foreach ($help_tabs as $help_tab) $screen->add_help_tab($help_tab); } } // function wpse_124979_add_help_tabs 

В настройках OOP это должно выглядеть примерно так:

 // This could go in your constructor, for instance add_action('in_admin_header', array($this, 'add_help_tabs')); function add_help_tabs() { if ($screen = get_current_screen()) { $help_tabs = $screen->get_help_tabs(); $screen->remove_help_tabs(); foreach ($this->help_tabs as $id => $data) $screen->add_help_tab(array( 'id' => $id, 'title' => __($data['title'], 'q_support'), 'callback' => array($this, 'callback_function'), )); if (count($help_tabs)) foreach ($help_tabs as $help_tab) $screen->add_help_tab($help_tab); } } // function add_help_tabs 

in_admin_header – это в значительной степени последний крюк действия перед in_admin_header экрана (и, таким образом, помощь).

Итак, что вы получаете от этого?

  • Добавьте вкладки справки на каждую страницу администратора (ядро, плагин, другое);
  • ваши вкладки будут отображаться до / поверх исходных вкладок справки (если таковые имеются);
  • даже если никаких вкладок для справки вообще нет, ваши вкладки будут добавлены в метафайл экрана.