প্লাগইন মোছার সময় ডাটাবেস থেকে সারণীগুলি মুছুন


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 ?
অ্যান্ড্রু বার্টেল

উত্তরের জন্য আপনাকে ধন্যবাদ .. হ্যাঁ .. আমি চেষ্টা করি .. কিছুই
হ্যাশড

উত্তর:


23

আপনি ওয়ার্ডপ্রেস আনইনস্টল.এফপি সমর্থনটি ব্যবহার করে এটি করতে পারেন:

<?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/references/funitions/register_uninstall_hook/ https://developer.wordpress.org/plugins/plugin-basics/uninstall-methods/


ধন্যবাদ আমার দিন সংরক্ষণ করুন :)
আরমান এইচ

0

আপনি যদি "ওয়ার্ডপ্রেস প্লাগইন বোলারপ্লেট জেনারেটর" ব্যবহার করেন wppb b

এতে \ শ্রেণি -...- ডিভেটিভর.এফপি অন্তর্ভুক্ত রয়েছে

এবং নিম্নলিখিত কোডটি লিখুন (আপনার প্রয়োজনীয়তা হিসাবে দয়া করে সংশোধন করুন)

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

দুর্ভাগ্যক্রমে, ওয়ার্ডপ্রেস এটি করার জন্য কার্যকারিতা প্রকাশ করে না। এটি কেবলমাত্র_ইনস্টল_ হুক হুক সমর্থন করে। ব্যবহারকারী যখন আনইনস্টল লিংকে ক্লিক করে প্লাগইনটিকে নিজেই আনইনস্টল করার জন্য ডাকে তখন এই হুক বলা হয়। প্লাগইনটি অ্যাকশনটিতে সন্ধান না করা পর্যন্ত লিঙ্কটি সক্রিয় থাকবে না। দেখতে http://codex.wordpress.org/Function_Reference/register_uninstall_hook

এবং রেজিস্টার_ নিষ্ক্রিয়করণ_ হুক হুক। সর্বাধিক প্লাগইন বিকাশকারী যা করেন সেটি হ'ল get_option, update_option ব্যবহার করে সেটিং টেবিলটিতে একটি চেকবক্স যুক্ত করা। এই বিকল্পটি চেক করা হলে, ডেটা সরানো হয়।

এইভাবে, অস্থায়ী নিষ্ক্রিয়তা আপনার প্লাগইনের বিকল্প টেবিলটিকে পুনরায় সেট করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.