我正在创建一个WordPress插件,该插件应该从远程位置下载ZIP文件并将其放入wp-plugins文件夹中。 所以我创建了一个使用Curl下载文件的方法(这很好),然后将文件放入wp-plugins文件夹。我正在使用WP_Filesystem以确保我有权在服务器上放置文件。这就是我现在所拥有的:
public function download_plugin($url, $path)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
global $wp_filesystem;
if(defined('FS_CHMOD_FILE'))
{
$chmod = FS_CHMOD_FILE;
}
else
{
$chmod = 0755;
}
if (empty($wp_filesystem))
{
require_once (ABSPATH . '/wp-admin/includes/file.php');
WP_Filesystem();
}
if(!$wp_filesystem->put_contents(
$path,
$data,
$chmod
))
else
{
return new \WP_Error('writing_error', 'Error when writing file');
}
}
当我运行该方法时,服务器上没有创建任何文件。但是$path
变量具有正确的路径,$data
变量确实包含ZIP文件作为字符串。然而,WordPress方法put_contents
什么也没做。即使我将方法的参数更改为绝对应该像null
一样的东西,它也会返回$wp_filesystem->put_contents(WP_PLUGIN_DIR.'example.txt','Some text',FS_CHMOD_FILE));
。
我做错了什么吗?调试非常困难,因为我没有收到任何错误,put_contents
总是返回null
。