亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

停用插件時如何刪除2個表

停用插件時如何刪除2個表

PHP
浮云間 2022-11-12 13:53:47
我在 wordpress 中創建了一個插件,當插件被激活時,以下代碼在 db 中創建了 2 個表。如何在停用插件時刪除這兩個表?register_deactivation 掛鉤只刪除了第一個表,第二個表在 db 中。我需要在停用插件時刪除這兩個表,如何編寫代碼function wnm_install() {    global $wpdb, $wnm_db_version;    $sql = array();    //sms table    $sms_table = $wpdb->prefix . "smsfactory";    if( $wpdb->get_var("show tables like '". $sms_table . "'") !== $sms_table ) {         $sql[] = "CREATE TABLE ". $sms_table . "     (        SfID int(11) NOT NULL AUTO_INCREMENT,        sf_name varchar(128) NOT NULL,        start_duration date NOT NULL,        end_duration date NOT NULL,        activity varchar(500) NOT NULL,        survey_settings varchar(50) NOT NULL,        `limit` varchar(50) NOT NULL,        goal varchar(100) DEFAULT NULL,        PRIMARY KEY  (SfID)        ) ";    }    //sms messages table    $sms_message_table = $wpdb->prefix . "smsfactorymessagetemplate";    if( $wpdb->get_var("show tables like '". $sms_message_table . "'") !== $sms_message_table ) {         $sql[] = "CREATE TABLE ". $sms_message_table . "   (        sfID int(11) NOT NULL AUTO_INCREMENT,        sftemplate_name varchar(256) NOT NULL,        sftemplate_type varchar(128) NOT NULL,        PRIMARY KEY  (sfID)        ) ";    }    if ( !empty($sql) ) {        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');        dbDelta($sql);        add_option("wnm_db_version", $wnm_db_version);    }}register_deactivation_hook(__FILE__, 'on_deactivate' );function on_deactivate()  {    global $wpdb; $sql = "DROP TABLE IF EXISTS techies_datachecker"; $wpdb->query($sql);    delete_option("my_plugin_db_version");}
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

您需要將表添加到數組中。試試下面的代碼:


function on_deactivate() {

    global $wpdb;

    $tables = array(

        $wpdb->prefix . "smsfactory", 

        $wpdb->prefix . "smsfactorymessagetemplate"

    );

    foreach ( $tables as $table ) {

        $sql = "DROP TABLE IF EXISTS $table";

        $wpdb->query($sql);

    }


    delete_option("my_plugin_db_version");

}


register_deactivation_hook( __FILE__, 'on_deactivate'  );

希望能幫到你。


查看完整回答
反對 回復 2022-11-12
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

function delete_tbl_from_db(){

    global $wpdb;

    $tbl_array = [   

      $wpdb->prefix . "first_table",

      $wpdb->prefix . "second_table",

  ];


  foreach ($tbl_array as $tbl_name) {

     $wpdb->query("DROP TABLE IF EXISTS $tbl_name");

  }

}


register_uninstall_hook(__FILE__, 'delete_tbl_from_db');



Please check above code.


查看完整回答
反對 回復 2022-11-12
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

function delete_tbl_from_db(){

    global $wpdb;

    $tbl_array = [

        $wpdb->prefix . "smsfactory",

        $wpdb->prefix . "smsfactorymessagetemplate",

    ];


    foreach ($tbl_array as $tbl_name) {

     $wpdb->query("DROP TABLE IF EXISTS $tbl_name");

    }

}


register_deactivation_hook( __FILE__, 'delete_tbl_from_db' );


This is working on my site. Please check it


查看完整回答
反對 回復 2022-11-12
  • 3 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號