我为我的WordPress网站编写了一个自定义插件,该插件依赖于从插件文件夹中的xml数据文件读取/写入。当我测试这个用于文件读/写的标准PHP代码时,它将允许我创建/写入位于wp-admin / level的文件,但不能创建/写入插件文件夹中的文件,尽管它可以从两者中读取。
$file = 'test.xml'; (Can write to this file)
$file = plugins_url()."/my-plugin/test.xml"; (Can read but not write to this file)
// Open the file to get existing content
$current = file_get_contents($file);
echo $current;
// Append a new person to the file
$current .= "<person>John Smith</person>\n";
// Write the contents back to the file
file_put_contents($file, $current);
我收到以下调试错误:
警告: file_put_contents(HTTP://localhost/wp_mysite/wp-content/plugins/my-plugin/test.xml) [function.file-put-contents]:失败 打开流:HTTP包装器没有 支持可写连接 /Applications/MAMP/htdocs/wp_mysite/wp-content/plugins/my-plugin/my-plugin.php 第53行
我目前正在本地MAMP服务器上运行它,但想要一个能让我在任何WordPress服务器上打包并发布插件的解决方案。什么是正确的方法?
谢谢 -
答案 0 :(得分:11)
如果要写入文件,请不要通过HTTP访问它。直接访问它而不是读取和写入,因为它是访问文件的速度和最直接的方法。
要获取基本插件目录路径,请使用WP_PLUGIN_DIR
常量:
$file = 'test.xml'; // (Can write to this file)
$file = WP_PLUGIN_DIR."/my-plugin/test.xml";
// ^^^^^^^^^^^^^
由于性能原因以及HTTP不支持写入,这将阻止您使用完全不应使用的HTTP。但最重要的是,因为它是您可以访问的服务器上的文件,所以直接访问它。