2010-08-06 3 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'); 
} 
관련 문제