仅在激活主题时在functions.php中运行代码块。使用register_activation_hook?

时间:2010-08-06 15:43:00

标签: wordpress themes

我为我的主题设置了一些特定的设置代码,我只想在首次激活主题时进行处理。我的印象是我可以使用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
}

首次激活主题时,上面的代码似乎没有运行,而是在主题从另一个主题切换时。

2 个答案:

答案 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');
}