есть ли способ переименовать файлы во время прогресса загрузки в Wordpress 3.0
бэкенд? Я хотел бы иметь последовательное именование файлов, специально для изображений.
Я думаю 12 (+-), значение хэш-функции цифры исходного имени файла или чего-то подобного было бы потрясающим. Какие-либо предложения?
С уважением
Но было бы проще сделать это перед загрузкой файлов.
Не совсем уверен в этом - это кажется довольно простым;
/**
* @link http://stackoverflow.com/a/3261107/247223
*/
function so_3261107_hash_filename( $filename ) {
$info = pathinfo( $filename );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$name = basename( $filename, $ext );
return md5( $name ) . $ext;
}
add_filter( 'sanitize_file_name', 'so_3261107_hash_filename', 10 );
Этот фильтр создает хэш из 32 символов исходного имени файла, сохраняя расширение файла. Вы можете немного сократить его, используя substr ()
, если хотите.
Этот фильтр запускается после того, как файл был загружен во временный каталог на вашем сервере, но до того, как его размер будет изменен (если применимо) и сохранен в вашу папку загрузок.
Обратите внимание, что нет риска перезаписи файла - в случае, если новый хешированный файл совпадает с уже существующим, WordPress будет пытаться добавить увеличивающуюся цифру к имени файла, пока не исчезнет конфликт.
<?php
/**
* Plugin Name: Hash Upload Filename
* Plugin URI: http://stackoverflow.com/questions/3259696
* Description: Rename uploaded files as the hash of their original.
* Version: 0.1
*/
/**
* Filter {@see sanitize_file_name()} and return an MD5 hash.
*
* @param string $filename
* @return string
*/
function so_3261107_hash_filename( $filename ) {
$info = pathinfo( $filename );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$name = basename( $filename, $ext );
return md5( $name ) . $ext;
}
add_filter( 'sanitize_file_name', 'so_3261107_hash_filename', 10 );
Вы не можете автоматически переименовать файл с помощью функции библиотеки мультимедиа. Я бы рекомендовал переименовать файлы перед их загрузкой. Даже после загрузки файла вы не можете переименовать его через WordPress, а только через FTP.
Единственный способ сделать это - это подключаемый модуль, который подключается к процессу загрузки медиатеки. Но было бы проще сделать это перед загрузкой файлов.