WP_FilesSystem的哪些函数允许我在目录中创建包含代码生成内容的文件?

时间:2018-08-18 作者:coolpasta

我正在生成一个非常有用的.dat 文件,但我读过file_put_contents 如果你皱着眉头WP_Filesystem 应改为使用。

我看不到任何方法可以获取动态输入并创建文件,然后将其上载到我选择的目录。

我应该从中寻找什么功能?

我的确切流程是:用户单击一个按钮(调用是AJAX\'d),然后生成3个文件并放在我的目录中。目前,“保存文件”功能是这样的:

ob_start();
generateExprotFile();
$contents = ob_get_clean();
\\file_put_contents( THEME_DIR . \'/dump/test.dat\', $contents );

1 个回复
SO网友:Mark Kaplun

似乎您对何时/为什么以及如何写入文件有一些误解/误解。

一般来说,永远不要写入代码所在的任何目录,无论是核心代码还是主题和插件代码。这些目录可能在不同的wordpress实例之间共享,因此它们不适合用于仅与一个实例相关的数据。

  • WP_Filesystem 当您需要写入到通常没有写入权限的目录(在安全wordpress安装中all directories 因此,您需要向用户请求在尝试写入文件时使用的凭据(底层技术通常是FTP)。这意味着它必须是用户启动的进程,并且不适用于作为cron任务运行的任何东西。这也是一个非常丑陋的用户体验。

  • 您可能会试图为此存储用户凭据,但这是一种不安全的做法。一旦数据库或磁盘中有凭据,任何成功说服网站所有者上传插件的坏人都可以拥有该网站。

    您应该只写入uploads目录,在这种情况下,使用哪种API没有任何区别,因为它们都是等效的所以只写上传目录,只需使用file_put_contents 因此,没有理由使用更复杂的东西。如果您有一些您认为不属于公共场所的机密数据,首先问问自己为什么需要存储这些数据(例如,如果您生成CSV,您就不能动态生成它吗?),如果必须,只需使用难以猜测的文件名and 设置目录的htacceess,以向web服务器指示该目录是非公开可用的目录。

    结束

    相关推荐

    将文件直接上传到媒体库wp-Content\\Uploads

    我想使用自动过程复制\\wp content\\uploads\\中的非WordPress文件夹,并在媒体库中自动注册文件。我可以使用这样一个过程来上传文件,然后使用Add From Server注册它们(http://wordpress.org/plugins/add-from-server/) 或FTP中的类似介质。但这似乎是过度的人力投入。LR/博客(http://www.photographers-toolbox.com/products/lrblog.php) 似乎能够保存到WP并同时注册文件。