2010-08-06 22 views
0

我爲我的主題設置了一些特定的設置代碼,我只想在主題首次激活時進行處理。我的印象是,我可以使用register_activation_hook,但它似乎沒有工作。僅在激活主題時纔在functions.php中運行代碼塊。使用register_activation_hook?

例...

在我functions.php文件,我想doThemeSetup()函數只有在主題激活和沒有其他時間運行...

function doThemeSetup(){ 
    //stuff here only runs once, when theme is activated 
} 

register_activation_hook(__FILE__, 'doThemeSetup'); 

UPDATE:自發布這個問題,我發現register_activation_hook只適用於插件而不是主題。

我已經找到了一個辦法做到的主題類似的行動,但我得到的結果不一致:

if (is_admin() && isset($_GET['activated']) && $pagenow == 'themes.php') 
{ 
    //do something 
} 

上面的代碼似乎並不時主題第一次被激活運行,而是在主題從另一個主題切換到。

回答

1

這更是一個解決辦法比的解決方案,但如果其他的都失敗,你可以嘗試一下:

<?php 
if (get_option('themename_installed') != 'true'){ 
    if (doThemeSetup()){ 
     add_option('themename_installed','true'); 
    } 

} 
?> 

這樣的doThemeSetup是隻跑了一次。

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'); 
} 
相關問題