在上载中创建目录-wp_mkdir_p()或WP_Filesystem?


9

我认为以前从未真正需要在WP中创建文件夹/文件,但是对于插件,我需要在中缓存(用于调整大小的图像)文件夹wp-content/uploads

这就提出了一个问题-我真的需要完成所有过程Filesystem API(包括在需要时混乱地要求FTP凭据),还是wp_mkdir_p()足够好呢?

Answers:


7

wp-content/uploads/应该对服务器是可写的(否则将无法上传文件,不是吗?)。如果要在此目录下创建内容,则可以安全使用wp_mkdir_p()

我只会WP_Filesystem在服务器没有写该位置权限的机会时使用,例如in wp-content/plugins/,该位置对于服务器而言不必是可写的(至少我认为它不一定是?)。

旁注:食典的“文件权限”页面还讨论wp-content/cache/目录。这是缓存文件的“更标准”位置吗?


我不确定,但是我想cache更多的是页面缓存插件之类的东西,而我的案例更多是关于图像的替代版本的……这些文件夹之间的区别似乎是语义上的而不是技术上的,不是吗?
拉斯特

6

在尝试无尽的可能性/托管设置之前,我会尝试一些简单的方法:

$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(); ... ;-)
}

顺便说一句:它未经测试,我不知道是否wp_mkdir_p();可以在执行后检查是否保存了,或者是否应该在if语句中执行fn的执行...(以前从未使用过它,甚至在知道函数本身之前都不知道)现在)。
kaiser

相关功能有点后端...我想尽量减少交互。尽管插件设置中的消息值得考虑。
罗斯特(Rarst)2011年

我不会考虑太多。如果用户sys无法使用默认值执行此操作,请尝试告诉他们该怎么做。就像我说的那样:可能性无穷无尽,恕我直言,您最好只告诉结果应该继续进行,以便尝试通过代码或支持解决此问题。
凯撒

4

让您的插件创建文件/文件夹只是一个提示:我的插件也做到了这一点,并且我遇到了许多问题,涉及不同用户的文件权限。有些是Windows,有些是unix,有些是托管的,有些是自家种植的。共享插件后,这是我收到的#1支持电子邮件。

我已经对代码进行了重构,以最大程度地减少触摸文件系统的需要,而上载目录是我现在用来避免此类问题的唯一目录。


是的,我知道,这就是为什么我要问问题。我目前对该问题的概述是,如果uploads锁定到足以使WP失败的程度,则插件没有任何尝试尝试做更多事情的感觉。如果它对WP足够好,那么对插件也足够好。幸运的是,我只需要在任何地方缓存目录,而不需要更复杂且容易出错的东西。
罗斯特(Rarst)2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.