WordPress插件卸载停用方法,当您的插件从站点卸载时,可能需要进行一些清理。如果用户停用了插件,然后单击 WordPress 管理员中的删除链接,则认为该插件已卸载。当您的插件被卸载时,您需要清除任何插件选项和/或特定于插件的设置,和/或其他数据库实体(如表)。
经验不足的开发人员有时会错误地使用停用钩子来实现此目的。下表说明了停用和卸载之间的区别。
设想 | 停用钩子 | 卸载钩子 |
刷新缓存/临时文件 | Yes | No |
刷新永久链接 | Yes | No |
从 {$ wpdb ->prefix}_options中删除选项 | No | Yes |
从wpdb中删除表 | No | Yes |
在Wordpress网站后台选择插件,选移除的插件。点击“停用”。点击 WordPress 插件上的“停用”。点击“删除”即可卸载该插件。
要设置卸载钩子,请使用register_uninstall_hook() 函数:
register_uninstall_hook( __FILE__, 'pluginprefix_function_to_run' );
要使用此方法,您需要在插件的根文件夹中创建一个uninstall.php
文件。当用户删除插件时,此文件会自动运行。
例如:/plugin-name/uninstall.php
在执行任何操作之前,务必检查常量是否输入WP_UNINSTALL_PLUGIN
。uninstall.php
这可以防止直接访问。
该常量将由 WordPress 在调用期间定义uninstall.php
。
当通过register_uninstall_hook()
执行卸载时,该常量未定义。
以下是删除选项条目和删除数据库表的示例:
// if uninstall.php is not called by WordPress, die if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) { die; } $option_name = 'wporg_option'; delete_option( $option_name ); // for site options in Multisite delete_site_option( $option_name ); // drop a custom database table global $wpdb; $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mytable" );
在多站点中,循环遍历所有博客以删除选项可能会耗费大量资源。