我有一个插件,其中包含的代码打破了新的WP 4.0媒体库网格视图。如果我的插件处于活动状态并且选中了此选项,则网格视图本身(页面的其余部分很好)将不会显示。如果用户选中此选项,“我的代码”将获取当前屏幕并显示一个包含相关信息的栏(就在管理栏下方)。以下是WP 4.0发布之前正常工作的代码:
function sbah_show_current_screen() {
$screenoptions = get_option(\'sbah_options\');
if(isset($screenoptions[\'sbah_view_screen\'][0])) {
$takenscreen = $screenoptions[\'sbah_view_screen\'][0];
}
if(isset($takenscreen)) {
function my_current_screen($screen) {
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) return $screen;
$idofscreen = $screen->id;
echo "<div id=\'screennotice\' style=\'border:1px solid black;background:white;padding:5px;\'><strong>This is your current screen ID ( You can turn this off <a href=\'/wp-admin/edit.php?post_type=sbah_helptab&page=sbah_options\'>here</a> ):</strong> <span style=\'color:red;\'>".$idofscreen. "</span></div>";
return $screen;
}
add_action(\'current_screen\', \'my_current_screen\' );
}
}
add_action( \'admin_menu\', \'sbah_show_current_screen\' );
我的条形图仍然显示得很好,唯一似乎被破坏的是媒体库的网格视图。甚至媒体库的列表视图也可以正常工作。
最合适的回答,由SO网友:Stephen 整理而成
好吧,我重新做了整件事,因为我显然是在我应该打印的地方之前打印出了我的信息。现在看起来是这样的:
//SHOW SCREEN IF OPTION CHECKED
add_action( \'admin_notices\', \'sbah_show_current_screen\' );
function sbah_show_current_screen() {
$screenoptions = get_option(\'sbah_options\');
if(isset($screenoptions[\'sbah_view_screen\'][0])) {
$takenscreen = $screenoptions[\'sbah_view_screen\'][0];
}
if(isset($takenscreen)) {
if( defined( \'DOING_AJAX\' ) && DOING_AJAX ) return;
global $current_screen;
echo "<div id=\'screennotice\' style=\'border:1px solid black;background:white;padding:5px;margin-top:15px;float:left;\'><strong>This is your current screen ID ( You can turn this off <a href=\'/wp-admin/edit.php?post_type=sbah_helptab&page=sbah_options\'>here</a> ) :</strong> <span style=\'color:red;\'>".$current_screen->id. "</span></div><div style=\'clear:both;\'></div>";
}
}
我还借此机会将这一点结合到一个行动中,效果更好。生活和学习。