在深入研究了抄本和黑客攻击之后,我想出了如何做到这一点。
Short answer - 使用thickbox(http://codex.wordpress.org/ThickBox).
Longer answer....
钩住after_setup_theme
不适合将任何内容插入管理页面,因为当该主题处于活动状态时,它会在每个页面加载上运行。根据凯撒的建议,我们可以使用after_switch_theme
相反
钩子in_admin_header
将允许我们在管理页面的主体中加入一些HTML,我们可以使用它来填充一个模式框,并使用wordpress附带的thickbox来显示它。
下面是一个简单的示例,在切换到“我的主题”后的页面加载中,会向用户显示一个模式框,其中可以包含一个链接或常规表单,允许我们执行这些设置操作,但只有在用户决定这样做的情况下。真正的表单包括“不再显示此内容”选项。
function jp_modal()
{
//inject a script that opens a thickox which contains the content of #install
?>
<script>
jQuery(window).load(function($) {
tb_show("jp theme install","#TB_inline?width=600&height=800&inlineId=install", null);
});
</script>
<div id=\'install\'><div>My Install Options!</div></div>
<?php
}
function jp_theme_setup()
{
//test for the theme being installed before.
//This stops us running the code more than once.
$installed = get_option(\'jp_installed\');
if (!$installed)
{
//mark the theme as installed, and show the modal box
update_option(\'jp_installed\', true);
add_action(\'in_admin_header\', \'jp_modal\');
}
}
add_action(\'after_switch_theme\', \'jp_theme_setup\');
请注意,我删除了代码,只是为了显示相关部分,因此没有在此简化形式中进行测试。
选项jp_installed
结合仅在上运行我的安装代码after_switch_theme
确保它只运行一次,并且用户可以选择如何使用模式框继续操作,这两个要求都得到了满足。