WordPress как на ладони
wordpress jino

get_current_screen() WP 3.1

Возвращает объект данных о странице админ-панели. Т.е. получает данные о текущем экране в админ-панели WordPress.

Функцию нужно использовать после события admin_init, например current_screen, потому что на тот момент данные о странице еще не собраны и функция вернет null.

Используется в: add_screen_option().
Работает на основе: WP_Screen()
✈ 1 раз = 0.000016с = очень быстро | 50000 раз = 0.01с = скорость света

Хуков нет.

Возвращает

Объект данных:

WP_Screen Object
(
	[id] =>                      // Строка. Уникальный ID экрана.
	[action] =>                  // Действие ассоциированное с экраном 'add' для *-new.php. Или пустой результат.
	[base] => post               // Базовый тип экрана. Например, для страниц типа 'post-new.php' или 'post.php' базовый тип = 'post'.
	[parent_base] => edit        // Базовый тип родительского пункта меню. Получается из $parent_file, удаляются параметры запроса и 
								 // '.php' расширение. Пр. 'edit.php?post_type=page' и 'edit.php?post_type=post' будут иметь родительскую базу 'edit'
	[parent_file] => edit.php    // Родительский файл экрана из меню, пр.: 'edit.php?post_type=page', 'edit.php', 'options-general.php'
	[post_type] => post          // Тип записи ассоциированный с экраном, если такой есть. Пр.:'edit.php?post_type=page' = 'page'
	[taxonomy] =>                // Таксономия ассоциированная с экраном, если есть. Пр.: 'edit-tags.php?taxonomy=category' = 'category'
	...
	(разные данные)
)

Примеры

#1 добавим скрипт только на страницу редактирования записей

Этот пример показывает как добавить javascript код в подвал админ-панели, только на страницах редактирования/создания записей. Текст добавляется через фильтр "admin_footer", в котором проверяется информация текущего экрана, если это страница редактирования, то выводится код:

<?php
// сохранение поста в wordpress при помощи сочетания клавиш ctrl + s
add_filter('admin_footer', 'post_save_accesskey');
function post_save_accesskey(){
	// выходим если это не страница создания/редактирования
	if( get_current_screen()->parent_base != 'edit' ) return;

	?>
	<script type="text/javascript">
	jQuery(document).ready(function($){

		// jQuery код

	});</script>
	<?php
}

в этом примере get_current_screen() содержит такой массив (объект):

WP_Screen Object
(
	[action] => add
	[base] => post
	[columns:WP_Screen:private] => 2
	[id] => page
	[in_admin:protected] => site
	[is_network] => 
	[is_user] => 
	[parent_base] => edit
	[parent_file] => edit.php?post_type=page
	[post_type] => page
	[taxonomy] => 
	[_help_tabs:WP_Screen:private] => Array
		(
			[about-pages] => Array
				(
					[title] => О страницах
					[id] => about-pages
					[content] => <p>Страницы похожи на записи тем, что у них есть заголовок, текст и метаданные, но отличаются от них тем, что не принадлежат к хронологическому потоку блога, а являются постоянными. Страницам не присваиваются рубрики и метки, однако они могут иметь иерархию. Можно размещать одни страницы под другими, выбирая родительскую страницу и получая группу страниц.</p><p>Создание страницы очень похоже на создание записи — экран можно таким же образом настраивать при помощи перетаскивания, вкладки «Настройки экрана» и сворачивания/разворачивания блоков. На этом экране также есть удобный полноэкранный режим, доступный как в визуальном, так и в текстовом редакторе по специальной кнопке. Редактор страниц работает так же, как и редактор записей, однако в блоке «Атрибуты страницы» есть несколько элементов, присущих только страницам:</p>
					[callback] => 
				)

			[inserting-media] => Array
				(
					[title] => Вставка медиа-файлов
					[id] => inserting-media
					[content] => <p>Вы можете загружать и вставлять медиа-файлы (изображения, аудио-файлы, документы и т.д.), нажав кнопку «Добавить медиафайл». Можно выбрать изображения и файлы, уже загруженные в библиотеку, либо загрузить новые файлы и добавить их в запись или страницу. Чтобы создать галерею, выберите изображения и нажмите кнопку «Создать новую галерею».</p><p>Можно также добавлять медиа-файлы со многих популярных сайтов, включая Twitter, YouTube, Flickr и другие, просто скопировав адрес файла и вставив его в текст вашей записи или страницы отдельной строкой. Прочитайте статью в Кодексе, чтобы <a href="http://codex.wordpress.org/Вставка_объектов">узнать больше о вставке объектов</a>.</p>
					[callback] => 
				)

			[page-attributes] => Array
				(
					[title] => Атрибуты страницы
					[id] => page-attributes
					[content] => <p><strong>Родительская</strong> — вы можете организовать иерархию страниц. Например, создать страницу «Обо мне», внутри которой будут страницы «Биография» и «Моя собака». По уровню вложенности нет никаких ограничений.</p><p><strong>Шаблон</strong> — в некоторых темах для определённых страниц могут быть особые шаблоны с дополнительными функциями или другим дизайном. Вы увидите их в этом списке.</p><p><strong>Порядок</strong> — страницы обычно сортируются по алфавиту, но вы можете задать свой собственный порядок, введя число (1 — первая и т.д.) в это поле.</p>
					[callback] => 
				)

		)

	[_help_sidebar:WP_Screen:private] => <p><strong>Дополнительная информация:</strong></p><p><a href="http://codex.wordpress.org/Pages_Add_New_Screen" target="_blank">Документация по добавлению новых страниц</a></p><p><a href="http://codex.wordpress.org/Pages_Screen#Editing_Individual_Pages" target="_blank">Документация по редактированию страниц</a></p><p><a href="http://ru.forums.wordpress.org/" target="_blank">Форумы поддержки</a></p>
	[_options:WP_Screen:private] => Array
		(
			[layout_columns] => Array
				(
					[max] => 2
					[default] => 2
				)

		)

	[_show_screen_options:WP_Screen:private] => 1
	[_screen_settings:WP_Screen:private] => <div class="editor-expand hidden"><label for="editor-expand-toggle"><input type="checkbox" id="editor-expand-toggle" checked='checked' />Растягивать редактор на высоту окна.</label></div>
)

#2 контекстная помощь на странице админ-панели

Этот пример показывает как добавить контекстную помощь на страницу админки, которую вы создали, использовав функцию add_options_page(). Здесь, предполагается, что эта страница имеет ярлык my_admin_page

add_action('admin_menu', 'my_admin_add_page');
function my_admin_add_page() {
	global $my_admin_page;
	$my_admin_page = add_options_page(__('My Admin Page', 'map'), __('My Admin Page', 'map'), 'manage_options', 'map', 'my_admin_page');

	// Добавляем my_help_tab когда подгружается my_admin_page
	add_action('load-'.$my_admin_page, 'my_admin_add_help_tab');
}

function my_admin_add_help_tab () {
	global $my_admin_page;
	$screen = get_current_screen();

	/*
	 * Проверяем текущий экран = My Admin Page
	 * Ничего не делаем если условие не выполняется
	 */
	if ( $screen->id != $my_admin_page )
		return;

	// Добавляем my_help_tab помощь, если текущий экран My Admin Page
	$screen->add_help_tab( array(
		'id'    => 'my_help_tab',
		'title' => 'Помощь по странице',
		'content'   => '<p>Вспомогательное описание объясняющее непонятные места на странице</p>',
	) );
}

#3 Вкладка помощи

Этот пример показывает как создать контекстную помощь на созданной вами странице админки. Страница создается с помощью функции add_options_page(), add_menu_page() и им подобным.

Допустим мы создали страницу с ярлыком 'my_admin_page', которая находится в пункте меню Настройки (options).

add_action('admin_menu', 'my_admin_add_page');
function my_admin_add_page() {
	$my_admin_page = add_options_page(__('My Admin Page', 'map'), __('My Admin Page', 'map'), 'manage_options', 'map', 'my_admin_page');

	// добавляем контекст при загрузке страницы
	add_action( 'load-'. $my_admin_page, 'my_admin_add_help_tab' );
}

function my_admin_add_help_tab () {
	$screen = get_current_screen();

	// контент для вкладки помощь
	$screen->add_help_tab( array(
		'id'    => 'my_help_tab',
		'title' => __('My Help Tab'),
		'content'   => '<p>' . __( 'Descriptive content that will show in My Help Tab-body goes here.' ) . '</p>',
	) );
}

Код get current screen: wp-admin/includes/screen.php WP 4.8.2

<?php
function get_current_screen() {
	global $current_screen;

	if ( ! isset( $current_screen ) )
		return null;

	return $current_screen;
}

Cвязанные функции

Из раздела: Админ-панель

get_current_screen 2 комментария
  • Константин

    еще вариант:

    add_filter('admin_footer', 'post_save_accesskey');
    function post_save_accesskey(){
      $atf = get_current_screen()->parent_base;
      $btf = array('users','profile');
    
      if (in_array($atf, $btf)){
    
    	wp_enqueue_script( "buttonpage",  get_template_directory_uri() . '/js/button.js');
    	wp_enqueue_script( "prinpage",  get_template_directory_uri() . '/js/jquery.printPage.js');
    
      }
    }

    Он должен подключать эти два файла только на страницах "Добавить нового пользователя" и "Профиль" в общем там (в этих файлах) реализуется печать логина и пароля.

    Пока остановился на нем.

    Ответить2 года назад #

Здравствуйте, !

Ваш комментарий