有趣的问题<调查一下,我发现[wp-hackers] thread 同一个Dion Hulse提供了更多的信息。
首先,一个带有简单链接的测试页面,它将在thickbox中打开另一个管理页面。
add_action(\'admin_menu\', \'wpse_71437_admin_submenu\');
function wpse_71437_admin_submenu()
{
add_menu_page(
\'TB\',
\'<span style="color:#e57300;">Thickbox</span>\',
\'edit_pages\',
\'open_hidden_page_in_thickbox\',
\'wpse_71437_submenu_page\',
\'\', // no icon
1 // create before Dashboard menu item
);
}
function wpse_71437_submenu_page()
{
wp_enqueue_style(\'thickbox\');
wp_enqueue_script(\'thickbox\');
?>
<div id="icon-upload" class="icon32"></div><h2>Thickbox</h2>
<br><br>
<a href="#" id="open-tb">Click Here</a>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#open-tb").click(function() {
tb_show("", "index.php?page=video_page_hidden&TB_iframe=true");
return false;
});
});
</script>
<?php
}
现在,将在thickbox中打开的页面。其父级定义为
null
, 所以它不会出现在菜单中。回调函数是一个空函数,如果直接访问,则不会显示任何内容。
/**
* Add a hidden and empty submenu page
*/
add_action(\'admin_menu\', \'wpse_71437_admin_menu\');
function wpse_71437_admin_menu()
{
add_submenu_page(
null, // doesn\'t show up in the menu, attached to "index.php" (not sure why)
\'Video\',
\'Video\',
\'edit_pages\',
\'video_page_hidden\',
\'wpse_71437_menu_options\'
);
}
function wpse_71437_menu_options() { /* Print nothing */ }
最后,诀窍
拦截隐藏页面加载并打印一些
iframe
内容:
/**
* Intercept our hidden/empty page and print the Thickbox content
*/
add_action( \'load-dashboard_page_video_page_hidden\', \'wpse_71437_intercept_thickbox\' );
function wpse_71437_intercept_thickbox()
{
iframe_header();
echo \'<iframe width="100%" height="380px" src="http://www.youtube.com/embed/cL6qe0b-_BA" frameborder="0" allowfullscreen></iframe>\';
iframe_footer();
exit; //Die to prevent the page continueing loading and adding the admin menu\'s etc.
}