你现在的位置:首页 > PHP网站建设知识库 > WordPress > 正文

WordPress开发:自定义上传路径和生成文件的URL地址

新版本的WordPress去掉了一些用户不常使用的设置,比如后台的媒体(Media)设置页面上传路径(upload_path)和文件URL地址(upload_url_path)的这两个参数的设定就被隐藏了。如果我们还想要设置这两个选项,应该怎么办呢?

办法是有的,我们可以使用WordPress开发的方法,可以在options.php中进行设置,也可以使用UPLOADS常量,使用 upload_dir这个filter也行的。下面分别介绍下这三种方法:

1. options.php文件中设置

打开http://你的域名/wp-admin/options.php,然后找到选项,将其设置upload_path为你所需的参数。

\

2. 定义UPLOADS常量

在wp-config.php文件中定义UPLOADS这个常量:

define('UPLOADS','my-uploads');

添加上面这一行,这个方法也有不好的地方,只能指定上传的相对目录,不是绝对路径,生成文件的URL地址不能使用子域名,只能使用顶级域名,很显然在静态文件加速的时候就不可取。

3. 使用 upload_dir filter函数

这个方法的效果和第一个方法基本一样,代码如下:

add_filter( 'upload_dir', 'wpjam_custom_upload_dir' );  
function wpjam_custom_upload_dir( $uploads ) {  
    $upload_path = '';  
    $upload_url_path = '';  
  
    if ( empty( $upload_path ) || 'wp-content/uploads' == $upload_path ) {  
        $uploads['basedir']  = WP_CONTENT_DIR . '/uploads';  
    } elseif ( 0 !== strpos( $upload_path, ABSPATH ) ) {  
        $uploads['basedir'] = path_join( ABSPATH, $upload_path );  
    } else {  
        $uploads['basedir'] = $upload_path;  
    }  
  
    $uploads['path'] = $uploads['basedir'].$uploads['subdir'];  
  
    if ( $upload_url_path ) {  
        $uploads['baseurl'] = $upload_url_path;  
        $uploads['url'] = $uploads['baseurl'].$uploads['subdir'];  
    }  
    return $uploads;  
}  

将上面代码中的 $upload_path 和 $upload_url_path 改成你要的值,然后写入到当前主题的fucntions.php文件就好了。

有必要知道这三种方法的优先级:使用 upload_dir filter > 定义 UPLOADS 常量 > options.php 中设置。