it-swarm.cn

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

什么是WordPress的已部署实例中的插件生命周期?

即:

  • 插件修改现有文件还是只使用WordPress中定义的扩展点?
  • 是否允许插件修改数据库架构(例如添加新列)?
  • wordpress如何确保插件卸载始终在原始状态下保留WP? (可以?)
4
Marek

简短回答:

  • 插件不会修改现有文件,它们通过公开的API挂钩到WordPress。
  • 插件可以修改数据库架构。
  • 插件不必干净地卸载。

插件挂钩

插件在WordPress核心暴露的特定点处挂钩到WordPress。

http://codex.wordpress.org/Plugin_API

例如,函数get_option()从数据库中读取站点选项。在此函数内执行任何实际操作之前,WordPress调用apply_filters( 'pre_option_' . $option, false )。给定一个选项foobar,插件可以使用以下代码覆盖此选项的true值:

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 ) )动作。如果在停用插件时需要执行特定的操作,插件应该挂钩此操作。根据我的经验,很少有插件可以进行大量的停用清理,即。将它们的设置放在冷藏库中以防再次激活它们。

15
Annika Backstrom

WordPress中的插件执行代码所说的内容。要专门回答你的问题,

  1. 他们不应该,但没有什么能阻止他们修改核心文件。
  2. 允许它们以WordPress本身可以的任何方式与数据库完全接口。
  3. WordPress不确保插件卸载不会破坏整个安装。如果插件作者将卸载功能设置为删除所有内容,则会执行此操作。

所以这就留下了一个问题,如果插件作者背叛了你的信任并对你的网站做了恶意的事情,可以做些什么呢?定期备份您的wp-content目录以及整个数据库是确保您在站点发生某些事情时能够恢复的最佳方法(例如数据丢失,黑客攻击,插件坏等) 。

3
John P Bloch

直接回答:没有

插件可以用PHP代码做任何事情。

1
User