如何实现WordPress上传图片文件自动重命名(附:wp_handle_upload()函数详解)

文 / @UTHEME

063686aa78cc427804bccc60066ac9d5

正常情况下,上传图片到WordPress的媒体库之后还是会保留原来的名字,蛮不美观且会有一些安全风险。那么今天教大家一下让WordPress上传媒体库文件自动重命名:

实现原理与思路

可以使用WordPress的 wp_handle_upload() 函数来处理上传的图片。这个函数接受一个包含文件信息的数组作为参数,并返回一个新的包含文件信息的数组。

你可以使用这个函数来重命名上传的文件,只需要在调用函数之前设置文件的新名称即可。例如:

$file = array(
'name' => 'my-image.jpg',
'tmp_name' => '/tmp/php/php1h4j1o',
'size' => '12345',
'type' => 'image/jpeg'
);
// 设置文件的新名称
$file['name'] = 'new-name.jpg';
// 使用wp_handle_upload()函数处理文件
$uploaded_file = wp_handle_upload($file, array('test_form' => false));

在上面的例子中,我们首先定义了一个包含文件信息的数组,然后将文件的名称设置为新的名称,最后调用 wp_handle_upload() 函数来处理文件。

需要注意的是,在调用 wp_handle_upload() 函数时,需要将第二个参数设置为 array('test_form' => false),以避免在上传时触发表单验证。

最终代码实现

知道了原理,具体在实现的时候,我们只需要在functions.php文件中加上:

function utheme_custom_upload_filter($file) {
    $info = pathinfo($file['name']);
    $ext = '.' . $info['extension'];
    $md5 = md5($file['name']);
    $file['name'] = $md5.$ext;
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'utheme_custom_upload_filter');
添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。