插件卸载总是将WordPress恢复到原始状态吗?

时间:2010-08-16 作者:Marek

WordPress部署实例中的插件生命周期是多少?

即:

插件是修改现有文件还是只使用WordPress中定义的扩展点

3 个回复
最合适的回答,由SO网友:Annika Backstrom 整理而成

简短回答:

插件不修改现有文件,而是通过公开的API连接到WordPress

http://codex.wordpress.org/Plugin_API

例如,函数get_option() 从数据库中读取站点选项。在这个函数中采取任何实际行动之前,WordPress会调用apply_filters( \'pre_option_\' . $option, false ). 有选择权foobar, 插件可以使用以下代码覆盖此选项的真值:

function override_foobar( $unused ) {
    return \'My custom value.\';
}
add_filter( \'pre_option_foobar\', \'override_foobar\' ); // add_filter(hook, function)
另见http://adambrown.info/p/wp_hooks/.

插件修改数据库

如果WordPress数据库用户仍然拥有该权限,插件可以修改数据库。一些更复杂的插件添加了自己的表。一个插件可能会修改核心表,希望他们能够负责任地这样做,并且如果插件被删除,不会破坏任何东西。

这必须逐个插件进行检查。

卸载插件deactivate_plugins() 函数调用操作do_action( \'deactivate_\' . trim( $plugin ) ). 如果在停用插件时需要发生特定的事情,插件应该挂接到此操作。根据我的经验,很少有插件会进行大量的停用清理,即将其设置放在冷库中以防再次激活。

SO网友:John P Bloch

WordPress中的插件执行代码所述的操作。具体回答您的问题,

他们不应该这样做,但没有什么可以阻止他们修改核心文件

  • 他们可以用WordPress本身可以使用的任何方式与数据库完全交互
  • SO网友:User

    直接回答:没有

    插件可以对PHP代码执行任何操作。。

    结束

    相关推荐

    How do you debug plugins?

    我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?