Wie bestimmt man, welchen Admin-Bildschirm / Sub-Bildschirm ich gerade anschaue?

Edit: Der Q hat sich auf Folgendes eingeengt:

“Wie würde ich die Bildschirm-IDs aller Admin-UI-Bildschirme gleichzeitig abrufen?”


Edit: Ich habe ein paar mehr Plugin Globals hinzugefügt.


Q ist das Folgende: Überprüfen Sie, welche AdminUI-Untermenü-Seite / Bildschirm Sie anzeigen und überprüfen Sie dies gegen einige globale Var oder eine interne function .

// This helps you inspecting the data - just drop it in some functions.php file of a theme function wpse_inspect_admin_screen_data() { echo '
'; echo '

global $menu

'; print_r( $GLOBALS['menu'] ); echo '
'; echo '

global $submenu

'; print_r( $GLOBALS['submenu'] ); echo '
'; echo '

global $self

'; print_r( $GLOBALS['self'] ); echo '
'; echo '

global $parent_file

'; print_r( $GLOBALS['parent_file'] ); echo '
'; echo '

global $submenu_file

'; print_r( $GLOBALS['submenu_file'] ); echo '
'; echo '

global $plugin_page

'; print_r( $GLOBALS['plugin_page'] ); echo '
'; echo '

global $admin_page_hooks

'; print_r( $GLOBALS['admin_page_hooks'] ); echo '
'; echo '

global $_parent_pages

'; print_r( $GLOBALS['_parent_pages'] ); echo '
'; echo '

global $_registered_pages

'; print_r( $GLOBALS['_registered_pages'] ); echo '
'; echo '

global $title

'; print_r( $GLOBALS['title'] ); echo '
'; echo '

global $_wp_real_parent_file

'; print_r( $GLOBALS['_wp_real_parent_file'] ); echo '
'; echo '

global $_wp_menu_nopriv

'; print_r( $GLOBALS['_wp_menu_nopriv'] ); echo '
'; echo '

global $_wp_submenu_nopriv

'; print_r( $GLOBALS['_wp_submenu_nopriv'] ); echo '
'; // built by set_current_screen() in /core_root/wp-admin/includes/template.php line 2085 (wp 3.2.x) echo '

global $current_screen

'; print_r( $GLOBALS['current_screen'] ); echo '
'; } add_action( 'shutdown', 'wpse_inspect_admin_screen_data', 9999 ); 

Ich habe bereits ein Array mit dem Slug und Label aus dem Eltern- und dem Untermenüpunkt. Hier sehen Sie einen exemplarischen Teil des Arrays, das ich aus dem global $menu, $submenu; und das muss ich überprüfen gegen:

 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 ) ) ) 

Hinweis: Das Q ist nicht die Schleife. Nur was genau kann ich verwenden, um zu überprüfen, welchen Menüpunkt und Unterpunkt ich gerade sehe.

Solutions Collecting From Web of "Wie bestimmt man, welchen Admin-Bildschirm / Sub-Bildschirm ich gerade anschaue?"

Da das Admin-Menü selbst weiß, wo Sie gerade sind, ist es sinnvoll, sich den Code anzusehen, der für diese Logik verantwortlich ist.

Die _wp_menu_output() wird von _wp_menu_output() in menu-header.php . Es nutzt die Anzahl der globalen Variablen, nämlich:

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

Die tatsächliche Logik ist ziemlich umfangreich und unterscheidet sich natürlich für native und Plugin-Seiten. Suchen Sie nach Zuweisungen von 'current' zu CSS-classn und Umgebung.

Da wir jetzt get_current_screen() , was ein nettes Objekt zurückgibt, ist es ziemlich einfach geworden, das zu verwenden.