我当前的设置如下。。。
在主插件文件中,设置了以下两个挂钩(不在任何类中):
register_activation_hook(__FILE__, array(\'DG_Setup\', \'activation\'));
register_uninstall_hook(__FILE__, array(\'DG_Setup\', \'uninstall\'));
此主文件包括包含以下内容的文件
DG_Setup
:
include_once DG_PATH . \'inc/class-setup.php\';
并声明
$dg_options
:
define(\'DG_OPTION_NAME\', \'document_gallery\');
$dg_options = get_option(DG_OPTION_NAME);
我假设通过引用钩子的主插件文件,其中的所有设置都会在我的卸载钩子执行之前运行,但情况似乎并非如此。
在同一个文件中,设置了许多声明和变量。当卸载挂钩启动时,它似乎无法访问任何声明的值或变量。我已经尝试在卸载挂钩中显式地包含主插件文件,但这并没有改变任何事情。
class DG_Setup {
public static function uninstall() {
if (!current_user_can(\'activate_plugins\')) return;
check_admin_referer(\'bulk-plugins\');
include_once plugin_dir_path(__FILE__) . \'class-thumber.php\';
$options = DG_Thumber::getOptions();
var_dump($options); // null
foreach ($options[\'thumbs\'] as $val) {
if (false !== $val) {
@unlink($val[\'thumb_path\']);
}
}
delete_option(DG_OPTION_NAME);
}
}
class DG_Thumber {
public static function getOptions() {
include_once plugin_dir_path(dirname(__FILE__)) . \'document-gallery.php\';
global $dg_options;
return $dg_options[\'thumber\'];
}
}
显然,我可以重新声明所有这些值,但是我在多个地方声明相同的值,这非常
un-DRY. 所以我的问题是,我如何才能干净地处理这个问题?