我只是决定修补核心来解决这个问题。我们管理许多基于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管理区域中单击“立即更新”链接要容易得多。