完美解决wordpress上传中文文件无法显示-自动以日期时间重命名

0x01.  废话

WordPress后台上传文件直接是显示上传前的文件名,对文件不做更名处理。比方说你上传的文件名是  图片.png那么上传上去的文件名就是  图片.png,文件多了如果再上传同名文件就会重复也不方便管理。如果是用中文文件名还会造成乱码,无法显示图片等乱七八糟的问题。
那么可以让上传的文件自动更改为日期时间的格式吗?

回答是肯定的,通过修改wordpress文件源代码来实现。

不继续废话了,教程送上。

0x02.  找到要修改的文件

打开WordPress程序的根目录下的/wp-admin/includes/file.php文件。大概位置在327到334行之间。或者搜索:// Move the file to the uploads dir.来定位要修改的位置。完整的代码如下:

  1. // Move the file to the uploads dir.  
  2. $new_file = $uploads[‘path’] . “/$filename”;
  3. if ( ‘wp_handle_upload’ === $action ) {
  4. $move_new_file = @ move_uploaded_file( $file[‘tmp_name’], $new_file );
  5. else {
  6. $move_new_file = @ rename( $file[‘tmp_name’], $new_file );
  7. }
  8. if ( false === $move_new_file ) {
  9. if ( 0 === strpos$uploads[‘basedir’], ABSPATH ) ) {
  10. $error_path = str_replace( ABSPATH, $uploads[‘basedir’] ) . $uploads[‘subdir’];
  11. else {
  12. $error_path = basename$uploads[‘basedir’] ) . $uploads[‘subdir’];
  13. }
  14. return $upload_error_handler$file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $error_path ) );
  15. }

0x03.   定位代码

$new_file = $uploads[‘path’] . /$filename;

0x04.   修改代码

将上面的代码修改为以下代码,代码的意思是“年月日时分秒+千位毫秒整数”的格式重命名文件。

$new_file = $uploads[‘path’] . “/”.date(YmdHis).floor(microtime()*1000).“.”.$ext/*上传重命名为时间格式*/ 

0x05.   完整代码

修改后完整的代码如下,我没有删除掉原来的代码只是注释掉方便以后看得更明白,一眼就知道修改了哪个地方。

  1. // Move the file to the uploads dir.  
  2. //$new_file = $uploads[‘path’] . “/$filename”;  
  3. $new_file = $uploads[‘path’] . “/”.date(YmdHis).floor(microtime()*1000).“.”.$ext/*上传重命名为时间格式*/  
  4. if ( ‘wp_handle_upload’ === $action ) {
  5. $move_new_file = @ move_uploaded_file( $file[‘tmp_name’], $new_file );
  6. else {
  7. $move_new_file = @ rename( $file[‘tmp_name’], $new_file );
  8. }
  9. if ( false === $move_new_file ) {
  10. if ( 0 === strpos$uploads[‘basedir’], ABSPATH ) ) {
  11. $error_path = str_replace( ABSPATH, $uploads[‘basedir’] ) . $uploads[‘subdir’];
  12. else {
  13. $error_path = basename$uploads[‘basedir’] ) . $uploads[‘subdir’];
  14. }
  15. return $upload_error_handler$file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $error_path ) );
  16. }

4 thoughts on “完美解决wordpress上传中文文件无法显示-自动以日期时间重命名

发表评论

电子邮件地址不会被公开。 必填项已用*标注