如何在插件文件夹中创建目录?

时间:2012-11-25 作者:Jassi Oberoi

我正在WordPress版本3.4.2中创建一个插件。当管理员提交表单时,将在我的插件目录中创建一个新文件夹,并在该新文件夹中保存一个文件。

但它给了我以下错误:

error : The file has not been created 

$dir = plugins_url()."/folder-name/; 
上述代码返回以下路径:

http://localhost/website/wp-content/plugins/abc/folder-name

mkdir($dir, 0777, true);

3 个回复
最合适的回答,由SO网友:fuxia 整理而成

不要使用插件目录存储新文件。

更新期间,插件目录将被WordPress删除。还有里面的所有文件使用regular uploads directory 为此。

0777 这从来都不是个好主意。用户可能不希望每个人都有写访问权限。

SO网友:Oleg Butuzov

您可以使用plugin_dir_path 在插件中获取文件系统中的当前路径。

define( \'YOURPLUGIN_PATH\', plugin_dir_path(__FILE__) );
函数本身的代码

/**
 * Gets the filesystem directory path (with trailing slash) for the plugin __FILE__ passed in
 * @package WordPress
 * @subpackage Plugin
 * @since 2.8
 *
 * @param string $file The filename of the plugin (__FILE__)
 * @return string the filesystem path of the directory that contains the plugin
 */
    function plugin_dir_path( $file ) {
        return trailingslashit( dirname( $file ) );
    }

SO网友:Ralf912

简而言之:您需要的是路径,而不是URL

长:Donot 在插件文件夹中创建目录(参见Toscho的答案)。对路径使用常量“WP\\u CONTENT\\u DIR”,而不是plugins_url(). 这将在“wp content”中创建目录(在standrad安装上)。也许您将定义一个子目录,在其中创建目录。

define( \'STORING_DIRECTORY\', WP_CONTENT_DIR . \'/my_plugin_storing_directory/\' );
$dir = STORING_DIRECTORY . \'/folder-name/\';
也许你想使用上传目录来创建你的目录。比你应该使用的wp_upload_dir() 获取路径。

$upload_dir = wp_upload_dir();
$dir = $upload_dir[\'basedir\'] . \'/folder-name/\';

结束