WordPress上传文档的默认目录是/wp-content/uploads,文档是按年月组织的。虽然我们可以去掉按年月组织的选项,或者改变存储方式,但是这个设置会全局应用,不能根据特殊情况选择特殊目录存储文档。
有时,将不同种类的文档存储在不同的类别中似乎比存储在年月目录中更有意义。例如,幻灯片应该存储在幻灯片目录中,下载的文件应该存储在下载文件夹中。我们来谈谈幻灯片放映。我更喜欢使用自定义帖子类型来完成它。一些幻灯片脚本是个性化的,与相对路径不兼容。需要使用绝对路径,然后使用base的基本参数来相对于哪个文件夹,这样幻灯片就必须存放在专门的文件夹中。年月法明显不符合要求。所以大家一定要规范的设置上传目录。
1。设置自定义帖子类型的上传目录
假设我想把幻灯片类文章上传的所有文档都存储在/wp-content/uploads/slides文件夹下,把下面的代码放在主题的functions.php
复制下面的代码:函数custom_upload_directory($uploads){
$id=$_request。
$parent=get_post($id)->;post_parent
if("post-type"==get_post_type($id)||"post-type"==get_post_type($parent)){
$subdir='slides';
$uploads['subdir']=$subdir;
$uploads['path']=$uploads['basedir']。目录_分隔符。$subdir
$uploads['URL']=$uploads['baseURL']。'/'.$subdir
}
return$uploads;
}
add_filter('upload_dir','custom_upload_directory');
将post-type更改为自己的自定义文章类型名称,并将需要创建的子目录的值赋予$subdir。
二。将文档保存到软件目录
软件中应使用以下代码,文档将存储在软件目录的uploads文件夹中。
复制代码如下:
/**
*更改自定义帖子类型的上传目录
*
*这将更改自定义帖子类型的上传目录。附件将
*上传到插件文件夹中的“上传”目录。确保
*用适当的值替换掉if语句中的“post-type”...
*/
函数custom_upload_directory($args){
$id=$_REQUEST['post_id'];
$parent=get_post($id)->;post_parent
//检查当前帖子的帖子类型
if("post-type"==get_post_type($id)||"post-type"==get_post_type($parent)){
$args['path']=plugin_dir_path(__FILE__)。”上传”;
$args['URL']=plugin_dir_URL(__FILE__)。”上传”;
$args['basedir']=plugin_dir_path(__FILE__)。”上传”;
$args['baseURL']=plugin_dir_URL(__FILE__)。”上传”;
}
return$args;
}
add_filter('upload_dir','custom_upload_directory');
如果想按年月保存,可以
复制以下代码:
$args['path']=plugin_dir_path(__file__)。“上传”。$args['subalg]。
$args['URL']=plugin_dir_URL(__FILE__)。“上传”。$args['subdir'];
三。为后台管理页面设置upload_dir
使用wp_editor在后台管理页面(例如add_menu_page创建的网页)建立新闻媒体上传功能,期望从该网页上传的所有文档都存储在wp-content/uploads/myfolder目录中。
由于ajax上传是立即启用wp-admin/async_upload.php文件,所以只能根据post_id获取帖子信息内容,后台管理页面不是帖子,不方便告知何时更改upload_dir。这时可以使用识别网页推荐人的方法,使用WP_get_referrer()函数获取推荐的网址。如果恰好和大家的选项页网址一样,你就换个目录。
复制代码如下:函数custom_upload_directory($uploads){
if(WP_get_referer()=='http://domain.com/WP-admin/admin.PHP?page=myoptionpage'){
$subdir='myfolder';
$uploads['subdir']=$subdir;
$uploads['path']=$uploads['basedir']。目录_分隔符。$subdir
$uploads['URL']=$uploads['baseURL']。/'.$subdir
}
return$uploads;
}
add_filter('upload_dir','custom_upload_directory');
四。参考信息内容
wp_upload_dir()函数中启用了filter:upload_dir。
$upload_dir=WP_upload_dir();
复制代码编码如下:
$upload_dir现在包含类似下面这样的内容(如果成功)
array(
[path]=>;c:\path\to\WordPress\WP-content\uploads\2010\05
[URL]=>;http://example.com/WP-content/uploads/2010/05
[subdir]=>;/2010/05
[basedir]=>;c:\path\to\WordPress\WP-content\uploads
[baseURL]=>;http://example.com/WP-content/uploads
[错误]=>;
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)