问题描述

我以前没有实际需要在 WP 中创建文件夹/文件,但是对于插件,我需要 wp-content/uploads 中的缓存 (调整大小的图像) 文件夹。

这提出了一个问题 – 我真的需要通过 Filesystem API 进行所有的过程 (包括在需要时麻烦地要求 FTP 凭据),或者 wp_mkdir_p()是否足够好?

最佳解决方案

wp-content/uploads/应为服务器写入 (否则无法上传文件,否?) 。如果要在此目录下创建一些内容,可以使用 wp_mkdir_p()来安全使用。

我只会使用 WP_Filesystem,如果服务器没有权限写入该位置,就像在 wp-content/plugins/中,这不是必须可写的服务器 (至少我认为它不是吗?)? 。

Sidenote:The File Permissions page of the Codex 还谈到了一个 wp-content/cache/目录。这将是缓存文件的”more standard” 位置吗?

次佳解决方案

我会尝试一些简单的事情,然后在无休止的可能性/主机设置之间混乱:

$target = 'wherever';
wp_mkdir_p( $target );

if ( wp_mkdir_p( $target ) === TRUE )
{
    echo "Folder $target successfully created";
}
else
{
    new WP_Error; #... etc. Just tell where the user has to make a new folder with the name xy
    // or if you're kool, you use _doing_it_wrong(); ... ;-)
}

第三种解决方案

只需要让你的插件创建文件/文件夹:我的插件也是这样做的,我遇到了许多不同用户的文件权限的问题。有些是 windows,有些是 unix,有些是托管的,有些是自己生长的。一旦我分享了插件,这是我的第一个支持电子邮件。

我已经重构了我的代码,以最大限度地减少触摸文件系统的需要,并且上传目录是我现在使用的唯一一个避免这样的问题。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。