如何使用WP_Filessystem和ftp base/chroot设置路径

时间:2013-12-29 作者:Bass Jobsen

在我的主题中,我将使用WP\\u文件系统将文件写入,例如:

$file = get_template_directory().\'/library/assets/css/wpless2css.css\';
输出如下内容/home/user/domain/http_docs/wp-contents/theme/mytheme/library/assets/css/wpless2css.css

除非ftp用户能够通过chroot访问,否则这将起作用/home/user/domain/ (在某些服务器上?)。

对于chroot,WP\\u文件系统无法找到$file.

解决方案似乎可以定义FTP_PATH 在wp配置中。php到/home/user/domain/ 和使用:

if(FTP_BASE) $file =  str_replace(FTP_BASE,\'\',get_template_directory()).\'/library/assets/css/wpless2css.css\';
我正在寻找一个更健壮的解决方案,并支持不同的可能权限系统。

1 个回复
最合适的回答,由SO网友:Bass Jobsen 整理而成

更改后FTP_BASE 在我的wp-config 我发现WP的更新功能坏了。然后我意识到更新功能的工作方式是相同的,不需要任何额外的设置。在里面wp-admin/includes/update-core.php 我发现$wp_filesystem->wp_content_dir(). 这也解决了我的问题。

在…上http://xref.wordpress.org/branches/3.8/WordPress/Filesystem/WP_Filesystem_Base.html 您将找到可能有用的函数列表:

string wp_content_dir () 
string wp_lang_dir () 
string wp_plugins_dir () 
string wp_themes_dir ([string $theme = false])
事实上,@otto早点给我答案(Using wp_filesystem in Plugins), 他写道:

使用$wp\\u文件系统时,有一个方便的函数调用来获取内容目录路径:$wp\\u filesystem->wp\\u content\\u dir();。您需要使用此功能,因为“远程”目录路径可能与“本地”目录路径不同。

结束

相关推荐

如何将通过ftp上传的图片注册到媒体库中?

我正在使用我自己的上传。要将图像上载到的php文件:$upload_dir = wp_upload_dir(); $targetDir = $upload_dir[\'path\'].\'/\'; 它的工作原理与它应该的一样,但图像上载到uploads/2012/08/ 不出现在中Media Library. 是否有任何功能可以在那里和WP的数据库中“注册”它们?