प्लगइन हटाते समय डेटाबेस से तालिकाओं को हटा दें


13

मैंने एक प्लगइन बनाया और डेटाबेस से मेरी तालिकाओं को हटाने के लिए एक फ़ंक्शन जोड़ना चाहता हूं जब कोई उपयोगकर्ता मेरा प्लगइन हटाता है। मैंने एक फ़ंक्शन बनाया जो डीबी से तालिकाओं को हटाता है जब कोई उपयोगकर्ता मेरे प्लगइन को निष्क्रिय करता है, लेकिन मैं ऐसा नहीं चाहता। यहाँ कोड है:

// Delete table when deactivate
function my_plugin_remove_database() {
     global $wpdb;
     $table_name = "NestoNovo";
     $sql = "DROP TABLE IF EXISTS $table_name;";
     $wpdb->query($sql);
     delete_option("my_plugin_db_version");
}    
register_deactivation_hook( __FILE__, 'my_plugin_remove_database' );

जैसा कि आप देख सकते हैं कि यह फ़ंक्शन तालिकाओं को हटा देता है जब प्लगइन निष्क्रिय हो जाता है, लेकिन मुझे यह करने की आवश्यकता है कि प्लगइन कब हटा दिया जाए।


क्या आपने register_uninstall_hook की कोशिश की है ?
एंड्रयू बार्टेल

उत्तर देने के लिए धन्यवाद .. हाँ .. मैं कोशिश करता हूँ कि .. कुछ भी
खुश न हो

जवाबों:


24

आप WordPress uninstall.php समर्थन का उपयोग करके ऐसा कर सकते हैं:

<?php
    if( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) exit();
    global $wpdb;
    $wpdb->query( "DROP TABLE IF EXISTS NestoNovo" );
    delete_option("my_plugin_db_version");
?>

जब आपका प्लगिन डिलीट हो जाता है तो यह अनइंस्टॉल.फैप फाइल कहलाता है।


8

यहाँ कोड दर्ज करें:

register_deactivation_hook( __FILE__, 'my_plugin_remove_database' );
function my_plugin_remove_database() {
     global $wpdb;
     $table_name = $wpdb->prefix . 'NestoNovo';
     $sql = "DROP TABLE IF EXISTS $table_name";
     $wpdb->query($sql);
     delete_option("my_plugin_db_version");
}   

2

आपको डेटाबेस से तालिकाओं को हटाने के register_uninstall_hookबजाय हुक का उपयोग करने की आवश्यकता है register_deactivation_hook

register_deactivation_hookआग जब हम एक प्लगइन को निष्क्रिय करते हैं और register_uninstall_hookजब हम remove/deleteअपने प्लगइन को चाहते हैं तो आग लग जाती है ।

यदि आपके पास केवल एक टेबल है तो कृपया इस कोड का उपयोग करें:

function delete_plugin_database_table(){
    global $wpdb;
    $table_name = $wpdb->prefix . 'table_name';
    $sql = "DROP TABLE IF EXISTS $table_name";
    $wpdb->query($sql);
}

register_uninstall_hook(__FILE__, 'delete_plugin_database_table');

यदि आपके पास दो से अधिक टेबल हैं तो आप इस कोड का उपयोग करें:

function delete_plugin_database_tables(){
        global $wpdb;
        $tableArray = [   
          $wpdb->prefix . "table_name1",
          $wpdb->prefix . "table_name2",
          $wpdb->prefix . "table_name3",
          $wpdb->prefix . "table_name4",
       ];

      foreach ($tableArray as $tablename) {
         $wpdb->query("DROP TABLE IF EXISTS $tablename");
      }
    }

    register_uninstall_hook(__FILE__, 'delete_plugin_database_tables');

संदर्भ लिंक:

https://developer.wordpress.org/reference/functions/register_uninstall_hook/ https://developer.wordpress.org/plugins/plugin-basics/uninstall-methods/


धन्यवाद मेरा दिन बचाओ :)
अरमान एच

0

यदि आप "WORDPRESS PLUGIN BOILERPLATE GENERATOR" wppb का उपयोग कर रहे हैं

इसमें शामिल करें \ class -...- defaultivator.php

और निम्नलिखित कोड लिखें (कृपया अपनी आवश्यकताओं के रूप में संशोधित करें)

global $wpdb;

    $tableArray = [
        $wpdb->prefix . "table1",
        $wpdb->prefix . "table2",
    ];
    foreach($tableArray as $table){
        $wpdb->query("DROP TABLE IF EXISTS $table");
    }

धन्यवाद


-1

मुझे पता है कि इस हुक को कहा जाता है: register_deactivation_hookआप प्लगइन को निष्क्रिय करने के लिए सामान का उपयोग करने के लिए उपयोग कर सकते हैं। प्रलेखन पर एक नज़र डालें और देखें कि क्या यह वही है जो आप खोज रहे हैं।

उदाहरण के लिए:

**register_deactivation_hook**(__FILE__, 'sm_deactivation');
function myplugin_deactivation(){
/*
     Stuff
*/}

-3

दुर्भाग्य से, वर्डप्रेस ऐसा करने के लिए कार्यक्षमता को उजागर नहीं करता है। यह केवल register_uninstall_hook हुक का समर्थन करता है। यह हुक तब कहा जाता है जब उपयोगकर्ता अनइंस्टॉल लिंक पर क्लिक करता है जो प्लगइन की स्थापना के लिए कॉल करता है। लिंक तब तक सक्रिय नहीं होगा जब तक प्लगइन एक्शन में न आ जाए। http://codex.wordpress.org/Function_Reference/register_uninstall_hook देखें

और register_deactivation_hook हुक। अधिकांश प्लगइन डेवलपर क्या करते हैं, get_option, update_option के उपयोग के साथ सेटिंग तालिका में एक चेकबॉक्स जोड़ते हैं। जब यह विकल्प जांचा जाता है, तो डेटा हटा दिया जाता है।

इस तरह, अस्थायी निष्क्रियता आपके प्लगइन के विकल्प तालिका को रीसेट नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.