Как определить, какой экран / вспомогательный экран администратора я просматриваю сейчас

Изменить: Q сузился до следующего:

«Как я могу получить идентификаторы экрана всех экранов интерфейса администратора одновременно?»


Изменить: я добавил несколько глобальных плагинов.


Q : Проверьте, какая страница / экран подменю AdminUI вы просматриваете и проверяете это на наличие некоторой глобальной переменной var или некоторой внутренней функции .

// This helps you inspecting the data - just drop it in some functions.php file of a theme function wpse_inspect_admin_screen_data() { echo '<pre>'; echo '<h3>global <code>$menu</code></h3>'; print_r( $GLOBALS['menu'] ); echo '<hr />'; echo '<h3>global <code>$submenu</code></h3>'; print_r( $GLOBALS['submenu'] ); echo '<hr />'; echo '<h3>global <code>$self</code></h3>'; print_r( $GLOBALS['self'] ); echo '<hr />'; echo '<h3>global <code>$parent_file</code></h3>'; print_r( $GLOBALS['parent_file'] ); echo '<hr />'; echo '<h3>global <code>$submenu_file</code></h3>'; print_r( $GLOBALS['submenu_file'] ); echo '<hr />'; echo '<h3>global <code>$plugin_page</code></h3>'; print_r( $GLOBALS['plugin_page'] ); echo '<hr />'; echo '<h3>global <code>$admin_page_hooks</code></h3>'; print_r( $GLOBALS['admin_page_hooks'] ); echo '<hr />'; echo '<h3>global <code>$_parent_pages</code></h3>'; print_r( $GLOBALS['_parent_pages'] ); echo '<hr />'; echo '<h3>global <code>$_registered_pages</code></h3>'; print_r( $GLOBALS['_registered_pages'] ); echo '<hr />'; echo '<h3>global <code>$title</code></h3>'; print_r( $GLOBALS['title'] ); echo '<hr />'; echo '<h3>global <code>$_wp_real_parent_file</code></h3>'; print_r( $GLOBALS['_wp_real_parent_file'] ); echo '<hr />'; echo '<h3>global <code>$_wp_menu_nopriv</code></h3>'; print_r( $GLOBALS['_wp_menu_nopriv'] ); echo '<hr />'; echo '<h3>global <code>$_wp_submenu_nopriv</code></h3>'; print_r( $GLOBALS['_wp_submenu_nopriv'] ); echo '<hr />'; // built by set_current_screen() in /core_root/wp-admin/includes/template.php line 2085 (wp 3.2.x) echo '<h3>global <code>$current_screen</code></h3>'; print_r( $GLOBALS['current_screen'] ); echo '<pre>'; } add_action( 'shutdown', 'wpse_inspect_admin_screen_data', 9999 ); 

У меня уже есть массив, содержащий слизь и ярлык, как из родительского, так и из подменю. Здесь вы можете увидеть примерную часть массива, построенного из global $menu, $submenu; и что мне нужно проверить:

 Array ( [Appearance] => Array ( [0] => Array ( [label] => Themes [slug] => themes.php [parent_label] => Appearance [parent_file] => themes.php ) [1] => Array ( [label] => Widgets [slug] => widgets.php [parent_label] => Appearance [parent_file] => themes.php ) [2] => Array ( [label] => Editor [slug] => theme-editor.php [parent_label] => Appearance [parent_file] => themes.php ) ) [Pages] => Array ( [0] => Array ( [label] => All Pages [slug] => edit.php?post_type=page [parent_label] => Pages [parent_file] => edit.php?post_type=page ) [1] => Array ( [label] => Add New [slug] => post-new.php?post_type=page [parent_label] => Pages [parent_file] => edit.php?post_type=page ) ) ) 

Примечание: Q не является циклом. Только то , что я могу использовать, чтобы проверить, какой пункт меню и подпункт, который я сейчас просматриваю.

Так как меню администратора знает, как отображать, где вы находитесь, разумно смотреть на код, отвечающий за эту логику.

Выход меню генерируется _wp_menu_output() в menu-header.php . Он использует число глобальных переменных, а именно:

 global $self, $parent_file, $submenu_file, $plugin_page, $pagenow, $typenow; 

Фактическая логика довольно обширна и, естественно, отличается для родных и плагинов. Найдите назначения 'current' для классов CSS и вокруг них.

Поскольку теперь у нас есть get_current_screen() , который возвращает хороший объект, довольно просто использовать его.