在升级过程中会删除多余的插件文件吗?

时间:2013-04-30 作者:Ben Miller - Remember Monica

我从a previous question 插件更新以zip文件的形式下载,WordPress会覆盖插件文件夹中的每个文件,无论该文件是否从一个版本更改为下一个版本。我的问题是,如果用户向插件文件夹添加了额外的文件(例如用于语言翻译的.po/.mo文件),那么这些文件会在插件更新期间被删除吗?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

是,将删除整个旧目录。因此,将文件存储在上载目录中,并将其他数据存储在数据库中,以保留所有更改。

来自类Plugin_Upgrader:

//Hooked to upgrade_clear_destination
function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) {
    global $wp_filesystem;

    if ( is_wp_error($removed) )
        return $removed; //Pass errors through.

    $plugin = isset($plugin[\'plugin\']) ? $plugin[\'plugin\'] : \'\';
    if ( empty($plugin) )
        return new WP_Error(\'bad_request\', $this->strings[\'bad_request\']);

    $plugins_dir = $wp_filesystem->wp_plugins_dir();
    $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) );

    if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished.
        return $removed;

    // If plugin is in its own directory, recursively delete the directory.
    if ( strpos($plugin, \'/\') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder
        $deleted = $wp_filesystem->delete($this_plugin_dir, true);
    else
        $deleted = $wp_filesystem->delete($plugins_dir . $plugin);

    if ( ! $deleted )
        return new WP_Error(\'remove_old_failed\', $this->strings[\'remove_old_failed\']);

    return true;

结束

相关推荐

Security updates to 3.3.2

我知道所有的安全更新都很重要,但从1到10的范围来看,从3.1.3升级到3.3.2有多重要。我有一些网站需要升级,但主机将我锁定在一个旧版本的php中,限制我使用3.1.3。我目前正在运行php的5.2.3版本。谢谢Bart