Установка и деинсталляция плагина через меню опций

Я создаю свой первый плагин (модифицируя существующий для того, что мне нужно), и хотя он работает нормально, я пытаюсь создать простое меню опций, позволяющее либо деактивировать плагин, либо деактивировать и удалить таблицы, которые создает плагин.

На панели параметров у меня есть следующая форма, позволяющая администратору щелкнуть флажок, а затем отправить форму, которую я надеюсь получить:

  1. Удаление таблиц, созданных плагином
  2. Отключить плагин
  3. Перенаправить обратно на страницу плагина

Вот код для моей страницы параметров:

<p class="submitmetataxonomyuninstall"> <form method="post" action=""; onsubmit="if (!this.verify.checked) return false;"> <?php _e("Also Delete all Tables & Data from Database:", 'menu-test' ); ?> <input type="checkbox" name="verify" /></p> <p><i>(IMPORTANT: This action CANNOT be reversed and will remove all tables and data from the database.)</i></p> <p class="submit"><input type="submit" name="submitmetataxonomyuninstall" class="button-primary" value="<?php esc_attr_e('Deactivate & Uninstall') ?>" /><small> (Checkbox above must be checked for button to work.)</small></p> </form> </p> 

Я просто не могу заставить это работать.

Это будет функция, я думаю, мне нужно позвонить (когда это находится в основной функции плагина, она деактивирует и удаляет таблицы просто отлично):

 register_deactivation_hook( __FILE__, 'simple_term_meta_uninstall' ); function simple_term_meta_uninstall() { global $wpdb; if (function_exists('is_multisite') && is_multisite()) { // check if it is a network activation - if so, run the activation function for each blog id if (isset($_GET['networkwide']) && ($_GET['networkwide'] == 1)) { $old_blog = $wpdb->blogid; // Get all blog ids $blogids = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM $wpdb->blogs")); foreach ($blogids as $blog_id) { switch_to_blog($blog_id); _simple_term_meta_uninstall(); } switch_to_blog($old_blog); return; } } _simple_term_meta_uninstall(); } 

Я считаю, что это также вызывает эту функцию из существующего файла плагина:

 register_uninstall_hook( __FILE__, 'simple_term_meta_uninstall' ); function _simple_term_meta_uninstall() { global $wpdb; $table_name = $wpdb->prefix . 'termmeta'; $wpdb->query("DROP TABLE IF EXISTS $table_name"); delete_option( "simple_term_meta_db_version" ); } 

Как я могу назвать эту функцию, используя показанную форму?

Solutions Collecting From Web of "Установка и деинсталляция плагина через меню опций"

Вам просто нужно получить базовое имя любого плагина для его деактивации.

 if( $uninstall == true ) { delete_option( 'CHANGETHIS' ); deactivate_plugins( plugin_basename( __FILE__ ) ); } 

Как правило, они выглядят как mypluginfolder / mypluginmasterfile.php

Дайте это выстрел.


Существует множество способов заставить его работать.

Если вы хотите, чтобы кнопка на странице параметров вызывала это, вы могли бы просто отправить POST на страницу параметров и проверить, была ли нажата кнопка удаления.

Что-то вроде:

 $uninstall = isset( $_POST[ 'uninstall' ] ) ? true : false;