更新WordPress插件中断SVN

时间:2011-07-15 作者:Matthew Xerri

我有一个博客,里面有我需要的所有插件,都提交给一个内部svn存储库。Wordpress显示一些插件需要更新,但当我更新时,Wordpress会删除该插件的文件夹,以便更新。svn文件也会被删除。这将破坏该插件的存储库。有什么办法吗?

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

解决这个问题的一个简单方法是通过SVN从插件库更新插件。

SO网友:Marcus Pope

我只是决定修补核心来解决这个问题。我们管理许多基于wordpress的独立开发项目,我们喜欢让插件更新在我们自己的控制之下,而不需要外部人员的相关麻烦。我更喜欢一个钩子,但它并不存在,最好不要为这种低级动作提供钩子。但从好的方面来看,修改只直接影响wp filesystem类中的一个函数。php文件和该文件在近两年内没有显著变化。

//@version 3.4

function delete($file, $recursive = false, $type = false) {
    if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
        return false;
    $file = str_replace(\'\\\\\', \'/\', $file); //for win32, occasional problems deleting files otherwise

    if ( \'f\' == $type || $this->is_file($file) ) 
        return @unlink($file);
    if ( ! $recursive && $this->is_dir($file) ) 
        return @rmdir($file);

    //At this point its a folder, and we\'re in recursive mode
    $file = trailingslashit($file);
    $retval = true;

    //preserve svn folders
    if (preg_match("|\\/\\.svn\\/$|", $file))
        return $retval;

    $filelist = $this->dirlist($file, true);

    if ( is_array($filelist) ) //false if no files, So check first.
        foreach ($filelist as $filename => $fileinfo)
            if ( ! $this->delete($file . $filename, $recursive, $fileinfo[\'type\']) )
                $retval = false;

    //don\'t worry if directories are left behind
    if ( file_exists($file) ) @rmdir($file);

    return $retval;
}
关键的区别在于忽略/。svn/文件夹,然后在无法删除目录时不会失败。如果不包含child,它们仍将被删除。svn文件夹。因此,您可能需要时不时地修剪几个“空”目录,但我还没有这样做。当然,每次更新core时都需要重新修补文件。

另一种选择是从wordpress插件目录下载插件作为zip文件,并使用文件管理器实用程序在两个目录之间进行单向合并或同步。如果您只需将新插件文件夹拖放到现有的插件文件夹上,Windows资源管理器将以本机方式执行此操作。但在wp管理区域中单击“立即更新”链接要容易得多。

SO网友:Alex Older

你是如何更新插件的?

我找到的唯一解决方法是进入每个文件夹,逐个文件夹替换文件,而不替换文件夹。很痛,但这是我知道的唯一方法。

结束

相关推荐

Switching Code plugins

我目前正在使用“Wordpress代码片段”为插入到帖子中的代码添加功能。这个插件的工作方式是将代码添加到设置中的插件库中,然后执行类似于[代码:1]的操作(我记不清确切的语法了)我真的不太喜欢它的风格,所以我希望使用谷歌的美化。停用此插件会有什么影响?我会丢失所有的代码片段吗?我是否需要浏览每一篇文章并编辑所有的代码片段(即[代码:1])?