我正在开发一个插件,希望将某些内容仅限于插件特定的管理菜单页面。因此,在将(子)菜单页面添加到数组中时,我会写入返回的段塞,以便稍后在当前页面上对其进行检查。
问题似乎是get_current_screen
正在返回null
从/之前调用时admin_init
. 然而,我将菜单页面添加到admin_menu
- 在之前admin_init
.
这是not working 代码:
add_action( \'admin_menu\', \'my_admin_menu\' );
function my_admin_menu() {
// Set up plugin admin menu
$menu_pages = array();
$menu_pages[] = add_menu_page( ... );
$menu_pages[] = add_submenu_page( ... );
$screen = get_current_screen(); // UNFORTUNATELY, $screen is null here
$screen = $screen->id;
foreach ( $menu_pages as $page ) if ( $screen === $page ) {
// Do plugin-specific stuff
}
} // function my_admin_menu
那么,我真的必须以这样一种方式存储pages数组吗?我以后可以在挂接在后面的某个函数中访问它
admin_init
? 我考虑在定义页面的地方使用页面slug,然后忘记它。
正如托肖所指出的,人们可以用鼻涕虫作为钩子(它们实际上是什么):
$page = add_menu_page( ... );
add_action( $page, ... );
然而,当需要
current screen, 吊钩在链条中的位置太早,因此可以/应该使用
add_action( \'load-\' . $page, ...);
相反