上载前更改$_FILES文件名(到WordPress媒体库)
在WordPress中,当用户通过表单上传文件时,文件会被存储在服务器的临时目录中,并通过$_FILES数组传递给后端处理。如果你想在将文件保存到WordPress媒体库之前更改文件名,可以通过以下步骤实现:
- 获取上传文件的原始文件名和文件扩展名:$originalFileName = $_FILES['file']['name'];
$fileExtension = pathinfo($originalFileName, PATHINFO_EXTENSION);
- 生成新的文件名:$newFileName = 'prefix_' . uniqid() . '.' . $fileExtension;
// 这里使用了一个前缀和唯一ID来生成新的文件名,你可以根据需求自定义生成规则。
- 将文件从临时目录移动到WordPress媒体库:$tempFilePath = $_FILES['file']['tmp_name'];
$destinationFilePath = wp_upload_dir()['path'] . '/' . $newFileName;
move_uploaded_file($tempFilePath, $destinationFilePath);
这里使用了wp_upload_dir()
函数获取WordPress媒体库的路径,并将新的文件名拼接到路径中,然后使用move_uploaded_file()
函数将文件从临时目录移动到目标路径。
- 将文件信息插入WordPress媒体库:$attachment = array(
'guid' => wp_upload_dir()['url'] . '/' . $newFileName,
'post_mime_type' => $_FILES['file']['type'],
'post_title' => $newFileName,
'post_content' => '',
'post_status' => 'inherit'
);
$attachmentId = wp_insert_attachment($attachment, $destinationFilePath);
这里使用了wp_insert_attachment()
函数将文件信息插入WordPress媒体库,并返回附件的ID。
- 生成缩略图(可选):$attachmentData = wp_generate_attachment_metadata($attachmentId, $destinationFilePath);
wp_update_attachment_metadata($attachmentId, $attachmentData);
如果你需要为上传的图片生成缩略图,可以使用wp_generate_attachment_metadata()
函数生成缩略图的元数据,并使用wp_update_attachment_metadata()
函数更新附件的元数据。
这样,你就可以在上传文件到WordPress媒体库之前更改文件名了。请注意,这只是一个示例,你可以根据实际需求进行修改和扩展。