2013-04-13 5 views
2

플러그인을 제거 할 때 테이블이 떨어지지 않아서 제거가 제대로 작동하지 않습니다. 이걸 도와주세요. 다음은 현재 사용중인 코드입니다. 내가 빠진 것을 말해줘.Wordpress Plugin 제거가 작동하지 않습니다.

register_uninstall_hook(__FILE__, 'plugin_db_uninstall'); 


function plugin_db_uninstall() { 
    global $wpdb; 

    $table_name = $wpdb->prefix."user_master"; 
    $wpdb->query("DROP TABLE IF EXISTS $table_name"); 

    $table_name = $wpdb->prefix."candidate_master"; 
    $wpdb->query("DROP TABLE IF EXISTS $table_name"); 


} 

전체 코드

define('TXTFOLDER', plugins_url()."/candidate_section/txtfiles"); 

function candidate_install() { 
    if (!file_exists(TXTFOLDER)) { 
     mkdir(TXTFOLDER, 0777); 
    } 
} 


function candidate_section_create_table() 
{ 

    global $wpdb; 

     $sql = 
     "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."user_master` 
     (
      `id` bigint(20) NOT NULL AUTO_INCREMENT, 
      `name` varchar(255) NOT NULL, 
        `email` varchar(255) NOT,NULL, 
      PRIMARY KEY (`id`) 
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"; 
     dbDelta($sql); 

     $sql1 = 
     "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."candidate_master` 
     (
      `id` bigint(20) NOT NULL AUTO_INCREMENT, 
      `user_id` bigint(20) NOT NULL, 
        `position` varchar(255) NOT NULL, 
        `status` int(11) NOT NULL, 
      PRIMARY KEY (`id`) 
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"; 

     dbDelta($sql1); 

} 


function plugin_db_uninstall() { 
     global $wpdb; 

     $table_name = $wpdb->prefix."user_master"; 
     $wpdb->query("DROP TABLE IF EXISTS $table_name"); 

     $table_name = $wpdb->prefix."candidate_master"; 
     $wpdb->query("DROP TABLE IF EXISTS $table_name"); 


    } 


if (is_admin()) { 
add_action('admin_menu', 'candidate_menu'); 
register_activation_hook(__FILE__, 'candidate_install'); 
register_activation_hook(__FILE__, 'candidate_section_create_table'); 
register_uninstall_hook(__FILE__, 'plugin_db_uninstall'); 
} 

답변

1

나는 원인에 대해 긍정적 아니지만, 나는 두 가지를 볼 수 있습니다. 하나는 is_admin()에서 모두 3 register_*_hook을 제거하고 조건을 벗어난 상태로 둘 수 있습니다.

PS : 왜 두 개가*_activation_hook입니까?

다른 하나는 대신 uninstall.php 파일을 사용하고 있습니다. 나는 후크의 함정을 논의한 링크를 찾지 못했지만 오랜 시간 이후로 나는 uninstall.php 메서드만을 사용합니다.

this note in the Codex을, 그러나 에 더 참조는가 제공되지 않는 이유 :

강조는 register_uninstall_hook보다는 플러그인을 제거의 'uninstall.php'방법을 사용하여 배치됩니다.

그리고이 워드 프레스 답변에 대한 링크

: Uninstall, Activate, Deactivate a plugin: typical features & how-to.
그러나 거기에 all the results을 확인하십시오.

관련 문제