WordPress上传媒体只修改文件名而不影响媒体名

技术 · 2023-08-04

只修改文件名而不影响媒体名,步骤:

  1. 打开您的WordPress网站的主题目录中的functions.php文件(若没有可新建)。 如:<项目名称>/wp-content/themes/<主题名>/functions.php
  2. 在文件末尾添加以下代码:
// 上传文件只修改文件名而不修改媒体名
add_filter('wp_handle_upload', function ($image_data) {
    // 获取上传的文件名
    $file_name = basename($image_data['file']);
    // 获取上传文件的扩展名
    $file_extension = pathinfo($file_name, PATHINFO_EXTENSION);
    // 生成新的文件名
    $new_file_name = date('dHis') . rand(10, 99) . md5($file_name)  . '.' . $file_extension;
    // 生成新的文件路径
    $new_file_path = $image_data['file'];
    $new_file_path = str_replace($file_name, $new_file_name, $new_file_path);
    // 重命名文件
    rename($image_data['file'], $new_file_path);
    // 更新媒体库中的文件路径
    $image_data['file'] = $new_file_path;
    return $image_data;
});
  1. 保存并上传functions.php文件。

2023-08-04T05:24:37.png

这段代码声明了一个名为匿名函数,它会在图片上传后被WordPress调用。该函数会获取上传文件的信息,并生成一个新的文件名,然后使用PHP的rename()函数将文件重命名为新的文件名,并更新媒体库中的文件路径,以确保 WordPress 可以正确显示图片。

请注意,这种方法只会更改文件名,而不会更改媒体库中的媒体名。媒体库中的媒体名是从原始文件名中自动生成的,并且只能手动更改。

WordPress
Theme Jasmine by Kent Liao