uninstall.php файл в плагине для очистки БД


Я знаю, что WordPress предоставляет плагины хороший способ очистить базу данных, если плагин удален, предоставив крючок uninstall.php. Вам просто нужно ввести код очистки, и он работает.

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

Верно ли мое предположение или есть какая-то магия WordPress, о которой я не знаю?

Author: Sudar, 2013-04-01

1 answers

Я видел пару плагинов, которые используют функции, определенные в их файле плагинов внутри uninstall.php файл.

Это не работает, если uninstall.php вызовет одну из функций плагина, она выдаст Fatal error: Call to undefined function. Если не... (поясняется ниже).

Это, с другой стороны, работает:

<?php
/* Plugin Name: Test Uninstall */
register_activation_hook( __FILE__, 'test_activate' );
register_uninstall_hook( __FILE__, 'test_uninstall' );

function test_activate()  { update_option( 'testing_uninstall', true ); }
function test_uninstall() { test_delete_me(); }
function test_delete_me() { delete_option( 'testing_uninstall' ); }

Мы можем понять, почему в функции uninstall_plugin(). Если unistall.php существует, он включается, выполняется и заканчивается история.
Если файл uninstall.php не существует, и если мы зарегистрировали хук удаления, основной файл плагина будет включен: include WP_PLUGIN_DIR . '/' . $file;, чтобы сделать доступным обратный вызов - и, таким образом, сделать доступной и другую функцию.

Мы могли бы сделать некоторые include в нашем файле uninstall.php, но настолько ли сложен процесс удаления, чтобы в этом нуждаться?

Цитата из связанной с wp-хакерами темы (мой акцент):

[T] крючок для удаления хранится в базе данных, он не определяется во время выполнения. Ваш плагин не получит init/plugins_loaded/admin_init, срабатывание крючка etc при вызове крючка удаления, это чистый "Вот некоторый АВТОНОМНЫЙ код для запуска для очистки"

 1
Author: brasofilo, 2013-09-24 15:26:22