我为我的主题设置了一些特定的设置代码,我只想在首次激活主题时进行处理。我的印象是我可以使用register_activation_hook,但它似乎没有用。
示例...
在我的functions.php文件中,我希望doThemeSetup()函数仅在主题激活时运行,而不是其他时间......
function doThemeSetup(){
//stuff here only runs once, when theme is activated
}
register_activation_hook(__FILE__, 'doThemeSetup');
更新:自发布此问题以来,我发现register_activation_hook仅适用于插件而非主题。
我找到了一种在主题中执行类似操作的方法,但是我得到了不一致的结果:
if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php' )
{
//do something
}
首次激活主题时,上面的代码似乎没有运行,而是在主题从另一个主题切换时。
答案 0 :(得分:1)
这是一种解决方法,而不是解决方案,但如果其他一切都失败了,你可以尝试一下:
<?php
if (get_option('themename_installed') != 'true'){
if (doThemeSetup()){
add_option('themename_installed','true');
}
}
?>
这样doThemeSetup只运行一次。
答案 1 :(得分:0)
/**
* Install script to create databasetables and then insert default data.
* And inserting defautl theame settings.
* Only run if theme is being activated for the first time.
*/
$flag = get_option('first_time_theme_activation_check');
if ( $flag == false && is_admin())
{
// put your code to run when theme is activated at first time by admin
// update option at last
update_option('first_time_theme_activation_check', 'true');
}